Linux: apt / dnf / pacman är trasiga – orsaker och lösningar

I Linux är apt, dnf och pacman grunden för installation och uppdatering av programvara. När de verkar vara “trasiga” betyder det inte bara att nya program inte längre kan installeras. Ofta stannar även säkerhetsuppdateringar, och underhållet av hela systemet blir mycket svårare. Vanliga orsaker är avbrutna uppdateringar, trasiga mirrors, inkonsekventa paketdatabaser, signaturfel, brutna beroenden eller kvarlämnade lock-filer. Det viktigaste är inte att genast börja radera cache och konfiguration på måfå, utan att först förstå vilken del som faktiskt är skadad.

Ibland ser det ut som om själva pakethanteraren är trasig, medan den verkliga orsaken finns i nätverket, DNS, repository-inställningar eller brist på diskutrymme. Därför bör felsökningen börja med att avgöra om problemet ligger i kommunikationen, i repositoryt, i den lokala databasen eller i beroendena.

Vanliga symptom

  • apt update, dnf update eller pacman -Syu stannar med fel
  • Det visas meddelanden om olösliga beroenden eller trasiga paket
  • Repositoryn kan inte användas på grund av GPG- eller signaturfel
  • Databasen är låst och inga paketoperationer fungerar
  • Mirrors returnerar 404 eller timeout
  • Efter en avbruten uppdatering fungerar pakethanteringen inte längre normalt
  • Efter uppdatering av vissa bibliotek startar inte själva pakethanteraren längre

Vad bör kontrolleras först

Det första steget är att ta reda på om problemet verkligen ligger i pakethanteraren, eller om det egentligen beror på nätverket eller DNS.

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

Om nätverket eller DNS redan är trasiga kan fel i apt, dnf eller pacman bara vara en följd av det. Om vanligt nätverk fungerar men paketoperationer misslyckas bör fokus riktas mot repositoryn, nycklar, lock-filer, cache, databaser och beroenden.

Vanliga orsaker vid problem med apt / dnf / pacman

1. Avbruten uppdatering

En av de vanligaste orsakerna är en uppdatering som avbröts mitt i processen. Strömavbrott, en stängd terminal, en avbruten SSH-anslutning eller en frusen grafisk miljö kan lämna paketdatabasen eller vissa paket i ett halvfärdigt tillstånd.

I en sådan situation bör man inte direkt börja radera filer, utan först försöka slutföra det ofärdiga tillståndet på rätt sätt.

2. Kvarlämnade lock-filer

Pakethanterare använder lock-mekanismer för att förhindra flera samtidiga operationer. Om en annan process fortfarande körs, eller om endast lock-filen blev kvar efter en crash, kommer systemet att säga att pakethanteraren redan används.

Men lock-filer bör inte raderas blint. Först måste man kontrollera att inga relaterade processer faktiskt fortfarande körs.

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

3. Skadad repository-konfiguration

Tredjeparts-repositoryn, gamla PPA:er, inaktuella mirrors eller kvarvarande inställningar efter en distributionsuppgradering kan göra paketkällorna ogiltiga. Typiska tecken är 404-fel, saknad Release file eller problem med att hämta metadata.

4. Problem med GPG-nycklar och signaturer

Repositoryn verifieras normalt kryptografiskt. Om en nyckel har gått ut, inte importerats, nyckelhanteringen har ändrats eller den lokala keyringen är skadad, kommer pakethanteraren att stoppa av säkerhetsskäl.

5. Trasiga beroenden

Beroenden går ofta sönder när man tvingar in inkompatibla paketversioner, blandar olika repositoryn, gör delvisa uppdateringar eller manuellt skriver över systembibliotek. Detta är särskilt kritiskt på pacman-baserade system, men även apt och dnf blir snabbt instabila om källor blandas utan kontroll.

6. Skadad cache eller metadata

Delvis nedladdade paket, föråldrad metadata eller skadade synkroniseringsdatabaser kan hindra korrekt läsning av paketlistor och göra att installationer misslyckas.

7. Brist på diskutrymme

En vanlig men ofta underskattad orsak är brist på ledigt utrymme. Om partitioner som /var eller /boot är fulla kan uppackning och skrivning av filer misslyckas mitt i processen och lämna paketsystemet i ett inkonsekvent tillstånd.

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

