Linux: apt / dnf / pacman jsou rozbité — příčiny a řešení

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 update nebo pacman -Syu skončí 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.

Leave a Reply

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *