- Ошибка у вас зафиксированы сломанные пакеты
- Как исправить у вас зафиксированы сломанные пакеты?
- 1. Обновите списки пакетов
- 2. Установите битые пакеты
- 3. Очистите лишние пакеты
- 4. Используйте dpkg
- 5. Разрешите зависимости
- Выводы
- Оцените статью:
- Об авторе
- 8 комментариев
- Как мне отменить или откатить команду «apt-get upgrade» в Ubuntu?
- DPkg :: Pre-Install-Pkgs и ZFS на снимках Linux
- Сценарий
- Но работает ли это?
- Команда apt в Linux
- Обновление индекса пакета ( apt update )
- Обновление пакетов ( apt upgrade )
- Полное обновление ( apt full-upgrade )
- Установка пакетов ( apt install )
- Удаление пакетов ( apt remove )
- Удалить неиспользуемые пакеты ( apt autoremove )
- Листинг пакетов ( apt list )
- Поиск пакетов ( apt search )
- Информация о пакете ( apt show )
- Выводы
Ошибка у вас зафиксированы сломанные пакеты
Во время установки программ с помощью пакетного менеджера apt в любом из дистрибутивов, использующих этот пакетный менеджер, вы можете столкнуться с ошибкой, что у вас зафиксированы сломанные пакеты. Это пакеты, которые не установились полностью потому что им не хватает зависимостей или процесс установки был по какой-либо причине прерван.
В этой статье мы рассмотрим что делать с такой ошибкой, как её исправить, а также я дам ссылки на другие материалы на сайте, которые помогут справится с проблемой.
Как исправить у вас зафиксированы сломанные пакеты?
1. Обновите списки пакетов
Возможно вам не удалось установить нужные пакеты потому что списки репозиториев устарели, и там ещё не было нужных пакетов. Для обновления списка пакетов выполните:
sudo apt update —fix-missing
2. Установите битые пакеты
После обновления списка пакетов из репозиториев может помочь установка битых пакетов. Этот шаг поможет особенно если вы устанавливали пакет с помощью dpkg и теперь нужно доустановить его зависимости с помощью пакетного менеджера. Для этого есть специальная команда:
sudo apt install -f
3. Очистите лишние пакеты
Установке могут мешать лишние пакеты, которые больше не нужны в системе. Для их удаления выполните:
sudo apt autoremove
Утилита отобразит список всех битых пакетов, которые не установлены, вы можете попытаться их удалить с помощью команды:
sudo dpkg —remove -force —force-remove-reinstreq имя_пакета
4. Используйте dpkg
Вместо apt вы можете использовать команду dpkg чтобы посмотреть какие пакеты вызывают проблему. Просто выполните:
sudo dpkg —configure -a
Команда покажет проблемные пакеты, а потом вы сможете их удалить той же командой:
sudo dpkg —remove -force —force-remove-reinstreq имя_пакета
5. Разрешите зависимости
Битые пакеты чаще всего появляются из-за того, что пакетный менеджер не может найти для них нужные зависимости. Если вам всё же очень нужно установить такой пакет, просто разрешите эти зависимости. Для этого можно скачать и установить их вручную или если вы уверенны, что зависимости в пакете указаны неверно, можно скачать его распаковать и удалить мешающие зависимости. Подробнее об этом читайте в этой статье.
Выводы
В этой небольшой статье мы рассмотрели что делать если в вашей системе появились битые пакеты и как их исправить. Здесь решение проблемы очень сильно зависит от вашей ситуации, но здесь приведены основные варианты решения, которые должны помочь вернуть пакетный менеджер к работе. Иногда рекомендуют удалить пакет вручную из базы данных dpkg /var/lib/dpkg/status, однако лучше этого не делать и найти путь решить проблему по другому, ручное редактирование подобных файлов может создать ещё больше проблем.
Нет похожих записей
Оцените статью:
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
8 комментариев
Вот почему я использую Fedora с DNF, за 5 лет использования даже не припомню случаев некорректной работы DNF. APT в Дебиан подобных дистрибутивах это сплошное разочарование.
Если бы все так было просто с зависимостями, что их через форсе принудительно установить, то это был бы не Линукс. Ниче, что система после таких манипуляций не работает? После ваших советов, новичек «уложит» систему точно.
Согласен. С Fedora бубен уже покрылся пылью. Чего все с этой Ubunto’й носятся.
dzentoo? это у меня на матунту бубен плесенью покрылся.
А ты говоришь не о убунту, а Gnome3. Мне его нескончаемые проблемы неведомы, Gnome2 — до сих пор рулит
Ничего не помогло. Постоянно пишет, что сломаны пакеты. к примеру хочу установить: apt-get install mariadb-server. Делаю как вы пишите.
Следующие пакеты имеют неудовлетворённые зависимости:
mariadb-server : Зависит: mariadb-server-10.1 (>= 1:10.1.29-6) но он не будет установлен
E: Невозможно исправить ошибки: у вас зафиксированы сломанные пакеты.
root@user-All-Series:
# sudo apt update —fix-missing
Сущ:1 http://lt.archive.ubuntu.com/ubuntu bionic InRelease
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Все пакеты имеют последние версии.
root@user-All-Series:
# sudo apt install -f
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
root@user-All-Series:
# sudo apt clean
root@user-All-Series:
# sudo apt autoremove
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
root@user-All-Series:
Источник
Как мне отменить или откатить команду «apt-get upgrade» в Ubuntu?
Есть ли способ в Ubuntu откатить или отменить последнее обновление после выполнения, apt-get upgrade если вам не нравятся результаты?
aptitude дает вам доступ ко всем версиям пакета, если они доступны в соответствии с управлением пакетами Debian .
Я наткнулся на Blogstatic Blog Хартмана: Как отменить обновление в Ubuntu Lucid
Первым шагом к отмене оскорбительного обновления было выяснить, какие именно обновления были. После поиска на некоторых форумах я нашел способ просмотреть историю обновлений: Открыть менеджер пакетов synaptic («sudo synaptic» в терминале). В строке меню выберите Файл -> История, и вы увидите все ваши обновления, отсортированные по дате.
К сожалению, сегодня я установил около 20 обновлений, и я не знал, какое из них вызвало проблему. Просматривая каждый из пакетов, перечисленных в списке «Журнал», я смог понизить несколько пакетов за раз до тех пор, пока проблема не была решена, и я не обнаружил ошибочное обновление. Сделать это:
Используйте панель поиска, чтобы найти пакет, который вы хотите понизить. Когда вы найдете то, что ищете, нажмите на пакет, чтобы выбрать его. В строке меню выберите Package -> Force Version и выберите предыдущую версию пакета из выпадающего меню. Нажмите кнопку «Применить», чтобы применить понижение рейтинга.
Я должен был сделать это сегодня в моей системе Debian. Во-первых, я определил временной диапазон, когда произошло ошибочное обновление, и извлек записи журнала, в которых указаны старые и новые номера версий обновленных пакетов:
Затем я попытался найти все еще кэшированные файлы пакетов на диске (к счастью, я не запустил autoclean):
Похоже, у меня по какой-то причине нет более старого пакета ethtool. Тем не менее, давайте продолжим принудительную установку старых пакетов:
Как говорится в сообщении об ошибке, один из моих пакетов зависел от пакета -common непосредственно перед обновлением, но обновление удалило его (и apt-get больше не может его найти). К счастью, его файл пакета все еще находится в / var / cache / apt, поэтому я могу просто добавить его в список и попробовать еще раз:
Успех! На самом деле это не решило мою проблему. Но это успешно понизило пакеты, QED.
Мне также пришлось отменить обновление пакета на нескольких серверах Debian. Я успешно вернул пакеты до последней версии с помощью aptitute, тогда как следующая команда awk была очень полезна.
( В приведенной ниже команде замените строку даты датой дня, с которого вы хотите отменить обновления )
проверьте выходные данные, чтобы убедиться, что это те пакеты и версии, которые нужно отменить. Затем используйте aptitute для понижения перечисленных пакетов:
Я надеюсь, что это также поможет сэкономить время другим.
Я считаю , что нет, кроме принимая полную резервную копию соответствующих файловых систем (те , которые содержат / , /bin , /lib , /sbin , /usr , /var , /etc и /boot (что все может быть в файловой системе) и загрузочная запись) , так что вы можете катить машину назад после этого.
Я запускаю свои Linux-серверы в виртуализированной среде и запускаю shapshot непосредственно перед обновлением apt-get или любыми крупными обновлениями / обновлениями сторонних производителей.
Тогда, если что-то пойдет не так, я просто вернусь и жизнь продолжится, пока я не смогу узнать больше информации.
Это очень помогло, когда я обновил свою версию Ubuntu до 12.04, и после обновления MySQL почему-то не работал. Я откатился назад, нашел ответ позже, перезапустил обновление, исправил MySQL, и жизнь была хорошей.
Вы можете попробовать checkinstall
После вас ./configure; При создании вашей программы CheckInstall запустит make install (или как вы скажете, чтобы она запускалась) и отслеживала каждый файл, измененный этой установкой, используя отличные установочные часы .
Поэтому, возможно, вы могли бы сказать ему, чтобы он запускал aptitude safe-upgrade, и он отслеживал бы все изменения, сделанные обновлением.
Есть проект под названием Nexenta, который объединяет ядро OpenSolaris с пользовательским пространством Ubuntu. Он предоставляет инструмент для интеграции ZFS Solaris и apt Debian, чтобы обеспечить кнопку отмены обновлений. Смотрите здесь: http://www.nexenta.org/os/TransactionalZFSUpgrades
В общем, вам нужна файловая система управления версиями. Btrfs для Linux находится в разработке.
Использование Apt-Undo — возможный вариант, но он может работать, только если вы используете его для установки и удаления пакетов. Это не поможет, если вы уже удалили программное обеспечение в обычном режиме.
Я успешно делал это несколько раз, но я не буду рекомендовать это. Вот что я сделал (если я правильно помню):
1) Удалите все неофициальные программы, которые не включены в стандартные репозитории Ubuntu (это может и не потребоваться, но я предлагаю это, поскольку они могут вам помешать).
2) Измените ваш /etc/apt/sources.list (и sources.list.d / *) на предыдущую версию (прокомментируйте все неофициальные репозитории).
3) apt-get update / aptitude update
4) Используя aptitude, обновите основные пакеты (например, X11, библиотеки и т. Д.). Он начнет запускать много сломанных пакетов . так что вам нужно будет решить каждый случай (вам нужно знать, как это сделать в aptitude). Чтобы понизить его, перейдите на панель описания и установите версию (нажав +) внизу.
5) Повторяйте # 4, пока все программное обеспечение не будет принадлежать вашей целевой версии (проверьте столбец версии в aptitude).
Вот причина, почему я не рекомендую этот метод:
- Это занимает много времени (это болезненно)
- Некоторые приложения могут не работать должным образом (поскольку они могут иметь самую последнюю конфигурацию). В этом случае вам нужно будет «очистить» и переустановить.
- Существуют системные обновления, которые не будут работать после понижения
- Это очень рискованно, так как вы можете получить непригодную систему
Я настоятельно рекомендую выполнить чистую установку и постепенно перенести вашу конфигурацию. Это также требует времени, но в конце у вас есть стабильная версия.
Причина, по которой я это сделал, была в основном в качестве экспериментов и в результате отчаяния.
DPkg :: Pre-Install-Pkgs и ZFS на снимках Linux
Если вы установили свою операционную систему в файловую систему ZFS (например, ZFS в Linux ), вы можете настроить apt-get ее запуск zfs snapshot до того, как она установит или обновит что-либо, что мгновенно создаст резервную копию вашей файловой системы. Он может работать с механизмами резервного копирования, отличными от снимков ZFS, но я оставлю это тестирование другим.
Сценарий
Создайте файл как
где rpool/ROOT/debian должно быть заменено именем файловой системы ZFS, к которой подключена ваша операционная система. Вы дали ему это имя при первой установке ОС, и его можно найти в атрибуте NAME с помощью команды
Но работает ли это?
Вам лучше сделать снимок, прежде чем следовать советам по настройке случайного интернет-пользователя:
Вот оно В error: fn_borked ближайшее время вы можете вернуть свою систему в ее блаженное текущее состояние с
Теперь попробуйте установить две крошечные игры, которые, вероятно, доступны в вашем репо:
Этот снимок содержит вашу файловую систему, которая была до установки двух игр.
Веселые времена для бабушки, но ты ненавидишь судоку.
После того, как было сделано несколько снимков, вы можете вернуться к любому более раннему снимку, добавив -r флаг. В нашем случае, например, попробуйте
Однако имейте в виду, что это не только вернет вашу файловую систему в состояние, в котором она находилась на момент ее создания rpool/ROOT/debian@2018-08-01-230001_test , но и безвозвратно удалит все последующие снимки. Если вы подписались на этот пост, снимок rpool/ROOT/debian@apt-get_2018-08-02-033614 исчезнет.
Я тестировал apt-get upgrade на Debian GNU / Linux с
Оно работает. Один снимок был создан для install команды, другой для upgrade команды.
Предостережение : сегодня я впервые проверил это и очень мало знаю о внутренней работе apt. Если это что-то сломает для вас или повлечет за собой риски, которые мой заброшенный разум не учел, пожалуйста, прокомментируйте это ниже.
Источник
Команда apt в Linux
apt — это утилита командной строки для установки, обновления, удаления и иного управления пакетами deb в Ubuntu, Debian и связанных дистрибутивах Linux. Он сочетает в себе наиболее часто используемые команды из инструментов apt-get и apt-cache с различными значениями по умолчанию некоторых параметров.
apt разработан для интерактивного использования. Предпочитайте использовать apt-get и apt-cache в своих сценариях оболочки, поскольку они обратно совместимы между различными версиями и имеют больше параметров и функций.
Большинство команд apt необходимо запускать от имени пользователя с привилегиями sudo .
Это руководство служит кратким справочником по командам apt .
Обновление индекса пакета ( apt update )
Индекс пакетов APT — это в основном база данных, в которой хранятся записи о доступных пакетах из репозиториев, включенных в вашей системе.
Чтобы обновить индекс пакета, выполните команду ниже. Это приведет к получению последних изменений из репозиториев APT:
Всегда обновляйте индекс пакета перед обновлением или установкой новых пакетов.
Обновление пакетов ( apt upgrade )
Регулярное обновление вашей системы Linux — один из наиболее важных аспектов общей безопасности системы.
Чтобы обновить установленные пакеты до последних версий, выполните:
Команда не обновляет пакеты, требующие удаления установленных пакетов.
Если вы хотите обновить один пакет, передайте имя пакета:
Полное обновление ( apt full-upgrade )
Разница между upgrade и full-upgrade заключается в том, что при последующем удаляются установленные пакеты, если это необходимо для обновления всей системы.
Будьте особенно осторожны при использовании этой команды.
Установка пакетов ( apt install )
Установить пакеты так же просто, как запустить следующую команду:
Если вы хотите установить несколько пакетов с помощью одной команды, укажите их в виде списка, разделенного пробелами:
Для установки локальных файлов deb укажите полный путь к файлу. В противном случае команда попытается получить и установить пакет из репозиториев APT.
Удаление пакетов ( apt remove )
Вы также можете указать несколько пакетов, разделенных пробелами:
Команда remove удалит указанные пакеты, но при этом могут остаться некоторые файлы конфигурации. Если вы хотите удалить пакет, включая все файлы конфигурации, используйте purge вместо remove :
Удалить неиспользуемые пакеты ( apt autoremove )
Каждый раз, когда в системе устанавливается новый пакет, который зависит от других пакетов, также будут установлены зависимости пакетов. Когда пакет будет удален, зависимости останутся в системе. Эти оставшиеся пакеты больше не используются ничем и могут быть удалены.
Чтобы удалить ненужные зависимости, используйте следующую команду:
Листинг пакетов ( apt list )
Команда list позволяет вывести список доступных, установленных и обновляемых пакетов.
Чтобы вывести список всех доступных пакетов, используйте следующую команду:
Команда напечатает список всех пакетов, включая информацию о версиях и архитектуре пакета. Чтобы узнать, установлен ли конкретный пакет, вы можете отфильтровать вывод с помощью команды grep .
Чтобы вывести список только установленных пакетов, введите:
Перед фактическим обновлением пакетов может быть полезно получить список обновляемых пакетов:
Поиск пакетов ( apt search )
Эта команда позволяет вам искать данный пакет в списке доступных пакетов:
В случае обнаружения команда вернет пакеты, имя которых соответствует поисковому запросу.
Информация о пакете ( apt show )
Информация о зависимостях пакетов, размере установки, источнике пакета и т. Д. Может быть полезна перед удалением или установкой нового пакета.
Чтобы получить информацию о данном пакете, используйте команду show :
Выводы
Умение управлять пакетами — важная часть системного администрирования Linux.
apt — это менеджер пакетов для дистрибутивов на основе Debian. Чтобы узнать больше о команде apt откройте терминал и введите man apt .
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Источник