Vad ska kontrolleras när apt inte fungerar

På Debian- och Ubuntu-system är det viktigt att inte bara titta på apt, utan också på tillståndet hos dpkg under det.

Reparera ofullständigt konfigurerade paket

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

Efter en avbruten uppdatering är dessa två kommandon ofta det viktigaste första steget.

Ladda om paketlistorna

sudo apt update

Om det här uppstår 404-, signatur- eller Release file-fel bör /etc/apt/sources.list och innehållet i /etc/apt/sources.list.d/ kontrolleras.

Rensa cache

sudo apt clean
sudo apt autoclean

Om problemet beror på skadad eller föråldrad cache kan detta hjälpa.

Vad ska kontrolleras när dnf inte fungerar

På Fedora- och RHEL-system bör man särskilt fokusera på metadata, transaktionshistorik och repository-konfiguration.

Bygg upp metadata på nytt

sudo dnf clean all
sudo dnf makecache

Om mirror-information eller metadata är skadad är detta ofta ett bra första steg.

Kontrollera beroenden och systemkonsistens

sudo dnf check
sudo dnf distro-sync

Detta hjälper till att avgöra om systemet fortfarande motsvarar distributionens förväntade paketstatus.

Visa historiken

sudo dnf history
sudo dnf history info last

Historiken visar ofta efter vilken uppdatering problemen började.

Vad ska kontrolleras när pacman inte fungerar

På Arch Linux är det särskilt viktigt att kontrollera synkroniseringsdatabaser, nycklar, mirrors och eventuella delvisa uppdateringar.

Synkronisera databaserna på nytt

sudo pacman -Syy

Om den lokala synkroniseringsdatabasen inte längre stämmer överens med repositoryt är detta ofta första steget.

Utför en fullständig uppdatering

sudo pacman -Syu

På Arch bör delvisa uppdateringar undvikas. Att uppdatera vissa paket och låta andra vara gamla är en klassisk väg till inkonsekvens.

Kontrollera nyckelproblem

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

Om problemet ligger i signaturer eller keyring kan en ny initialisering behövas.

Loggar är mycket viktiga

Vid fel i pakethantering räcker det sällan att bara titta på sista raden. Endast loggar och detaljerad utdata visar om problemet gäller signaturer, beroenden, nätverk eller databasen.

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

Praktisk ordning för felsökning

Steg 1: Kontrollera nätverk och DNS

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

Steg 2: Kontrollera ledigt diskutrymme

df -h

Steg 3: Kontrollera processer och lock-filer

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

Steg 4: Läs loggarna

Först måste man förstå vilken konkret senaste handling som faktiskt misslyckades.

Steg 5: Använd rätt återställningskommandon för distributionen

För apt börjar man ofta med dpkg --configure -a, för dnf med rensning av metadata och för pacman med full synkronisering och nyckelkontroll.

Vad man bör undvika

  • Radera inte lock-filer utan att förstå orsaken
  • Installera inte slumpmässiga .deb / .rpm / andra paket från opålitliga källor
  • Gör inte upprepade delvisa uppdateringar på Arch
  • Blanda inte apt med dpkg, dnf med rpm eller pacman med manuella filändringar okontrollerat
  • Stäng inte av signaturkontroll utan att förstå felet

Så undviker du att problemet återkommer

  • Undvik strömavbrott och tvingad avstängning under uppdateringar
  • Lägg inte till för många tredjeparts-repositoryn
  • Skapa snapshots eller säkerhetskopior före större uppdateringar
  • Följ distributionens rekommenderade uppdateringsmetod
  • Undvik särskilt delvisa uppdateringar på Arch

Slutsats

Även om det ser ut som att apt, dnf eller pacman själva är trasiga ligger den verkliga orsaken ofta i nätverket, lock-filer, signaturer, beroenden, cache, diskutrymme eller repository-inställningar. Det viktigaste är att inte genast börja radera eller ominstallera slumpmässigt, utan först använda loggar för att förstå på vilken nivå felet faktiskt uppstod. Därefter bör man använda rätt metod: reparation av dpkg för apt, metadata och historik för dnf samt full synkronisering och nyckelkontroll för pacman.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *