Linux: apt / dnf / pacman зламані — причини та способи виправлення

>

У Linux такі менеджери пакунків, як apt, dnf і pacman, є основою встановлення та оновлення програм. Коли вони виглядають “зламаними”, це означає не лише те, що більше не можна встановлювати нові програми. Часто також зупиняються оновлення безпеки, а обслуговування всієї системи стає значно складнішим. Типові причини — перервані оновлення, несправні mirror-сервери, неузгоджені бази пакунків, помилки підпису, зламані залежності або lock-файли, що залишилися після збою. Найважливіше — не починати відразу безладно видаляти cache і конфігурації, а спочатку зрозуміти, яка саме частина реально пошкоджена.

Іноді здається, що зламався сам менеджер пакунків, хоча справжня причина криється в мережі, DNS, налаштуваннях repository або нестачі місця на диску. Тому діагностику слід починати з того, щоб відокремити проблему зв’язку, repository, локальної бази або залежностей.

Типові симптоми

  • apt update, dnf update або pacman -Syu завершуються з помилкою
  • З’являються повідомлення про нерозв’язні залежності або пошкоджені пакунки
  • Repository неможливо використовувати через GPG- або signature-помилки
  • База даних заблокована, і жодні пакетні операції не працюють
  • Mirror-сервери повертають 404 або timeout
  • Після перерваного оновлення пакетні операції перестають нормально працювати
  • Після оновлення деяких бібліотек сам менеджер пакунків більше не запускається

Що слід перевірити насамперед

Перший крок — з’ясувати, чи проблема справді в менеджері пакунків, чи насправді вона пов’язана з мережею або DNS.

ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route

Якщо сама мережа або DNS уже працюють неправильно, збої apt, dnf або pacman можуть бути лише наслідком цього. Якщо ж звичайна мережа працює, а помилки виникають лише під час пакетних операцій, тоді увагу треба звернути на repository, ключі, lock-файли, cache, бази даних і залежності.

Спільні причини проблем з apt / dnf / pacman

1. Перерване оновлення

Однією з найпоширеніших причин є оновлення, яке зупинилося посеред процесу. Відключення електроенергії, закритий термінал, розірване SSH-з’єднання або зависле графічне середовище можуть залишити базу пакунків або окремі пакунки у напівзавершеному стані.

У такій ситуації не варто відразу видаляти файли, а краще спробувати коректно завершити незавершений стан.

2. Lock-файли, що залишилися

Менеджери пакунків використовують механізм lock, щоб не допустити одночасного виконання кількох операцій. Якщо інший процес ще працює, або після crash залишився лише lock-файл, система повідомить, що менеджер пакунків уже використовується.

Але lock-файли не можна видаляти навмання. Спочатку треба переконатися, що жоден пов’язаний процес більше не працює.

ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'

3. Пошкоджена конфігурація repository

Сторонні repository, старі PPA, застарілі mirror-сервери або залишки конфігурації після оновлення дистрибутива можуть зробити джерела пакунків недійсними. Типові ознаки — помилки 404, відсутній Release file або помилки отримання metadata.

4. Проблеми з GPG-ключами та підписами

Repository зазвичай проходять криптографічну перевірку. Якщо ключ прострочений, не імпортований, змінився спосіб керування ключами або пошкоджено локальний keyring, менеджер пакунків зупиниться з міркувань безпеки.

5. Пошкоджені залежності

Залежності часто ламаються, коли примусово встановлюються несумісні версії пакунків, змішуються різні repository, виконуються часткові оновлення або вручну перезаписуються системні бібліотеки. Це особливо критично для систем на основі pacman, але й apt і dnf швидко стають нестабільними при безконтрольному змішуванні джерел.

6. Пошкоджений cache або metadata

Неповністю завантажені пакунки, застарілі metadata або пошкоджені бази синхронізації можуть завадити правильному читанню списків пакунків і призвести до невдалого встановлення.

7. Нестача місця на диску

Поширена, але часто недооцінена причина — нестача вільного місця. Якщо розділи на кшталт /var або /boot заповнені, розпакування і запис файлів можуть зірватися посеред процесу та залишити систему пакунків у неузгодженому стані.

