Как мне обновить Ubuntu 16.04 до 18. *, когда пакеты возвращаются обратно?

Я не могу обновить Ubuntu, потому что некоторые пакеты хранятся обратно:

au464956@dnaseq1:~$ sudo apt upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  gcc-5-base gcc-6-base libdatetime-locale-perl libdatetime-timezone-perl
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.

Я безуспешно пробовал некоторые другие решения этой проблемы, включая запуск sudo apt-get dist-upgrade (это все еще удерживает пакеты обратно ), sudo apt install gcc-5-base или других скрытых пакетов, что приводит к длинному сообщению, угрожающему удалить apt, libapt-pkg5.0 и libstdc++6, что, очевидно, будет слишком разрушительным и работает sudo apt-get --with-new-pkgs upgrade.

Запуск sudo apt-cache policy для сохраненных задних пакетов приводит к:

gcc-5-base:
  Installed: 5.4.0-6ubuntu1~16.04.11
  Candidate: 5.5.0-12ubuntu8
  Version table:
     5.5.0-12ubuntu8 500
        500 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 Packages
 *** 5.4.0-6ubuntu1~16.04.11 500
        500 http://dk.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     5.4.0-6ubuntu1~16.04.10 500
        500 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages
     5.3.1-14ubuntu2 500
        500 http://dk.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
gcc-6-base:
  Installed: 6.0.1-0ubuntu1
  Candidate: 6.4.0-22ubuntu1
  Version table:
     6.4.0-22ubuntu1 500
        500 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 Packages
 *** 6.0.1-0ubuntu1 500
        500 http://dk.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
        100 /var/lib/dpkg/status
libdatetime-locale-perl:
  Installed: 1:1.02-1
  Candidate: 1:1.22-1
  Version table:
     1:1.22-1 500
        500 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 Packages
        500 http://us.archive.ubuntu.com/ubuntu cosmic/universe i386 Packages
 *** 1:1.02-1 500
        500 http://dk.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
        500 http://dk.archive.ubuntu.com/ubuntu xenial/universe i386 Packages
        100 /var/lib/dpkg/status
libdatetime-timezone-perl:
  Installed: 1:1.95-1+2016a
  Candidate: 1:2.19-1+2018e
  Version table:
     1:2.19-1+2018e 500
        500 http://us.archive.ubuntu.com/ubuntu cosmic/universe amd64 Packages
        500 http://us.archive.ubuntu.com/ubuntu cosmic/universe i386 Packages
 *** 1:1.95-1+2016a 500
        500 http://dk.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
        500 http://dk.archive.ubuntu.com/ubuntu xenial/universe i386 Packages
        100 /var/lib/dpkg/status

ОБНОВЛЕНИЕ: Вывод sudo apt dist-upgrade

Reading package lists... Done
Building dependency tree        
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  gcc-5-base gcc-6-base libdatetime-locale-perl libdatetime-timezone-perl
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.

Вывод попытки запустить обновление sudo do-release-upgrade:

Checking for a new Ubuntu release
Please install all available updates for your release before upgrading.
0
задан 27 June 2019 в 07:47

2 ответа

Резервное копирование сначала . Скачайте Ubuntu Release, который хотите. Ubuntu Bionic - это новейшая версия LTS (с долгосрочной поддержкой), а Ubuntu Disco - это новейшая версия STS (краткосрочная поддержка). Создайте загрузочный DVD или USB-накопитель. Запустите Live-сессию и проверьте, все ли работает.

Я хотел бы отстаивать новую установку. В вашем руководстве описан релиз-обновление с xenial до bionic. Это поддерживается.

sudo apt install --reinstall gcc-5-base=5.5.0-12ubuntu8 gcc-6-base=6.4.0-22ubuntu1 libdatetime-locale-perl=1:1.22-1 libdatetime-timezone-perl=1:2.19-1+2018e

Таким образом, мы сообщаем apt, какая версия пакета нам нужна. Нет ошибок? sudo dpkg --configure -a && sudo apt -f install

Управление с помощью dpkg -l | egrep -v '^ii|rc', если все пакеты в хорошем состоянии. Нет выходных данных.

Теперь удаляйте во время обновления удаленные пакеты. Без какой-либо настройки вручную файлы конфигурации остаются в вашей Системе. sudo apt purge $(dpkg -l | egrep '^rc' | awk '{print $2}')

Посмотрите в /etc/apt/sources.list, что все записи указывают на космические. Я никогда не использую do-release-upgrade, я предпочитаю другой способ.

sudo apt install apt-show-versions

Это помогает идентифицировать пакеты, которые больше не доступны, потому что имя изменилось, например.

apt-show-versions | fgrep 'No available'

Если вы хотите избавиться от них всех. sudo apt purge $(apt-show-vesions | fgrep 'No available' | awk '{print $1}')

Примечание : это может работать, но не с гарантией.

0
ответ дан 27 June 2019 в 07:47

Непосредственная проблема сдерживания gcc-5-base и gcc-6-base была решена путем добавления этого хранилища, вдохновленного этим вопросом :

sudo add-apt-repository ppa:ubuntu-toolchain-r/
sudo apt update
sudo apt upgrade

I тогда удалил другие скрытые пакеты (пакеты perl), так как они не будут удалять ненужные пакеты с мыслью, что я смогу переустановить их после обновления релиза.

Обновление релиза не удалось по другим причинам, над которыми я все еще работаю, но непосредственная проблема с сохранением пакетов, о которой идет речь, была решена.

0
ответ дан 27 June 2019 в 07:47

Другие вопросы по тегам:

Похожие вопросы: