MyTetra Share
Делитесь знаниями!
Что делать если сменился пакет в APT репозитарии и сам репозитарий стал некорректным
Время создания: 30.06.2022 11:25
Текстовые метки: linux, debian,deb, apt, aptitude, репозитарий, пакет, удалить, изменился, некорректный, ошибка
Раздел: Компьютер - Linux - Инсталляция программ - Пакетный менеджер APT: apt-get и прочее
Запись: xintrea/mytetra_syncro/master/base/1656577516r7sktot8kw/text.html на raw.github.com

При работе с APT-репозитариями возможно появление ошибки, при которой невозможно удалить некорректно установленный пакет. Некорректная установка может наложиться на то, что в тот же момент майнтейнеры пытаются исправить репозитарий, подменяя в нем пакеты. Возможны и другие ситуации: было запущено обновление пакетной базы, но в середине работы это действие было вручную прервано, затем в источниках был прописан (включен) другой репозитарий и снова запущено обновление. Локальный список пакетов станет кривой, а попытка удаления проблемного пакета будет приводить лишь к таким сообщениям:



> apt-get remove --force-yes idk2

Чтение списков пакетов… Готово

Построение дерева зависимостей

Чтение информации о состоянии… Готово

Пакет «idk2» не установлен, поэтому не может быть удалён

Возможно, для исправления этих ошибок вы захотите воспольз

оваться «apt-get -f install».

Пакеты, имеющие неудовлетворённые зависимости:

ski-full : Зависит: idk2 но он не будет установлен

E: Неудовлетворённые зависимости. Попытайтесь выполнить «ap

t --fix-broken install», не указывая имени пакета, (или найдите другое

решение).



> apt --fix-broken install

Чтение списков пакетов… Готово

Построение дерева зависимостей

Чтение информации о состоянии… Готово

Исправление зависимостей… Готово

Будут установлены следующие дополнительные пакеты:

idk2

НОВЫЕ пакеты, которые будут установлены:

idk2

обновлено 0, установлено 1 новых пакетов, для удаления отмеч

ено 0 пакетов, и 0 пакетов не обновлено.

не установлено до конца или удалено 1 пакетов.

Необходимо скачать 1 038 Б архивов.

После данной операции, объём занятого дискового пространства возрастёт на 0 B.

Хотите продолжить? [Д/н] Д

Пол:1 http://192.168.1.1/our_rep/lin16 idk2 2022.07.08-1 [1 038 B]

Ошк:1 http://192.168.1.1/our_rep/lin16 idk2 2022.07.08-1

Writing more data than expected (37437 > 1038)

Hashes of expected file:

- SHA256:459fc67e1e048698a8923ea4b74ced06ccdd10b213b26c453326da3e316c6979

- SHA1:7fe7ce1ecc5ea8282b6bf6c68e819009eb294a31 [weak]

- MD5Sum:a2bc49fdf2859f66f9b962e197cba61f [weak]

- Filesize:1038 [weak]

E: Не удалось получить http://192.168.208.251/iks_rep/se16/deb/idk2_2022.07.08-1_all.deb W

riting more data than expected (37437 > 1038)

Hashes of expected file:

- SHA256:459fc67e1e048698a8923ea4b74ced06ccdd10b213b26c453326da3e316c6979

- SHA1:7fe7ce1ecc5ea8282b6bf6c68e819009eb294a31 [weak]

- MD5Sum:a2bc49fdf2859f66f9b962e197cba61f [weak]

- Filesize:1038 [weak]

E: Невозможно получить некоторые архивы, вероятно надо запу

стить apt-get update или попытаться повторить запуск с ключом --fix-

missing



Но ни обновление, ни ключи --fix-broken и --fix-missing не дают возможности удалить некорректный пакет. Что делать?



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


Дело в том, что стандартные утилиты семейства apt* по работе с пакетной базой *.deb на самом деле достаточно кривые и, по факту, недоработанные. Все давно к этом привыкли и считают такое положение вещей нормой (инфа сотка на 2023 год). Так вот, решить вышеописанные проблемы apt* не в состоянии. Как ни крути опциями, какие не используй последовательности команд, как не прочищай кеш, как не подменяй зависимые пакеты, толку никакого не будет.


Возможно, сами разработчики apt* и близкие к ним люди что-то могут сделать, разрисовав граф сломанных зависимостей, сделав точечные команды, которые смогут отработать, и которые в сложной ситуации можно выполнить, проигнорировав ошибки. Но таких виртуозов надо еще поискать, и обычно они своими знаниями не делятся, ведь это их конкурентное преимущество в злобном мире IT. А если и делятся, то так, чтобы никто ничего не понял. Так что проще считать, что утилиты apt* не подходят для решения проблем в пакетной базе.



Так есть ли у apt* альтернатива? Да. Можно воспользоваться консольным режимом программы aptitude:



> aptitude remove idk2



Данная команда проверит зависимости и предложит решение, как удалить указанный пакет. Если не согласиться с решением (нажать n), aptitude предложит еще один вариант и так далее, пока все варианты не закончатся. Таким образом, нажимая n, можно не внося в пакетную базу изменения посмотреть возможные решения. Затем можно снова дать ту же команду и нажать Y когда появится то решение, которое пользователь считает наиболее правильным.


Для того, чтобы иметь возможность управлять пакетной базой в критических ситуациях, надо взять себе за правило, что всегда при установке DEB-подобной операционной системы нужно всегда устанавливать aptitude. Ведь если этого не сделать, то когда возникнут проблемы с пакетной базой, может оказаться что кроме apt никаких других инструментов нет, а даже если aptitude и есть в репозитарии, то установить его будет невозможно. Соломку надо подстилать заранее.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования