Неработающие обновления и беспорядок в пакетах: как удалить старые пакеты вручную?

Неработающие обновления и беспорядок в пакетах: как удалить старые пакеты вручную?

После do-release-upgradeперехода с 16.04 на 18.04 что-то пошло не так, и машина осталась в "промежуточном" состоянии, с множеством проблем с неисправными зависимостями. Мое дерево пакетов в беспорядке, я в отчаянии... ;-)

Я перепробовал много вещей (включая dpkg --configure -aслучайное удаление пакетов с помощью dpkg --force depends -P <pkg-name>и другие вещи), но на данный момент я застрял.

Итак, когда я пытаюсь:

$ sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
   (here 20 lines)
The following additional packages will be installed:
... (here 5 lines)
 Suggested packages:
 ... more
Recommended packages:
 ... more
The following packages will be REMOVED:
 ... more
The following NEW packages will be installed:
 ... more (10 lines)
28 upgraded, 6 newly installed, 1 to remove and 327 not upgraded.
228 not fully installed or removed.
Need to get 0 B/13,3 MB of archives.
After this operation, 2 771 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

До сих пор я ничего не боялся. Но теперь, входя Y:

Extracting templates from packages: 100%
(Reading database ... 977800 files and directories currently installed.)
Removing ubuntu-advantage-tools (27.0.2~18.04.1) ...
Traceback (most recent call last):
  File "<string>", line 2, in <module>
  File "/usr/lib/python3/dist-packages/uaclient/apt.py", line 9, in <module>
    from uaclient import gpg
  File "/usr/lib/python3/dist-packages/uaclient/gpg.py", line 3, in <module>
    import shutil
ModuleNotFoundError: No module named 'shutil'
dpkg: error processing package ubuntu-advantage-tools (--remove):
 installed ubuntu-advantage-tools package pre-removal script subprocess returned error exit status 1
Errors were encountered while processing:
 ubuntu-advantage-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

Итак, это похоже на ошибку Python, насколько я понимаю, он не может найти shutil. Поэтому я вручную скачал то, что, как я думал, было проблемой: https://packages.ubuntu.com/bionic/python-backports-shutil-get-terminal-size и устанавливается вручную с помощью:

sudo dpkg -i python-backports-shutil-get-terminal-size_1.0.0-5_all.deb

Но apt --fix-broken installповторение действия приводит к тому же результату.

У меня ограниченные познания в Python, поэтому я не уверен, что это реальная проблема, но любая помощь приветствуется. Иначе следующим шагом, вероятно, будет переустановка с нуля, но я бы предпочел избежать этого.

В настоящее время я могу вручную устанавливать пакеты (скачать сhttps://packages.ubuntu.com/тогда dpkg -i) но это все, все остальное не работает.

Например, если я попытаюсь установить libpython3.6-stdlib:

$ sudo apt-get install libpython3.6-stdlib

Я получил:

libpython3.6-stdlib : Depends: libpython3.6-minimal (= 3.6.9-1~18.04ubuntu1.4) but 3.6.13-1+xenial2 is to be installed

что означает, что явсе ещеесть пакеты от 16.04 (Xenial).

Как я могу вручнуюудалятьвсе пакеты 16.04?

Дополнительная информация (теперь машина загружается только с консоли):

  • $ python --version=> Питон 3.6.13
  • $ lsb_release -aне доступен
  • $ uname -aговорит мне, что это ядро ​​4.15 (которое, похоже, соответствует 18.04)

решение1

FWIW: Ключевой момент был на самом деле здесь:

dpkg: error processing package ubuntu-advantage-tools (--remove):
 installed ubuntu-advantage-tools package pre-removal script subprocess returned error exit status 1

Весь процесс потерпел неудачу из-за сбоя «предварительного удаления» скрипта пакета ubuntu-advantage-tools(понятия не имею, что это такое!).

Так я и сделал:

$ sudo mv /var/lib/dpkg/info/ubuntu-advantage-tools.prerm /var/lib/dpkg/info/ubuntu-advantage-tools.prerm_OLD

и мне удалось выполнить sudo apt --fix-broken installкоманду.

Перезагрузка, затем еще одна проблема (клавиатура не распознается), которая была решена с помощьюДругой вопрос, после загрузки в режиме восстановления:

$ sudo apt-get install xserver-xorg-input-all

Наконец-то смог загрузиться графически, но... все еще есть некоторые проблемы с менеджером пакетов, все еще ссылающимся на xenial (16.04). Я задам еще один вопрос.

решение2

Похоже, это очень больная система; возможно, вам захочется вывести ее из этого состояния, т. е. переустановить. Если у вас еще нет отдельной /homeфайловой системы, скопируйте свой домашний каталог и все, что вы в него вложили, и начните все сначала, чтобы снова получить чистую систему.

Я бы также скопировал /etcкакой-нибудь нетривиальный файл конфигурации на всякий случай, если его стоит спасти (но я бы воздержался от копирования его в новую систему, если только это не является абсолютно необходимым).

Подумайте об этом так: эта система служила вам верой и правдой долгие годы (некоторое время сразу после 2016 года, так как сейчас 16.04); пусть она покоится с миром. ;-) Теперь пришло время для чего-то нового и чистого.

Однажды я составил для себя контрольный список того, что я делаю с только что установленной Ubuntu, чтобы привести ее в наиболее удобный для использования вид; возможно, вы почерпнете из него вдохновение:https://github.com/shundhammer/huha-linux-tips/blob/master/doc/ubuntu-tips.md(некоторые части могут быть немного устаревшими; неважно)

Связанный контент