|
|||||||
Что делать если сменился пакет в 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 и есть в репозитарии, то установить его будет невозможно. Соломку надо подстилать заранее. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|