pacman ist der Paketmanager von Arch Linux und seinen Derivaten. Anders als das apt/dpkg-Gespann unter Debian ist pacman ein eigenständiges Werkzeug - kein Frontend, das ein darunterliegendes Backend ansteuert. Klein, schnell, in C geschrieben. Die Bedienung wirkt auf den ersten Blick kryptisch, weil Operationen mit Großbuchstaben angegeben werden (-S, -R, -Q), folgt aber einer klaren inneren Logik.

Was pacman macht

pacman verwaltet die Software auf Arch-basierten Systemen: Pakete installieren, aktualisieren, entfernen, durchsuchen und Abhängigkeiten auflösen. Die Datenbank, die er dafür pflegt, liegt unter /var/lib/pacman/. Pakete kommen als komprimierte Archive (.pkg.tar.zst) und enthalten neben den Dateien auch Metadaten und Installations-Skripte.

Im Gegensatz zu Debian-Systemen, wo apt als Frontend über dpkg arbeitet, ist pacman beides in einem: niedrige Ebene (Paket entpacken, Datenbank führen) und hohe Ebene (Quellen synchronisieren, Abhängigkeiten lösen). Das macht ihn schlanker - aber auch weniger nachsichtig, wenn man Befehle falsch kombiniert.

Distros, die pacman nutzen

pacman wird in der gesamten Arch-Familie eingesetzt. Diese Distributionen folgen dem Rolling-Release-Modell: Es gibt keine festen Versionen, sondern einen kontinuierlichen Strom an Updates. Wer aktualisiert, bekommt immer den neuesten Stand.

DistributionCharakterZielgruppe
Arch LinuxMinimal, manuelle Installation, sehr aktuellPower-User, Bastler
ManjaroArch-basiert, mit Installer und eigenen ReposEinsteiger ins Arch-Universum
EndeavourOSArch nahe am Original, mit grafischem InstallerMittelweg zwischen Arch und Manjaro
GarudaArch mit BTRFS-Snapshots und Gaming-FokusGamer, Optik-Fans
ArcoLinuxLehrorientierte Arch-VarianteLernende, die Arch verstehen wollen

Alle teilen sich denselben Paketmanager und größtenteils dieselben Repositories. Wer pacman beherrscht, ist auf jeder dieser Distributionen zu Hause.

Operationen-Buchstaben

pacman strukturiert seine Befehle über Operationen - jeweils ein Großbuchstabe, der den Modus festlegt. Zusaetzliche Optionen (Kleinbuchstaben) verfeinern das Verhalten innerhalb der Operation.

OperationBedeutungBeispiel
-SSync - installieren oder aktualisieren aus Repospacman -S firefox
-RRemove - Paket entfernenpacman -R firefox
-QQuery - lokale Datenbank abfragenpacman -Q
-UUpgrade - Paket aus lokaler Datei installierenpacman -U paket.pkg.tar.zst
-DDatabase - Datenbank-Operationen (Markierungen, Reparatur)pacman -D --asexplicit
-FFiles - durchsucht Datei-Datenbank der Repospacman -F /usr/bin/python
-TTest - prüft Abhängigkeitenpacman -T glibc

Das Schema ist konsequent: Jeder Befehl beginnt mit einer dieser Operationen. Wer das einmal verinnerlicht hat, liest pacman-Befehle praktisch von links nach rechts.

Wichtige Kombinationen

Die wahre Staerke von pacman liegt in der Kombination der Operationen mit kurzen Optionen. Die folgende Tabelle deckt den Alltag fast vollständig ab.

BefehlWas er tut
pacman -SyuKomplettes System-Update: Datenbank synchronisieren und alle Pakete aktualisieren
pacman -S PAKETPaket aus den Repos installieren
pacman -Ss PATTERNRepos nach Namen/Beschreibung durchsuchen
pacman -Si PAKETDetaillierte Info aus dem Repo (Version, Abhängigkeiten, Größe)
pacman -Qi PAKETDetaillierte Info zu einem lokal installierten Paket
pacman -Ql PAKETListet alle Dateien, die ein installiertes Paket angelegt hat
pacman -Qo /pfadWelches Paket gehört zu der angegebenen Datei?
pacman -QdtOrphans - Abhängigkeiten, die niemand mehr benötigt
pacman -R PAKETPaket entfernen, Konfigurationen und Deps bleiben
pacman -Rns PAKETPaket entfernen, plus Konfigurationen, plus unbenutzte Deps
pacman -ScCache aufraeumen - alte Paket-Archive löschen

Die Buchstaben hinter -S lesen sich wie eine Mini-Sprache: y = sync database, u = upgrade, s = search, i = info, c = clean. Sobald du diese Bausteine kennst, kannst du Kombinationen ableiten, ohne in der Manpage nachzuschlagen.

Konfiguration

