#Когда возникает проблема и к каким системам относится
Пакет не устанавливается из-за занятого менеджера пакетов или базы RPM. Удаление файлов блокировки во время операции может повредить базу; сперва определите настоящего владельца блокировки. Rocky Linux с DNF и RPM; необходимо отличить действующий процесс менеджера от повреждения файловой базы RPM.
#Основные причины: как отличить одну от другой
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Работает другая транзакцияdnf-automatic, dnf или rpm ещё выполняются | ps и systemctl показывают живой процесс | Дождаться его завершения без вмешательства |
| Зависший процессКоманда долго не делает прогресса | процесс без активности, журнал ошибки | Согласовать диагностику причины и окно обслуживания |
| Повреждение базыМенеджер пишет DB_RUNRECOVERY или sqlite errors, а не просто lock | rpm -qa тоже падает | Восстанавливать по отдельной документированной процедуре из резервной копии |
#Пошаговая диагностика и устранение неисправности
- Шаг 1. Запишите точный текст сообщения DNFОткройте терминал и убедитесь, что ошибка говорит именно о параллельной операции или блокировке. Ошибки зеркал, GPG, зависимости и отсутствие репозитория требуют совершенно другой диагностики.
- Терминал Rocky Linux; нужны административные праваLinux · Терминал (Bash)КомандаНужен sudoТерминал Rocky Linux; нужны административные права. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
sudo dnf check-update
- Шаг 2. Посмотрите живые процессы менеджера пакетовps отобразит PID и время выполнения; не завершайте неизвестный rpm/dnf автоматически. На рабочем сервере дождитесь штатного завершения установки обновлений.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
ps -eo pid,ppid,stat,etime,args | grep -E "[d]nf|[r]pm|[p]ackagekit"
- Шаг 3. Узнайте, нет ли фонового обновленияDNF может обслуживаться службой или таймером; на рабочих станциях пакеты использует PackageKit. Запущенный dnf-automatic объясняет занятую базу. Не выключайте фоновую установку только ради одного запуска.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
systemctl list-timers --all | grep -Ei "dnf|package" || truesystemctl status dnf-automatic.timer --no-pager 2>/dev/null || true
- Шаг 4. Проверьте историю и последние сообщенияИстория DNF помогает отличить выполнявшуюся транзакцию от ошибки после прерывания питания. Не запускайте новый dnf update параллельно живому процессу.
- Терминал Rocky Linux; нужны административные праваLinux · Терминал (Bash)КомандаНужен sudoТерминал Rocky Linux; нужны административные права. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
sudo dnf history list | head -35sudo journalctl -b --no-pager | grep -Ei "dnf|rpm|packagekit" | tail -55
- Шаг 5. Убедитесь, что блокировка действительно освобожденаПосле завершения чужого процесса повторите безопасный запрос списка установленных RPM. Если rpm возвращает ошибки базы, не удаляйте вручную /var/lib/rpm или /usr/lib/sysimage/rpm: расположение базы зависит от выпуска.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
rpm -qa | head -25rpm --eval "%{_dbpath}"
- Шаг 6. Не удаляйте lock-файл без выяснения состоянияНаличие lock-файла на диске само по себе не показывает, что процесс держит блокировку. Если dnf/rpm всё ещё работают, сохраните PID и системный журнал. Перезагрузку в разгар транзакции тоже не считайте безопасной мерой.
- Терминал Rocky Linux; административные права не обязательныLinux · Терминал (Bash)КомандаТерминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
ps -eo pid,stat,etime,args | grep -E "[d]nf|[r]pm"
- Шаг 7. Повторите исходную операцию только после освобождения базыКогда все транзакции завершились без ошибок, повторите безопасную диагностику; далее запускайте установку пакета лишь при подтверждённом имени и свободной базе. При сообщении о повреждении остановитесь и подготовьте резервную копию RPM DB для администратора.
- Терминал Rocky Linux; нужны административные праваLinux · Терминал (Bash)КомандаНужен sudoТерминал Rocky Linux; нужны административные права. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
sudo dnf makecache --refreshrpm -qa | head -10
#Как убедиться, что неисправность устранена
После штатного завершения чужого процесса проверка DNF и rpm -qa выполняется без сообщения о блокировке, устанавливаемый пакет успешно проверяется через rpm -q.
#Если предложенный способ не сработал
Если dnf сообщает именно об ошибке целостности rpmdb, требуется отдельное восстановление с копией базы по процедуре своей версии. Не стирайте блокировки и не делайте rpm --rebuilddb наугад.