W Linuxie apt, dnf i pacman stanowią podstawę instalacji i aktualizacji oprogramowania. Gdy wyglądają na „uszkodzone”, problem nie oznacza wyłącznie tego, że nie da się instalować nowych programów. Często zatrzymują się także aktualizacje bezpieczeństwa, a utrzymanie całego systemu staje się znacznie trudniejsze. Typowe przyczyny to przerwane aktualizacje, uszkodzone mirrory, niespójne bazy pakietów, błędy podpisów, zepsute zależności albo pozostawione pliki lock. Najważniejsze jest to, aby nie zaczynać od przypadkowego usuwania cache i konfiguracji, lecz najpierw zrozumieć, która część rzeczywiście została uszkodzona.
Czasami wygląda to tak, jakby sam menedżer pakietów był zepsuty, chociaż prawdziwa przyczyna leży w sieci, DNS, konfiguracji repository albo w braku wolnego miejsca na dysku. Dlatego diagnozę należy zacząć od ustalenia, czy problem dotyczy komunikacji, repository, lokalnej bazy czy zależności.
Typowe objawy
apt update,dnf updatealbopacman -Syukończą się błędem- Pojawiają się komunikaty o nierozwiązywalnych zależnościach lub uszkodzonych pakietach
- Repository nie da się używać z powodu błędów GPG lub podpisu
- Baza danych jest zablokowana i nie można wykonywać operacji na pakietach
- Mirrory zwracają 404 albo timeout
- Po przerwanej aktualizacji operacje na pakietach przestają działać poprawnie
- Po aktualizacji niektórych bibliotek sam menedżer pakietów przestaje się uruchamiać
Co należy sprawdzić najpierw
Pierwszym krokiem jest ustalenie, czy problem rzeczywiście dotyczy menedżera pakietów, czy może sieci albo DNS.
ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route
Jeśli sama sieć albo DNS już nie działają poprawnie, błędy apt, dnf lub pacman będą jedynie ich skutkiem. Jeśli natomiast zwykła sieć działa poprawnie, a zawodzi jedynie obsługa pakietów, wtedy trzeba skupić się na repository, kluczach, plikach lock, cache, bazach danych i zależnościach.
Wspólne przyczyny problemów z apt / dnf / pacman
1. Przerwana aktualizacja
Jedną z najczęstszych przyczyn jest aktualizacja zatrzymana w połowie. Brak zasilania, zamknięty terminal, zerwane połączenie SSH albo zawieszone środowisko graficzne mogą zostawić bazę pakietów lub niektóre pakiety w stanie częściowo ukończonym.
W takiej sytuacji nie należy od razu kasować plików, tylko najpierw spróbować poprawnie dokończyć ten niedokończony stan.
2. Pozostawione pliki lock
Menedżery pakietów używają mechanizmu lock, aby uniemożliwić jednoczesne wykonywanie wielu operacji. Jeśli inny proces nadal działa albo po crashu został jedynie plik lock, system poinformuje, że menedżer pakietów jest już używany.
Nie wolno jednak usuwać plików lock bez zrozumienia sytuacji. Najpierw trzeba upewnić się, że żaden powiązany proces rzeczywiście już nie działa.
ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'
3. Uszkodzona konfiguracja repository
Repository stron trzecich, stare PPA, nieaktualne mirrory albo pozostałości konfiguracji po aktualizacji dystrybucji mogą sprawić, że źródła pakietów staną się nieprawidłowe. Typowe objawy to błędy 404, brak pliku Release albo problemy z pobieraniem metadata.
4. Problemy z kluczami GPG i podpisami
Repository są zwykle sprawdzane kryptograficznie. Jeśli klucz wygasł, nie został zaimportowany, system zarządzania kluczami się zmienił albo lokalny keyring jest uszkodzony, menedżer pakietów zatrzyma pracę ze względów bezpieczeństwa.
5. Uszkodzone zależności
Zależności często psują się wtedy, gdy wymusza się instalację niezgodnych wersji pakietów, miesza się różne repository, wykonuje częściowe aktualizacje albo ręcznie nadpisuje biblioteki systemowe. Jest to szczególnie groźne w systemach opartych na pacmanie, ale również apt i dnf szybko stają się niestabilne przy niekontrolowanym mieszaniu źródeł.
6. Uszkodzony cache lub metadata
Częściowo pobrane pakiety, przestarzałe metadata albo uszkodzone bazy synchronizacji mogą uniemożliwić poprawne odczytanie list pakietów i powodować niepowodzenia instalacji.
7. Brak miejsca na dysku
Częstą, ale często niedocenianą przyczyną jest brak wolnego miejsca. Jeśli partycje takie jak /var albo /boot są pełne, rozpakowywanie i zapis plików mogą przerwać się w połowie, pozostawiając system pakietów w niespójnym stanie.
df -h
du -sh /var/cache/* 2>/dev/null
Co sprawdzić, gdy apt nie działa
W systemach Debian / Ubuntu ważne jest, aby patrzeć nie tylko na apt, ale również na stan dpkg działającego pod spodem.
Naprawa nie w pełni skonfigurowanych pakietów
sudo dpkg --configure -a
sudo apt --fix-broken install
Po przerwanej aktualizacji te dwa polecenia są często najważniejszym pierwszym krokiem.
Ponowne wczytanie list pakietów
sudo apt update
Jeśli tutaj pojawiają się błędy 404, podpisu albo Release file, trzeba sprawdzić /etc/apt/sources.list oraz zawartość /etc/apt/sources.list.d/.
Wyczyszczenie cache
sudo apt clean
sudo apt autoclean
Jeśli problem wynika z uszkodzonego albo przestarzałego cache, to może pomóc.
Co sprawdzić, gdy dnf nie działa
W systemach Fedora / RHEL trzeba zwrócić szczególną uwagę na metadata, historię transakcji oraz konfigurację repository.
Odbudowa metadata
sudo dnf clean all
sudo dnf makecache
Jeśli informacje o mirrorach lub metadata są uszkodzone, jest to często dobry pierwszy krok.
Sprawdzenie zależności i spójności systemu
sudo dnf check
sudo dnf distro-sync
Pomaga to ustalić, czy system nadal odpowiada oczekiwanemu stanowi pakietów dystrybucji.
Podgląd historii
sudo dnf history
sudo dnf history info last
Historia często pokazuje, po której aktualizacji zaczęły się problemy.
Co sprawdzić, gdy pacman nie działa
W Arch Linuxie szczególnie ważne jest sprawdzenie baz synchronizacji, kluczy, mirrorów i ewentualnych częściowych aktualizacji.
Ponowna synchronizacja baz
sudo pacman -Syy
Jeśli lokalna baza synchronizacji nie zgadza się już z repository, jest to często pierwszy krok.
Wykonanie pełnej aktualizacji
sudo pacman -Syu
W Archu należy unikać częściowych aktualizacji. Aktualizowanie tylko części pakietów i pozostawianie reszty starych to klasyczna droga do niespójności systemu.
Sprawdzenie problemów z kluczami
sudo pacman-key --init
sudo pacman-key --populate
Jeśli problem dotyczy podpisów albo keyringu, może być potrzebna ponowna inicjalizacja.
Logi są bardzo ważne
Przy błędach menedżera pakietów zwykle nie wystarcza spojrzenie tylko na ostatnią linię. Dopiero logi i szczegółowe wyjście pokazują, czy problem dotyczy podpisów, zależności, sieci czy bazy danych.
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
Praktyczna kolejność sprawdzania
Krok 1: Sprawdź sieć i DNS
ping -c 4 8.8.8.8
ping -c 4 google.com
Krok 2: Sprawdź wolne miejsce
df -h
Krok 3: Sprawdź procesy i pliki lock
ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'
Krok 4: Przeczytaj logi
Najpierw trzeba zrozumieć, która ostatnia konkretna operacja rzeczywiście się nie powiodła.
Krok 5: Użyj właściwych poleceń naprawczych dla dystrybucji
W apt zwykle zaczyna się od dpkg --configure -a, w dnf od czyszczenia metadata, a w pacman od pełnej synchronizacji i sprawdzenia kluczy.
Czego należy unikać
- Nie usuwaj plików lock bez zrozumienia przyczyny
- Nie instaluj przypadkowych .deb / .rpm / innych pakietów z niepewnych źródeł
- Nie wykonuj wielokrotnie częściowych aktualizacji w Archu
- Nie mieszaj bez kontroli apt z dpkg, dnf z rpm ani pacmana z ręcznymi zmianami plików
- Nie wyłączaj weryfikacji podpisów bez zrozumienia błędu
Jak zapobiec ponownemu wystąpieniu problemu
- Unikaj przerw w zasilaniu i wymuszonego zamykania podczas aktualizacji
- Nie dodawaj zbyt wielu repository stron trzecich
- Twórz snapshoty lub backup przed dużymi aktualizacjami
- Przestrzegaj zalecanego sposobu aktualizacji dla danej dystrybucji
- Zwłaszcza w Archu unikaj częściowych aktualizacji
Wniosek
Nawet jeśli wygląda na to, że to właśnie apt, dnf lub pacman są uszkodzone, prawdziwa przyczyna często leży w sieci, plikach lock, podpisach, zależnościach, cache, wolnym miejscu albo konfiguracji repository. Najważniejsze jest, aby nie zaczynać od przypadkowego kasowania lub reinstalacji, lecz najpierw zrozumieć z logów, na jakim poziomie faktycznie powstał błąd. Dopiero potem należy zastosować odpowiednie podejście: naprawę dpkg dla apt, pracę z metadata i historią dla dnf oraz pełną synchronizację i kontrolę kluczy dla pacman.