Die zentrale Konfigurationsdatei liegt unter /etc/pacman.conf. Dort werden Repositories aktiviert, Optionen wie Parallel-Downloads gesetzt und Ignorier-Listen verwaltet.

Bash /etc/pacman.conf (Auszug)
[options]
HoldPkg     = pacman glibc
Architecture = auto
ParallelDownloads = 5

[core]
Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist

[multilib]
Include = /etc/pacman.d/mirrorlist

Die wichtigsten Repositories:

  • [core] - Basis-Pakete für ein lauffähiges System (Kernel, Coreutils, pacman selbst)
  • [extra] - Alles außerhalb des Kerns: Desktops, Anwendungen, Entwicklungswerkzeuge
  • [multilib] - 32-Bit-Bibliotheken auf einem 64-Bit-System (z.B. für Steam und Wine)

Die Mirror-Liste mit den eigentlichen Server-URLs liegt unter /etc/pacman.d/mirrorlist. Welcher Mirror oben steht, beeinflusst die Download-Geschwindigkeit deutlich. Das Werkzeug reflector sortiert die Mirrors automatisch nach Geschwindigkeit und Aktualität.

Bash Mirrors per reflector neu sortieren
sudo reflector --country Germany --latest 10 --sort rate \
    --save /etc/pacman.d/mirrorlist

AUR - Arch User Repository

Das AUR ist kein klassisches Repository mit fertigen Paketen, sondern eine Sammlung von Build-Rezepten - sogenannten PKGBUILDs. Jeder Eintrag ist ein kleines Shell-Skript, das beschreibt, wie ein Paket aus den Quellen oder aus einem fremden Binärpaket gebaut wird.

Der Workflow: PKGBUILD herunterladen, Inhalt prüfen, mit makepkg lokal ein .pkg.tar.zst erzeugen und mit pacman -U installieren. Der Komfort kommt durch AUR-Helfer wie yay oder paru, die diesen Prozess hinter einem einfachen Kommando verstecken.

Bash Beispiel: AUR-Paket mit yay
yay -S spotify

Wichtig zu wissen: AUR-Pakete sind user-contributed und werden von niemandem zentral geprüft. Das PKGBUILD entscheidet, welche Quellen heruntergeladen, welche Patches angewendet und welche Skripte ausgeführt werden - alles potenziell mit Root-Rechten während der Installation. Lies das PKGBUILD vor jeder Installation, besonders bei wenig populaeren oder neu hochgeladenen Paketen.

Praxis-Patterns

Die folgenden Muster decken den größten Teil des Arch-Alltags ab. Jeder Block enthält eine kurze Erläuterung dazu, wann und warum man ihn einsetzt.

Komplettes System-Update

Bash
sudo pacman -Syu

Der Standard-Befehl für ein Rolling-Release-System: Die Repository-Datenbank wird synchronisiert (-Sy) und anschließend werden alle installierten Pakete auf den neuesten Stand gebracht (-u). Dieser Befehl sollte immer als Einheit laufen - niemals nur -Sy ohne -u (siehe Insights).

Paket suchen und installieren

Bash
pacman -Ss firefox
sudo pacman -S firefox

Erst suchen, um den genauen Paketnamen zu finden, dann installieren. -Ss durchsucht Namen und Beschreibungen aller verfügbaren Pakete und liefert Treffer im Format repo/paketname version.

Orphans entfernen

Bash
sudo pacman -Rns $(pacman -Qdtq)

pacman -Qdtq listet alle Pakete, die als Abhängigkeit installiert wurden, von keinem anderen Paket mehr benötigt werden und nicht explizit angefordert sind (-q gibt nur die Namen aus). Das Ergebnis wird an -Rns übergeben, das jedes davon mitsamt Konfiguration und unbenutzten Sub-Deps entfernt.

Welches Paket gehört zu einer Datei

Bash
pacman -Qo /usr/bin/python

Hilfreich beim Debuggen: Wenn du eine Datei findest und wissen willst, woher sie kommt. Funktioniert nur für installierte Pakete - für eine Datei aus einem nicht installierten Paket nimmst du pacman -F /pfad.

Cache reduzieren

Bash
sudo paccache -r

paccache (aus pacman-contrib) behält standardmäßig die letzten drei Versionen jedes Pakets im Cache und löscht alles ältere. Sicherer als pacman -Sc, weil ein Rollback auf eine vorherige Version möglich bleibt.

Nach Update: laufende Dienste neu starten

Bash
sudo lsof | grep deleted

Nach einem Update verweisen laufende Prozesse weiterhin auf die alten Bibliotheks-Dateien, die zwar entfernt, aber noch im Speicher gehalten werden ((deleted)). Der Befehl listet betroffene Prozesse - die zugehörigen Dienste sollten neu gestartet werden, damit sie die neuen Versionen laden. Komfortabler ist das Werkzeug needs-restart oder needrestart.

AUR-Paket mit yay

