«Неверный или поврежденный пакет (подпись PGP)»
> Apt и DNF, чрезвычайно мощны и интуитивно понятны, но это не значит, что что-то может пойти не так. Иногда установка пакета идет не так, как надо, и вам приходится собирать все по кусочкам. Менеджеры пакетов имеют возможность исправлять поврежденные пакеты и пропускать поврежденные обновления, чтобы ваша система снова работала и избегала проблем в будущем.В этой статье рассказывается, как исправить поврежденные пакеты в Linux. Эти исправления помогут вам в большинстве случаев выйти из тупика.
Исправление сломанных пакетов в Ubuntu/Mint/Debian
В Apt есть несколько флагов для исправления отсутствующих зависимостей или пакетов, которые по той или иной причине сломались во время установки. Обычно здесь используется установка стороннего.deb и обнаружение его зависимостей, о которых вы не знали. Эти зависимости, вероятно, не будут добавлены сами по себе, и dpkg
будет жаловаться, что не может
Contents
Исправление сломанных пакетов в Ubuntu/Mint/Debian
выполнить следующие действия:Примечание : узнать, как работает Apt , прежде чем пытаться выполнить какое-либо из приведенных ниже исправлений.
- Запустите обновление, чтобы убедиться в отсутствии новых версий необходимых пакетов:
sudo apt --fix-missing update
- Заставьте Apt искать и исправлять любые отсутствующие зависимости или поврежденные пакеты при повторной попытке установить пакет-нарушитель. При этом будут установлены все недостающие зависимости и восстановлены существующие установки:
sudo apt install -f
Исправление проблем с конфигурацией DPKG
Еще одно место, где может возникнуть ошибка при установке пакета, — это процесс настройки. За кулисами эту часть заботит dpkg
, поэтому, если пакет выходит из строя во время настройки, dpkg является инструментом для его исправления.
- Начните с попытки заставить dpkg переконфигурировать все сломанные или частично настроенные пакеты:
sudo dpkg --configure -a
- Если это не решит проблему, примените более решительный подход. Начните с перечисления всех пакетов, которые dpkg пометил как требующие переустановки:
sudo dpkg -l | grep ^..r
Приведенная выше команда покажет вам пакеты, вызывающие проблемы. На следующем этапе проверьте и убедитесь, что пакеты, отмеченные для переустановки, действительно повреждены. Выполните sudo apt reinstall
и обратите внимание, какие пакеты не удается переустановить.
<ол старт="3">
sudo dpkg --remove --force-remove-reinstreq [package name]
- Теперь Dpkg должен быть чистым. Выполните очистку с помощью Apt:
Исправление проблем с конфигурацией DPKG
pan>&& sudo apt updateЕсли повезет, вы вернетесь к тому, с чего начали. Вы не получите поврежденные пакеты, которые вы пытались установить, но, по крайней мере, Apt снова будет работоспособен, и вы сможете вернуться к его использованию, чтобы попытаться установить пакет, который вы изначально пытались установить, и его зависимости.р>
Постоянная блокировка DPKG
Есть менее распространенная проблема с блокировками dpkg, которые не позволяют вам что-либо делать. Каждый раз, когда вы пытаетесь использовать Apt или dpkg, вы получаете сообщение об ошибке, сообщающее, что другое приложение уже использует его… хотя это не так.
Удалить файл блокировки, который не позволяет вам использовать Apt и вернуться к тому, что вам нужно, легко удалить. Иногда эти файлы блокировки остаются на месте после ошибки установки или отключения электроэнергии, что срывает процесс и предотвращает автоматическое удаление файла. В этом случае вам придется сделать это самостоятельно.
sudo rm /var/lib/apt/lists/lock
На всякий случай удалите блокировку в кеше.
sudo rm /var/cache/apt/archives/lock
Внимание. Прежде чем снимать эту блокировку, убедитесь, что она не используется. В Ubuntu есть программа обновления, которая запускается вместе с системой и блокирует DPKG/APT при поиске обновлений. Если вы не уверены, запущено ли средство обновления, нажмите клавишу Win, чтобы открыть Центр активности, и введите «Software Updater», а затем нажмите Enter, чтобы открыть его.
Если программа обновления сообщает, что она не может быть запущена, и у вас нет открытых терминалов, а менеджеры пакетов работают в фоновом режиме, продолжайте выполнять приведенные выше инструкции.
Если вместо проблемы с поврежденными пакетами у вас столкнулись с проблемой, когда Центр программного обеспечения не работает, у нас есть исправления .
Исправление сломанных пакетов в Fedora/CentOS/RHEL
Исправление сломанных пакетов в Fedora/CentOS/RHEL — менее распространенное дело. dnf
отлично справляется со своей работой, проверяя правильность установки пакетов. Тем не менее, он все еще не идеален, и иногда в управлении пакетами что-то путается.
Примечание : изучите различия между Fedora, CentOS и RHEL .
1. Список проблемных паПостоянная блокировка DPKG
и в системах на базе RHEL, таких как Fedora:
sudo rpm -Va
sudo rpm -Va
Опция -V
предназначена для проверки, что означает, что она будет просматривать и сравнивать информацию об установленных файлах с информацией, хранящейся в базе данных rpm
. Присоединение -a
просто проверяет все основные пакеты. Это немного бесполезно, так как обычно выдает длинный список файлов, но может подсказать, с чего начать, если у вас возникли проблемы с конкретным приложением.
Например, если вы увидите в своем терминале что-то, помеченное как «отсутствует», это будет означать, что в этом конкретном пакете отсутствуют файлы.
2. Попытайтесь переустановить
Запустите dnf reinstall
для всех пакетов, которые вы видите в этом списке и которые могут вызывать у вас проблемы.
sudo dnf --refresh reinstall [package name]
При этом все метаданные будут признаны устаревшими, поэтому программа будет сканировать все включенные вами репозитории и искать новую версию этого пакета. Если вы обнаружите, что в этом пакете есть неработающие зависимости, DNF, вероятно, пожалуется и предложит вам использовать флаг --skip-broken
. При этом этот пакет будет полностью пропущен и вы сможете обновить систему в обычном режиме.
3. Последнее средство – удалить пакеты
Если вы достигли точки, когда вам нужно использовать --skip-broken
для завершения обновлений, для вашей системы более гигиенично полностью удалить его.
Запомнив название пакета, который вам не удалось правильно переустановить, удалите его:
sudo dnf remove [package name]
Худшее, что здесь может случиться, — это то, что вы в конечном итоге удалите основную часть своей повседневной жизни, например браузер, и вам придется искать альтернативу.
Совет : узнайте, как набрать используйте Flatpak в Fedora, чтобы лучше управлять своими пакетами .
Исправление сломанных пакетов в Arch
Хотя менеджер пакетов Arch имеет некоторое сходство с другими, перечисленными здесь (т. е. он имеет файл блокировки базы данных и аналогичным образом извлекает зависимости), это совершенно другой зверь, когда дело касается структуры его логики.. Первый шаг в диагностике проблемы — убедиться, что репозитории обновлены, и попытаться выполнить полное обновление:
sudo pacman -Syu
Если ваши попытки установить пакет или выполнить обновление системы по-прежнему заканчиваются неудачей, нам необходимо изолировать причину в соответствии с тем, что сообщил вам терминал:
Примечание : узнай, как работает pacman , прежде чем пытаться это исправить.
«Неверный или поврежденный пакет»
Внесение изменений в «pacman.conf» любым способом может вызвать про
Исправление сломанных пакетов в Fedora/CentOS/RHEL
т пакеты как поврежденные. Наиболее вероятным виновником здесь является частичный файл («.part») в кеше менеджера пакетов, и ваше решение — удалить его:sudo find /var/cache/pacman/pkg/ -iname "*.part" -delete
Всегда существует вероятность того, что пакет, который вы пытаетесь установить, действительно поврежден и не предоставляет действительные метаданные диспетчеру пакетов Arch. В этом случае вам придется подождать, пока сопровождающий пакета обновит его. Если пакет установлен в вашей системе и вызывает проблемы во время обновления, удалите его с помощью:
sudo pacman -Rns [package name]
«Невозможно заблокировать базу данных»
Как и apt в Debian, менеджер пакетов Arch создает файл блокировки во время операций. Если у вас произошло отключение электроэнергии или pacman
произошло серьезное прерывание и вы не смогли снять блокировку, весьма вероятно, что после себя останется файл блокировки.
Во-первых, выясните, использует ли этот файл какой-либо процесс на вашем компьютере:
sudo fuser /var/lib/pacman/db.lck
На изображении выше процесс с идентификатором 121497 использует блокировку файла. Если вам интересен процесс и вы хотите получить дополнительную информацию, используйте ps
:
ps -p [PID#]
В моем случае файл блокировки принадлежит другому экземпляру pacman. Самый безопасный способ снять блокировку — сначала завершить этот процесс:
2. Попытайтесь переустановить
> [PID#]Теперь, когда процесс завершен, удалите файл блокировки:
sudo rm /var/lib/pacman/db.lck
Теперь можно идти!
«Конфликтующие файлы/файл существует в файловой системе»
Это происходит во время обновлений, когда pacman
обнаруживает конфликт прав собственности. Прежде чем что-либо исправлять, обратите внимание на путь к файлу, на который жалуется менеджер пакетов.
Чтобы узнать, кому принадлежит файл:
pacman -Qo [path to the file]
Если он принадлежит пользователю, а не другому пакету, просто удалите его:
sudo rm [path to the file]
Если он принадлежит другому пакету, безопаснее всего подождать, пока сопровождающий пакета самостоятельно устранит
3. Последнее средство – удалить пакеты
вам хочется сделать что-то сейчас.Самый простой способ добиться этого — использовать флаг --overwrite
в pacman
. Просто знайте, что это в целом небезопаснои может привести к неправильной работе некоторых приложений в вашей системе. Я предлагаю создание резервной копии перед запуском.
Флаг --overwrite
позволяет менеджеру пакетов Arch игнорировать правила владения для определенного файла и просто выполнять обновление. Пример:
sudo pacman -Syu --overwrite [file name]
Если приведенная выше команда не работает, замените имя файла его абсолютным путем. Некоторые пользователи сообщают, что удаление косой черты («/») перед путем позволяет команде работать, когда она упряма.
В качестве альтернативы вы также можете просто указать pacman
перезаписать все, что ему нужно:
sudo pacman -Syu --overwrite='*'
«Исправление сломанных пакетов в Arch
»
В некоторых пакетах, которые плохо обслуживаются, у разработчика может не быть времени или желания должным образом обновлять цифровую подпись, удостоверяющую их пакет. В конечном итоге при попытке установки на вашем терминале появится сообщение, например: «подпись от [кого-то] имеет предельное доверие», после чего менеджер пакетов спросит, хотите ли вы удалить файл.
Поскольку обновления сигнатур полностью зависят от сопровождающего, вы ничего не можете реально сделать, чтобы исправить ситуацию со своего терминала. Если вы выполняете обновление и хотите сохранить пакет, используйте флаг --ignore
конкретно для этого пакета:
sudo pacman -Syu --ignore [package name]
Если вы получаете это для многих пакетов, возможно, ваш брелок устарел. Обновите его:
sudo pacman -S archlinux-keyring
Часто задаваемые вопросы
Могу ли я применить исправления Arch с помощью помощника AUR?
В целом да. Замените «pacman» на свой «Неверный или поврежденный пакет»уководства. Пример: yay -Qo /path/to/file
Что делать, если я прервал обновление?
Прерывание процесса обновления нажатием Ctrl+ C, завершение процесса менеджера пакетов или преждевременное закрытие терминала приведет к некоторому повреждению базы данных пакетов. это может усложнить ситуацию, когда вы попытаетесь установить что-то еще. Чтобы это исправить, очистите кеш и повторите обновление.
Изображение предоставлено: Фликр . Все скриншоты Мигеля Лейва-Гомеса.