Рейтинг:2

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

флаг in

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

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

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

$ sudo apt --fix-broken install
Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
Исправление зависимостей... Готово
Следующие пакеты были установлены автоматически и больше не требуются:
   (здесь 20 строк)
Будут установлены следующие дополнительные пакеты:
... (здесь 5 строк)
 Предлагаемые пакеты:
 ... более
Рекомендуемые пакеты:
 ... более
Следующие пакеты будут УДАЛЕНЫ:
 ... более
Будут установлены следующие НОВЫЕ пакеты:
 ... еще (10 строк)
28 обновлено, 6 установлено заново, 1 удалено и 327 не обновлено.
228 не полностью установлен или удален.
Нужно получить 0 Б/13,3 МБ архивов.
После этой операции будет использовано 2–771 КБ дополнительного дискового пространства.
Вы хотите продолжить? [Да/нет] 

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

Извлечение шаблонов из пакетов: 100%
(Чтение базы данных... На данный момент установлено 977800 файлов и каталогов.)
Удаление ubuntu-advantage-tools (27.0.2~18.04.1)...
Traceback (последний последний вызов):
  Файл "<string>", строка 2, в <module>
  Файл "/usr/lib/python3/dist-packages/uaclient/apt.py", строка 9, в <module>
    из uaclient импортировать gpg
  Файл "/usr/lib/python3/dist-packages/uaclient/gpg.py", строка 3, в <module>
    импортный шутил
ModuleNotFoundError: нет модуля с именем «shutil»
dpkg: ошибка обработки пакета ubuntu-advantage-tools (--remove):
 установленный подпроцесс сценария предварительного удаления пакета ubuntu-advantage-tools вернул статус выхода ошибки 1
При обработке возникли ошибки:
 ubuntu-преимущество-инструменты
E: Подпроцесс /usr/bin/dpkg возвратил код ошибки (1)

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

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

Но делать apt --fix-сломанная установка снова оказывается в той же точке.

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

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

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

$ sudo apt-get установить libpython3.6-stdlib

Я получил:

libpython3.6-stdlib : зависит: libpython3.6-minimal (= 3.6.9-1~18.04ubuntu1.4), но необходимо установить 3.6.13-1+xenial2

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

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

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

  • $ питон --версия => Питон 3.6.13
  • $ lsb_release -a не доступен
  • $ uname -a говорит мне, что это ядро ​​​​4.15 (которое похоже на 18.04)
N0rbert avatar
флаг zw
Такие команды, как `sudo apt-get dist-upgrade; sudo aptitude safe-upgrade` должен помочь.
флаг in
@N0rbert N0rbert Спасибо, я пробовал dist-upgrade, но не смог из-за сломанных зависимостей. Про второй не знал, спасибо.
Рейтинг:3
флаг in

ВНЕШНИЙ ВИД: Ключевой момент был здесь:

dpkg: ошибка обработки пакета ubuntu-advantage-tools (--remove):
 установленный подпроцесс сценария предварительного удаления пакета ubuntu-advantage-tools вернул статус выхода ошибки 1

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

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

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

и я смог завершить sudo apt --fix-сломанная установка команда.

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

$ sudo apt-get установить xserver-xorg-input-all

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

флаг in
Наконец все исправил. С помощью `dpkg -l | grep python*`, я удалил все старые пакеты python, идентифицированные как 16.04 (или даже некоторые 14.04!), используя `dpkg --remove `.
Рейтинг:1
флаг es

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

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

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

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

флаг in
Действительно, очень больная система! На самом деле эта машина до этого даже работала с 14.04, так что да, довольно старая. Но я не отпущу, я все еще пробую что-то ;-) И спасибо за этот контрольный список, есть хорошие идеи.

Ответить или комментировать

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