Bash
yay -S PAKET

yay übernimmt PKGBUILD-Download, Build und Installation in einem Schritt. Es spiegelt grosse Teile der pacman-Syntax (auch -Syu aktualisiert offizielle Pakete und AUR-Pakete gemeinsam), so dass die Lernkurve flach bleibt.

Häufige Stolperfallen

Niemals -Sy ohne -u - die Partial-Upgrade-Falle.

Der gefährlichste Anfängerfehler unter Arch: sudo pacman -Sy paket. Damit wird die lokale Paket-Datenbank aktualisiert (-y), das angegebene Paket aber in der neuesten Version installiert, während alle anderen Pakete auf der alten Version bleiben. Da Arch ein Rolling Release ist und Pakete eng miteinander verzahnte Versionen erwarten, führt das oft zu fehlenden oder inkompatiblen Bibliotheks-Versionen - im schlimmsten Fall startet das System nicht mehr. Die Regel lautet: Vor jeder Installation ein vollständiges pacman -Syu, oder direkt sudo pacman -S paket ohne -y, wenn die Datenbank schon aktuell ist.

-Syyu mit zwei y - nur bei kaputten Mirrors.

Ein einzelnes -y aktualisiert die lokale Datenbank nur, wenn der Server eine neuere Version meldet. Bei defekten oder veralteten Mirrors hilft -yy: Es erzwingt einen kompletten Neu-Download der Datenbank, auch wenn die lokale gleich aktuell wirkt. Nützlich nach Mirror-Wechseln oder bei mysterioesen Hash-Fehlern - aber kein Standard-Befehl. Wer -Syyu als Routine schreibt, belastet die Mirrors unnötig.

Rolling Release heißt: regelmäßig updaten oder Konflikte ernten.

Arch ist nicht für Wochen ohne Updates gedacht. Wer sechs Monate liegen laesst und dann pacman -Syu startet, trifft mit hoher Wahrscheinlichkeit auf Schluessel-Probleme, manuelle Eingriffe (siehe archlinux-keyring) und brückende Änderungen, die in den News standen. Auf der Arch-Startseite werden diese manual interventions angekuendigt. Wer regelmäßig - etwa woechentlich - aktualisiert, bekommt kleine, schmerzfreie Updates.

--noconfirm in Skripten ist gefährlich.

Die Option —noconfirm überspringt jede Bestätigung. In Skripten verlockend, aber pacman fragt aus gutem Grund: Wenn ein Update zentrale Pakete entfernen will (etwa weil sich eine Abhängigkeit umbenannt hat), klickt —noconfirm einfach auf Ja. Im Worst Case löscht das Skript Pakete, die das System zum Booten braucht. Wenn überhaupt, dann gezielt für einzelne, gut bekannte Paket-Installationen - niemals für ein -Syu über alle Pakete.

AUR-Pakete sind ungeprüft - PKGBUILD lesen.

Das AUR ist eine offene Plattform: Jeder Nutzer kann PKGBUILDs hochladen, niemand prüft sie zentral. Pakete können Quellen aus beliebigen URLs ziehen, beliebige Skripte mit Build-Rechten ausführen und beim Install-Hook Root-Rechte nutzen. AUR-Helfer wie yay zeigen das PKGBUILD vor dem Bauen an - lies es, gerade bei selten heruntergeladenen Paketen. Achte auf seltsame URLs, Patches aus fremden Repos und Hooks, die in /etc oder Systemd-Dienste schreiben.

.pacnew und .pacsave - Konfigurationen manuell mergen.

Wenn ein Update eine Konfigurationsdatei ändern würde, die du lokal angepasst hast, schreibt pacman die neue Version als .pacnew daneben - deine Änderung bleibt aktiv, die neuen Defaults liegen ungenutzt. Beim Entfernen eines Pakets, dessen Config du verändert hast, wird sie als .pacsave gesichert. Beide müssen manuell verglichen und gemerged werden, sonst laeufst du irgendwann mit einer veralteten Konfiguration. Das Werkzeug pacdiff (aus pacman-contrib) findet diese Dateien und bietet einen interaktiven Merge.

pacman macht keine Snapshots - Rollbacks brauchen BTRFS oder Timeshift.

pacman selbst kennt kein “Update zurückrollen”. Theoretisch kannst du eine alte Paket-Version aus dem Cache mit pacman -U wieder installieren, aber das hilft nicht bei systemweiten Änderungen oder Konfigurationen. Wer ein echtes Sicherheitsnetz will, verwendet BTRFS-Snapshots (Garuda macht das automatisch über Snapper) oder Timeshift. Vor größeren Updates: Snapshot anlegen, dann updaten. Geht etwas schief, ist der vorherige Zustand mit einem Boot-Eintrag zurück.

Weiterführende Ressourcen

Externe Quellen

/ Weiter

Zurück zu Pakete

Zur Übersicht