Ubuntu 16.04 : обновление с 32 до 64 бит
В Ubuntu 14.04 всё было немного проще ( https://muwlgr.dreamwidth.org/42768.html )
В списках пакетов Ubuntu 16.04 прописаны конфликты между 32- и 64-битными версиями одного и того же пакета, так что через apt оно массово обновляться отказывается. Приходится загружать пакеты через apt download и ставить их через dpkg -i
Начальные заклинания аналогичны :
после загрузки с 64-битным ядром :
В цикле мы повторяем установку пакетов и удаляем файлы пакетов, которые установились успешно и получили в списке dpkg состояние ii
Цикл приходится повторить несколько раз, т.к. не все пакеты устанавливаются успешно с первого раза
После этого можно перезапустить систему со всем 64-битным софтом и снести все 32-битные пакеты:
Сохранённым списком пакетов в pkg1 можете пользоваться по своему усмотрению
В списках пакетов Ubuntu 16.04 прописаны конфликты между 32- и 64-битными версиями одного и того же пакета, так что через apt оно массово обновляться отказывается. Приходится загружать пакеты через apt download и ставить их через dpkg -i
Начальные заклинания аналогичны :
sudo -s dpkg --get-selections > pkg1 dpkg --add-architecture amd64 apt update apt install linux-image-generic:amd64 thermald # иначе оно захочет установить 64-битный thermald и не сможет его перезапустить reboot
после загрузки с 64-битным ядром :
sudo -s unset LANG apt install apt:amd64 apt-utils:amd64 # Yes, do as I say! mkdir /tmp/upgrade cd /tmp/upgrade pkgs() { dpkg -l | awk '$4=="'$1'"{print $2}' | awk -F: '{print $1}' | sort -u } apt download $(comm -23 <(pkgs i386) <(pkgs amd64)) while ls *amd64*deb do dpkg -i *amd64*deb dpkg -l | awk '$1=="ii" && $4=="amd64" {print $2}' | awk -F: '{print $1}' | while read a do [ -f ${a}_*amd64*deb ] && rm ${a}_*amd64*deb done done reboot
В цикле мы повторяем установку пакетов и удаляем файлы пакетов, которые установились успешно и получили в списке dpkg состояние ii
Цикл приходится повторить несколько раз, т.к. не все пакеты устанавливаются успешно с первого раза
После этого можно перезапустить систему со всем 64-битным софтом и снести все 32-битные пакеты:
dpkg --purge $(dpkg -l | awk '$4=="i386"{print $2}')
Сохранённым списком пакетов в pkg1 можете пользоваться по своему усмотрению