df -h
du -sh /var/cache/* 2>/dev/null

Що перевірити, якщо apt не працює

У Debian / Ubuntu важливо дивитися не лише на apt, але й на стан dpkg, який працює нижче.

Виправлення не до кінця налаштованих пакунків

sudo dpkg --configure -a
sudo apt --fix-broken install

Після перерваного оновлення ці дві команди часто є найважливішим першим кроком.

Повторне завантаження списків пакунків

sudo apt update

Якщо тут виникають 404, signature або Release file-помилки, треба перевірити /etc/apt/sources.list і вміст /etc/apt/sources.list.d/.

Очищення cache

sudo apt clean
sudo apt autoclean

Якщо проблема пов’язана з пошкодженим або застарілим cache, це може допомогти.

Що перевірити, якщо dnf не працює

У системах Fedora / RHEL потрібно звернути особливу увагу на metadata, історію транзакцій та конфігурацію repository.

Перебудова metadata

sudo dnf clean all
sudo dnf makecache

Якщо пошкоджені відомості про mirror-сервери або metadata, це часто корисний перший крок.

Перевірка залежностей і узгодженості системи

sudo dnf check
sudo dnf distro-sync

Це допомагає з’ясувати, чи система все ще відповідає очікуваному стану пакунків дистрибутива.

Перегляд історії

sudo dnf history
sudo dnf history info last

Історія часто показує, після якого оновлення почалися проблеми.

Що перевірити, якщо pacman не працює

В Arch Linux особливо важливо перевірити бази синхронізації, ключі, mirror-сервери та наявність часткових оновлень.

Повторна синхронізація баз даних

sudo pacman -Syy

Якщо локальна база синхронізації більше не відповідає repository, це зазвичай перший крок.

Виконання повного оновлення

sudo pacman -Syu

У Arch слід уникати часткових оновлень. Оновлення лише частини пакунків із залишенням інших старими — класичний шлях до неузгодженого стану системи.

Перевірка проблем із ключами

sudo pacman-key --init
sudo pacman-key --populate

Якщо проблема в підписах або keyring, може знадобитися повторна ініціалізація.

Логи дуже важливі

При помилках менеджера пакунків зазвичай недостатньо дивитися лише на останній рядок. Лише логи та детальний вивід показують, чи проблема в підписах, залежностях, мережі чи базі даних.

apt / dpkg

sudo tail -n 100 /var/log/apt/history.log
sudo tail -n 100 /var/log/dpkg.log

dnf

sudo dnf history
sudo journalctl -xe --no-pager | tail -n 100

pacman

sudo tail -n 100 /var/log/pacman.log

Практичний порядок перевірки

Крок 1: Перевірте мережу і DNS

ping -c 4 8.8.8.8
ping -c 4 google.com

Крок 2: Перевірте вільне місце

df -h

Крок 3: Перевірте процеси і lock-файли

ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'

Крок 4: Прочитайте логи

Спочатку потрібно зрозуміти, яка саме остання конкретна дія насправді завершилася помилкою.

Крок 5: Використовуйте правильні команди відновлення для дистрибутива

Для apt часто починають із dpkg --configure -a, для dnf — з очищення metadata, а для pacman — з повної синхронізації та перевірки ключів.

Чого не варто робити

  • Не видаляйте lock-файли, не розуміючи причину
  • Не встановлюйте випадкові .deb / .rpm / інші пакунки з ненадійних джерел
  • Не робіть повторюваних часткових оновлень у Arch
  • Не змішуйте безконтрольно apt з dpkg, dnf з rpm або pacman із ручними змінами файлів
  • Не вимикайте перевірку підписів, не розуміючи помилку

Як запобігти повторенню проблеми

  • Уникайте перебоїв з електрикою та примусового вимкнення під час оновлень
  • Не додавайте занадто багато сторонніх repository
  • Створюйте snapshot або backup перед великими оновленнями
  • Дотримуйтесь рекомендованого способу оновлення для вашого дистрибутива
  • Особливо в Arch уникайте часткових оновлень

Висновок

Навіть якщо здається, що зламані саме apt, dnf або pacman, справжня причина часто криється в мережі, lock-файлах, підписах, залежностях, cache, вільному місці або налаштуваннях repository. Найважливіше — не починати одразу щось видаляти чи перевстановлювати навмання, а спершу за допомогою логів зрозуміти, на якому рівні виникла помилка. Лише після цього слід застосовувати правильний підхід: відновлення dpkg для apt, робота з metadata та історією для dnf, а також повна синхронізація і перевірка ключів для pacman.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *