
После 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(некоторые части могут быть немного устаревшими; неважно)