V Linuxu jsou apt, dnf a pacman základem instalace a aktualizace softwaru. Když vypadají jako „rozbité“, problém neznamená jen to, že nelze nainstalovat nové programy. Často se zastaví i bezpečnostní aktualizace a správa celého systému se výrazně zkomplikuje. Běžné příčiny jsou přerušené aktualizace, nefunkční mirrory, nekonzistentní databáze balíčků, chyby podpisů, rozbité závislosti nebo zbylé lock soubory. Nejdůležitější je nezačít hned mazat cache a konfiguraci naslepo, ale nejdřív pochopit, která část je skutečně poškozená.
Někdy to vypadá, jako by byl poškozen samotný správce balíčků, přitom skutečná příčina je v síti, DNS, nastavení repository nebo nedostatku místa na disku. Proto by měla diagnostika začít rozlišením, zda jde o problém komunikace, repository, lokální databáze nebo závislostí.
Běžné příznaky
apt update,dnf updatenebopacman -Syuskončí chybou- Objevují se zprávy o neřešitelných závislostech nebo poškozených balíčcích
- Repository nelze používat kvůli GPG nebo signature chybám
- Databáze je zamčená a operace s balíčky nefungují
- Mirrory vracejí 404 nebo timeout
- Po přerušené aktualizaci přestanou balíčkové operace fungovat správně
- Po aktualizaci některých knihoven se samotný správce balíčků nespustí
Co zkontrolovat jako první
Prvním krokem je zjistit, zda je problém opravdu ve správci balíčků, nebo spíš v síti a DNS.
ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route
Pokud už samotná síť nebo DNS nefungují správně, selhání apt, dnf nebo pacman bude jen důsledkem. Pokud ale běžná síť funguje a selhávají jen operace s balíčky, je potřeba zaměřit se na repository, klíče, lock soubory, cache, databáze a závislosti.
Společné příčiny problémů u apt / dnf / pacman
1. Přerušená aktualizace
Jednou z nejčastějších příčin je aktualizace, která byla zastavena uprostřed. Výpadek proudu, zavřený terminál, přerušené SSH nebo zamrzlé grafické prostředí mohou zanechat databázi balíčků nebo některé balíčky v nedokončeném stavu.
V takové situaci není dobré hned mazat soubory, ale spíše se pokusit nedokončený stav korektně dokončit.
2. Zbylé lock soubory
Správci balíčků používají lock mechanismus, aby zabránili současnému běhu více operací. Pokud ještě běží jiný proces, nebo po pádu zůstal jen lock soubor, systém oznámí, že je správce balíčků už používán.
Lock soubory by se ale neměly mazat naslepo. Nejdřív je potřeba potvrdit, že skutečně neběží žádný související proces.
ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'
3. Poškozené nastavení repository
Repository třetích stran, staré PPA, neplatné mirrory nebo zbytky konfigurace po upgradu distribuce mohou způsobit, že samotné zdroje balíčků přestanou být platné. Typickými příznaky jsou 404, chybějící Release file nebo chyby při načítání metadata.
4. Problémy s GPG klíči a podpisy
Repository bývají běžně kryptograficky ověřována. Pokud klíč expiroval, nebyl importován, změnil se systém správy klíčů nebo je poškozený lokální keyring, správce balíčků se z bezpečnostních důvodů zastaví.
5. Rozbité závislosti
Závislosti se často poškodí, když jsou vynuceně instalovány nekompatibilní verze balíčků, míchají se různé repository, provádějí se částečné aktualizace nebo se ručně přepisují systémové knihovny. To je zvlášť nebezpečné u systémů s pacmanem, ale i apt a dnf se stávají nestabilními, pokud se zdroje míchají bez kontroly.
6. Poškozená cache nebo metadata
Neúplně stažené balíčky, zastaralá metadata nebo poškozené synchronizační databáze mohou zabránit správnému čtení seznamů balíčků a způsobit selhání instalací.
7. Nedostatek místa na disku
Častou, ale podceňovanou příčinou je nedostatek volného místa. Pokud jsou oddíly jako /var nebo /boot zaplněné, rozbalování a zápis souborů mohou selhat uprostřed operace a zanechat balíčkový systém v nekonzistentním stavu.
df -h
du -sh /var/cache/* 2>/dev/null
Co zkontrolovat, když nefunguje apt
V Debianu / Ubuntu je důležité sledovat nejen apt, ale i stav dpkg, který pracuje pod ním.
Oprava nedokončeně nakonfigurovaných balíčků
sudo dpkg --configure -a
sudo apt --fix-broken install
Po přerušené aktualizaci bývají právě tyto dva příkazy nejdůležitějším prvním krokem.
Opětovné načtení seznamů balíčků
sudo apt update
Pokud se zde objeví 404, signature nebo Release file chyby, je potřeba zkontrolovat /etc/apt/sources.list a obsah /etc/apt/sources.list.d/.
Vyčištění cache
sudo apt clean
sudo apt autoclean
Pokud je problém v poškozené nebo zastaralé cache, může to pomoci.
Co zkontrolovat, když nefunguje dnf
Ve Fedora / RHEL systémech je potřeba věnovat pozornost hlavně metadata, historii transakcí a nastavení repository.
Znovuvytvoření metadata
sudo dnf clean all
sudo dnf makecache
Pokud jsou poškozené informace o mirroru nebo metadata, bývá to vhodný první krok.
Kontrola závislostí a konzistence systému
sudo dnf check
sudo dnf distro-sync
To pomůže ověřit, zda systém stále odpovídá očekávanému stavu distribuce.
Zobrazení historie
sudo dnf history
sudo dnf history info last
Historie často ukáže, po které aktualizaci začaly problémy.
Co zkontrolovat, když nefunguje pacman
V Arch Linuxu je zvlášť důležité sledovat synchronizační databáze, klíče, mirrory a případné částečné aktualizace.
Opětovná synchronizace databází
sudo pacman -Syy
Pokud lokální synchronizační databáze neodpovídá repository, bývá to první krok.
Plná aktualizace
sudo pacman -Syu
V Archu je potřeba vyhýbat se částečným aktualizacím. Aktualizovat jen některé balíčky a jiné nechat staré je klasická cesta k nekonzistentnímu stavu.
Kontrola problémů s klíči
sudo pacman-key --init
sudo pacman-key --populate
Pokud je problém v podpisech nebo keyringu, může být nutná opětovná inicializace.
Logy jsou velmi důležité
U chyb správce balíčků nestačí číst jen poslední řádek. Jen logy a detailní výstup ukážou, jestli je problém v podpisech, závislostech, síti nebo databázi.
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
Praktické pořadí kontroly
Krok 1: Zkontrolujte síť a DNS
ping -c 4 8.8.8.8
ping -c 4 google.com
Krok 2: Zkontrolujte volné místo
df -h
Krok 3: Zkontrolujte procesy a lock soubory
ps aux | grep -E 'apt|dpkg|dnf|yum|pacman'
Krok 4: Přečtěte logy
Nejprve je potřeba pochopit, která poslední konkrétní operace skutečně selhala.
Krok 5: Použijte správné obnovovací příkazy podle distribuce
U apt se obvykle začíná dpkg --configure -a, u dnf čištěním metadata a u pacman plnou synchronizací a kontrolou klíčů.
Čemu je lepší se vyhnout
- Nemažte lock soubory bez pochopení příčiny
- Neinstalujte náhodné .deb / .rpm / jiné balíčky z nedůvěryhodných zdrojů
- Neprovádějte opakované částečné aktualizace v Archu
- Nemíchejte bez rozmyslu apt s dpkg, dnf s rpm nebo pacman s ručními zásahy do souborů
- Nevypínejte kontrolu podpisů bez porozumění chybě
Jak zabránit opakování problému
- Vyhněte se výpadkům proudu a nucenému ukončení během aktualizací
- Nepřidávejte příliš mnoho repository třetích stran
- Před velkými aktualizacemi vytvořte snapshot nebo backup
- Dodržujte doporučený způsob aktualizace pro danou distribuci
- Zejména v Archu se vyhýbejte částečným aktualizacím
Závěr
I když to vypadá, že jsou rozbité právě apt, dnf nebo pacman, skutečná příčina bývá často v síti, lock souborech, podpisech, závislostech, cache, volném místě nebo nastavení repository. Nejdůležitější je nezačít hned mazat nebo přeinstalovávat, ale nejdřív z logů pochopit, v jaké vrstvě problém opravdu vznikl. Teprve potom je vhodné použít správný přístup: opravu dpkg u apt, práci s metadata a historií u dnf a plnou synchronizaci plus kontrolu klíčů u pacman.