Pacman: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
(→‎Anwendung: pacman -Q alle Pakete anzeigen)
(aus pacman -D ---asdeps ''<Paket>'' das zusätzliche, fehlerhafte 3. - entfernt)
 
(105 dazwischenliegende Versionen von 26 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Der zentrale Paketmanager '''Pacman''' ist eine der größten Stärken der ArchLinux-Distribution. Er verwaltet einfache Binärpakete im Format <code>.pkg.tar.xz</code> (bzw. <code>.pkg.tar.gz</code> bei älteren Paketen), die entweder aus offiziellen oder inoffiziellen Repositorien stammen, oder vom Benutzer selbst über das [[Arch Build System]] (ABS) erstellt wurden. Auch selbst kompilierte Pakete sollten immer über '''Pacman''' installiert werden, damit sie in der zentralen Datenbank erfasst werden.
Der zentrale Paketmanager Pacman ist eine der größten Stärken von Arch Linux. Er verwaltet einfache Binärpakete im Format {{ic|.pkg.tar.zst}} (bzw. {{ic|.pkg.tar.xz}} und {{ic|.pkg.tar.gz}} bei älteren Paketen), die entweder aus offiziellen oder inoffiziellen Repositorys stammen, oder vom Benutzer selbst über das [[Arch Build System]] (ABS) erstellt wurden. Auch selbst kompilierte Pakete sollten immer über Pacman installiert werden, damit sie in der zentralen Datenbank erfasst werden.


Mit '''Pacman''' hält man das System aktuell, indem man die Paketlisten mit einem Hauptserver synchronisiert. Durch dieses Server/Client-Modell ist es möglich, Pakete durch einfache Befehle komplett mit allen Abhängigkeiten (ähnlich Debians apt-get) herunterzuladen, zu installieren oder zu aktualisieren.
Mittels Pacman wird das System aktuell gehalten, indem die Paketlisten mit einem Server synchronisiert werden. Durch dieses Server/Client-Modell ist es möglich, Pakete durch einfache Befehle komplett mit allen Abhängigkeiten herunterzuladen, zu installieren bzw. zu aktualisieren. Getreu dem [[KISS-Prinzip]] wurde Pacman als einfaches Kommandozeilen-Werkzeug entwickelt. Inzwischen stehen auch grafische Benutzeroberflächen zur Verfügung, die jedoch offiziell nicht unterstützt werden.
Getreu dem [[KISS-Prinzip]] wurde '''Pacman''' als einfaches Kommandozeilen-Werkzeug entwickelt. Inzwischen stehen auch grafische Benutzeroberflächen wie [[Shaman]] oder Wrapper wie [[yaourt]] zur Verfügung, die jedoch offiziell nicht unterstützt werden.  


== Installation ==
== Installation ==
'''Pacman''' und seine Abhängigkeiten sind bereits Bestandteil jeder Arch Linux-Installation. Um sich lästige Tipp-Arbeit zu ersparen, kann man das Paket [[Bash-Completion]] zusätzlich installieren.
Pacman ist bereits Bestandteil jeder Arch Linux-Installation.


'''Pacman''' enthält das Script ''pacman-optimize''. Dafür wird das Paket ''diffutils'' aus der Paketkategorie ''base-devel'' benötigt.
== Die wichtigsten Pacman-Befehle ==
Für neue Arch Linux-AnwenderInnen seien zunächst die wichtigsten Pacman-Befehle angeführt.


== Anwendung ==
{|border="1" style="width:100%"
'''Pacman''' ist ein All-In-One-Paketmanager. Er kann Pakete
|style="width:25%;background-color:#E5E5E5"|'''Befehl'''
|style="width:75%;background-color:#E5E5E5"|'''Beschreibung'''
|-
|pacman -Syu
|Führt eine komplette System-Aktualisierung aus
|-
|pacman -S ''<Paket>''
|Installiert ein Paket
|-
|pacman -R ''<Paket>''
|Deinstalliert ein Paket
|-
|pacman -U ''<Paket-Dateiname>''
|Installation eines Paketes aus einer lokalen Datei (z.B. für ein Downgrade oder zur Installation selbst gebauter Pakete)
|}
Diese Befehle sind der Grundstock, um ein Arch-System einrichten und auf aktuellem Stand halten zu können.
 
== Die Pacman-Syntax ==
Der Aufruf der Hauptoptionen wird mit einem Minuszeichen eingeleitet und beginnt immer mit einem Grossbuchstaben.
 
*'''S''' – Synchronisation der lokalen Paketdatenbank mit den Repositorien, welche in der Datei {{ic|/etc/pacman.conf}} aktiviert sind (''Sync'')
 
*'''Q''' – Bezieht sich immer auf die lokale Paketdatenbank des Systems (''Query'')
 
*'''R''' – Dient zum Entfernen von installierten Paketen (''Remove'')
 
*'''D''' – Bearbeitung der lokalen Paketdatenbank (''Database'')
 
*'''U''' – Installiert Pakete aus einem lokalen Verzeichnis (''Upgrade'')
 
*'''F''' – Sucht das Paket, welches eine Datei beinhaltet  (''File'')
 
Die vorangestellte Hauptoption kann mit weiteren Optionen in Kleinbuchstaben erweitert und spezifiziert werden, beispielsweise:
*'''s''' – Bewirkt eine Suche. Bei {{ic|-Ss}} wird ein Paketname in der Paketdatenbank gesucht, Bei {{ic|-Rs}} werden die jeweils abhängigen Pakete gesucht und mit entfernt
*'''y''' – Bewirkt eine Aktualisierung der Paketdatenbank (falls es tatsächlich Änderungen gibt)
*'''yy''' – Erzwingt die Aktualisierung der Paketdatenbank auch dann, wenn keine Updates vorhanden sind
 
=== Synchronisation und Installation von Paketen ===
{|border="1" style="width:100%"
|style="width:25%;background-color:#E5E5E5"|'''Befehl'''
|style="width:75%;background-color:#E5E5E5"|'''Beschreibung'''
|-
|pacman -Syu
|Führt eine komplette System-Aktualisierung aus
|-
|pacman -S ''<Paket1 Paket2>''
|Eines oder mehrere Pakete installieren oder aktualisieren
|-
|pacman -Sy
|Lokale Datenbank aktualisieren
|-
|pacman -Su
|Alle installierten Pakete aktualisieren
|-
|pacman -Syy
|Lokale Datenbank komplett neu aufbauen und aktualisieren
|-
|pacman -Syuu
|Alle installierten Pakete downgraden (von Testing nach Core/Extra oder von Community-Testing nach Community)
|-
|pacman -S testing/''<Paket>''
|Paket aus einem spezifischen Repo (hier: testing) installieren
|-
|pacman -Sw ''<Paket>''
|Paket herunterladen, ohne es zu installieren
|-
|}


* suchen,
=== Informationen zu installierbaren Paketen ===
* herunterladen,
{|border="1" style="width:100%"
* installieren und aktualisieren, sowohl vom Server als auch von lokalen Datenbanken,
|style="width:25%;background-color:#E5E5E5"|'''Befehl'''
* entfernen.
|style="width:75%;background-color:#E5E5E5"|'''Beschreibung'''
|-
|pacman -Ss ''<Paket>''
|Sucht nach installierbaren Paketen. Es reicht ein Teil des Paketnamens oder der Paketbeschreibung
|-
|pacman -Sg
|Sucht nach installierbaren Paketgruppen
|-
|pacman -Sg ''<Paketgruppe>''
|Zeigt den Inhalt einer Paketgruppe
|-
|pacman -Si ''<Paket>''
|Informationen zu (noch) nicht installierten Paketen anzeigen
|-
|}


Man muss nur die nötigen Parameter für die bestimmten Funktionen kennen. Die wichtigsten Befehle werden hier in einer Tabelle aufgeführt. Bitte beachte, dass Paketnamen immer klein geschrieben werden!
=== Verwaltung lokaler Pakete  ===
{|border="1" style="width:100%"
|style="width:25%;background-color:#E5E5E5"|'''Befehl'''
|style="width:75%;background-color:#E5E5E5"|'''Beschreibung'''
|-
|pacman -U ''<Paket-Dateiname>''
|Ein lokales Paket installieren (nicht aus einem Repo)
|-
|pacman -D --asexplicit ''<Paket>''
|Status eines installierten Paketes auf „Ausdrücklich installiert“ setzen
|-
|pacman -D --asdeps ''<Paket>''
|Status eines installierten Paketes auf „Installiert als Abhängigkeit“ setzen
|-
|pacman -Scc
|Leert das lokale Paketarchiv von Pacman vollständig (''/var/cache/pacman/pkg'')
|-
|pacman -Sc
|Löscht veraltete Pakete aus ''/var/cache/pacman/pkg'' sowie ungenutzte Repositorien aus ''/var/lib/pacman/sync''. <font color="red">Vorsicht</font>, behalten werden nur aktuell installierte Versionen – Vorversionen für ein Paket-Downgrade sind dann nicht mehr vorhanden.
|-
|}


=== Pakete entfernen ===
{|border="1" style="width:100%"
|style="width:25%;background-color:#E5E5E5"|'''Befehl'''
|style="width:75%;background-color:#E5E5E5"|'''Beschreibung'''
|-
|pacman -R ''<Paketname>''
|Deinstallation eines oder mehrerer Pakete (aus AUR oder Repos)
|-
|pacman -Rs ''<Paketname>''
|Wie oben, zusätzlich werden alle abhängige Pakete gesucht und mit entfernt, falls diese nicht von einer anderen Anwendung gebraucht werden
|-
|pacman -Rsc ''<Paketname>''
|Wie oben. Abhängigkeiten werden kaskadierend entfernt
|-
|pacman -Rscn ''<Paketname>''
|Wie oben. Die Konfigurationsdateien der Anwendung werden mit entfernt
|-
|pacman -Rdd ''<Paket>''
|Deinstallation eines Paketes ohne Prüfung bestehender Paketabhängigkeiten. <font color="red">Vorsicht</font>, hierdurch kann die Konsistenz und Funktionstüchtigkeit der Systeminstallation beeinträchtigt werden!
|-
|pacman -Rss ''<Paket>''
|Paket mit allen benötigten Abhängigkeiten und deren Abhängigkeiten entfernen
|-
|}


=== Abfragen der lokalen Paketdatenbank ===
{|border="1" style="width:100%"
{|border="1" style="width:100%"
|style="width:30%;background-color:#E5E5E5"|'''Befehl'''  
|style="width:25%;background-color:#E5E5E5"|'''Befehl'''
|style="width:70%;background-color:#E5E5E5"|'''Beschreibung'''  
|style="width:75%;background-color:#E5E5E5"|'''Beschreibung'''
|-
|-
|''pacman -Syu''
|pacman -Q
|Führt eine komplette System-Aktualisierung aus. Kombiniert die drei folgenden Parameter
|Zeigt alle installierten Pakete inklusive Versionsnummer auf dem System an
|-
|-
|''pacman -S [paket1] [paket2]''
|pacman -Qi ''<Paket>''
|Eines oder mehrere Pakete installieren oder aktualisieren
|Informationen zu bereits installiertem Paket anzeigen
|-
|-
|''pacman -Sy''
|pacman -Qs ''<Suchmuster>''
|Lokale Datenbank aktualisieren
|Installierte Pakete nach Name oder einem Begriff in der Beschreibung durchsuchen.
|-
|-
|''pacman -Su''
|pacman -Qdt
|Alle installierten Pakete aktualisieren
|Verwaiste Pakete anzeigen, die als Abhängigkeiten installiert wurden, aber nicht mehr von anderen Paketen benötigt werden
|-
|-
|''pacman -Syy''
|pacman -Qet
|Lokale Datenbank komplett neu aufbauen und aktualisieren
|Pakete anzeigen, die ausdrücklich installiert wurden, aber nicht von anderen als Abhängigkeit benötigt werden
|-
|-
|''pacman -Q''
|pacman -Ql ''<Paket>''
|Zeigt alle installierten Pakete inkluse Versionsnummer auf dem System an
|Zeigt alle installierten Dateien des Pakets im System
|-
|-
|''pacman -Ss [paket]''
|pacman -Qm
|Sucht nach installierbaren Paketen. Es reicht ein Teil des Paketnamens
|Pakete anzeigen, die sich in keinem aktivierten Repo laut /etc/pacman.conf befinden
|-
|-
|''pacman -Sg''
|pacman -Qo ''<Pfad zur Datei>''
|Sucht nach installierbaren Paketgruppen
|Zeigt das Paket an, welches die gesuchte Datei enthält
|-
|-
|''pacman -Sg [paketgruppe]''
|pacman -Sy && pacman -Qu
|Zeigt den Inhalt einer Paketgruppe
|Aktualisiert die lokale Paketdatenbank und zeigt verfügbare Updates an
|-
|-
|''pacman -Qs [paket]''
|<nowiki>pacman -Qk | grep warning</nowiki>
|Sucht nach bereits installierten Paketen
|Überprüft alle Pakete auf fehlende Dateien und schränkt die Ausgabe auf Problempakete ein
|-
|-
|''pacman -R [paket]
|}
|Paket entfernen
 
|-
=== Paketdateien suchen ===
|''pacman -Rd [paket]
{|border="1" style="width:100%"
|Paket entfernen '''ohne''' auf Abhängigkeiten zu achten. ACHTUNG: Mit Vorsicht zu genießen! Das Paket wird auch entfernt, wenn es noch von anderen Paketen gebraucht wird!
|style="width:25%;background-color:#E5E5E5"|'''Befehl'''
|-
|style="width:75%;background-color:#E5E5E5"|'''Beschreibung'''
|''pacman -Rdd [paket]
|-
|Paket entfernen, wie oben, jedoch werden alle Abhängigkeitsprüfungen ausgeschaltet.
|pacman -Fy
|-
|Lokale Datenbank aktualisieren (wie ''-Sy'')
|''pacman -Rs [paket]
|-
|Paket mit allen benötigten Abhängigkeiten entfernen (wenn diese nicht von anderen installierten Paketen benötigt werden)
|pacman -Fyy
|-
|Lokale Datenbank neu aufbauen und aktualisieren (wie ''-Syy'')
|''pacman -Rss [paket]
|-
|Paket mit allen benötigten Abhängigkeiten und deren Abhängigkeiten entfernen
|pacman -F ''<Datei>''
|-
|Paket suchen das die Datei enthält
|''pacman -D [paket]''
|-
|Status eines installierten Programms ändern, ohne es "drüber zu installieren"
|pacman -Fx ''<Regex>''
|-
|Wie -F, aber Suche mit regulären Ausdrücken (hilfreich, falls der vollständige Dateiname unbekannt ist)
|''pacman -Qi [paket]''
|-
|Informationen zu bereits installiertem Paket anzeigen
|pacman -Fl ''<Paket>''
|-
|Alle Dateien des Paketes anzeigen
|''pacman -Si [paket]
|-
|Informationen zu (noch) nicht installierten Paketen anzeigen
|}
|-
 
|''pacman -Sw [paket]
Es können auch mehrere Befehlsaufrufe kombiniert werden; hier z.B. zur vorhergehenden Prüfung und anschließenden Deinstallation aller verwaisten Pakete:
|Paket herunterladen, ohne es zu installieren
  pacman -Qdtq
|-
  pacman -Rsn $(pacman -Qdtq)
|''pacman -S testing/[paket]
 
|Paket aus einem spezifischen Repo (hier: testing) installieren
=== Paccache ===
|-
''Paccache'' ist ein Werkzeug zur Bereinigung des Pacman-Cache {{ic|/var/cache/pacman/pkg}}. Archivierte Pakete können hiermit differenzierter als mit {{ic|pacman -Scc}} bereinigt werden.
|''pacman -U [paket-datei]
 
|Ein lokales Paket installieren. (nicht aus einem Repo)  
Um den Befehl nutzen zu können muss zuvor das Paket {{ic|pacman-contrib}} installiert werden.
|-
 
|-
Zur Bereinigung des Paket-Cache kann man beispielsweise so vorgehen:
|''pacman -Runs [paket]''
 
|Paket inklusive aller Abhängigkeiten entfernen
  du -sh /var/cache/pacman/pkg  # Belegung des Cache-Speicherplatzes prüfen
|-
  paccache -h                    # Befehlsübersicht
|''pacman -Qdt''
  paccache -dk2                  # Testdurchlauf; Wieviel Platz kann eingespart werden?
|Verwaiste Pakete anzeigen, die als Abhängigkeiten installiert wurden, aber nicht mehr von anderen Paketen benötigt werden
  paccache -vrk2                # Entfernt Pakete aus dem Cache, behält die jüngsten 2 Versionen
|-
  paccache -ruk0                # Alle Pakete aus dem Cache entfernen, die nicht (mehr) installiert sind
|''pacman -Qet''
 
|Pakete anzeigen, die ausdrücklich installiert wurden, aber nicht von anderen als Abhängigkeit benötigt werden
Zur automatischen Bereinugung gibt es einen [[Systemd]] Timer. Bei aktiviertem Timer wird der Cache wöchentlich mit {{ic|paccache -r}} bereinigt.
|-
  systemctl enable paccache.timer
  |''pacman -Scc''
  |Leert den lokalen Speicher von '''Pacman''' (/var/cache/pacman/pkg)
|-
|''pacman -Sc''
|Löscht nicht mehr benötigte und veraltete Pakete aus (/var/cache/pacman/pkg) und unbenutzte Repositorien aus /var/lib/pacman/.
|-
|''pacman -Ql [paket]''
|Zeigt alle installierten Dateien des Pakets im System
  |-
|''pacman -Qm''
  |Pakete anzeigen die sich in keinem Repo befinden
  |-
  |''pacman -Qo [datei]''
|Zeigt das Paket an das die Datei enthält
  |-
|''pacman -Qu''
|Zeigt für welche installierten Pakete Updates verfügbar sind
|-
|''pacman-optimize''
  |'''Pacman''' optimieren
|-
|}


Man kann natürlich auch mehrere Befehle kombinieren und zum Beispiel so alle verwaisten Pakete deinstallieren: pacman -Rcsn `pacman -Qdtq`
=== Checkupdates ===
Mit ''Checkupdates'' lässt sich prüfen, ob Aktualisierungen für installierte Pakete verfügbar sind, ohne eine komplette System-Aktualisierung ({{ic|pacman -Syu}}) durchzuführen.
 
Um den Befehl nutzen zu können muss zuvor das Paket {{ic|pacman-contrib}} installiert werden.
checkupdates
Da die Prüfung auf Updates mit ''Checkupdates'' ohne Root-Rechte durchgeführt werden kann, eignet sich der Befehl sehr gut zur Verwendung in [[Conky]] und Scripts.
 
 
== Pacman-Datenbank ==
Pacman speichert alle Paketinformationen in Form einer Vielzahl einzelner Dateien als logisch zusammengehörenden Datenbestand im Verzeichnis {{ic|/var/lib/pacman}}.
 
<b>Installierbare Pakete:</b><br/>
Die Paketinformationen der in der Pacman-Konfigurationsdatei {{ic|/etc/pacman.conf}} aktivierten Repositorien ([https://wiki.archlinux.de/title/Pacman#Konfiguration s.u.]) werden im Verzeichnis {{ic|/var/lib/pacman/sync}} gespeichert. Für diese Repos werden von Pacman Dateien mit folgenden Dateiendungen angelegt:
* {{ic|<Repo>.sig}} – PGP-Sicherheitssignatur; diese ist nur für inoffizielle Repos erforderlich und vorhanden (''Textdatei'')
* {{ic|<Repo>.files}} – Enthält die Textdateien {{ic|desc}} und {{ic|files}} mit den entsprechenden Informationen für jedes einzelne im Repo verfügbare Paket (''Gzip-Datei'')
* {{ic|<Repo>.db}} – Enthält die Datei {{ic|desc}} mit entsprechenden Informationen für jedes einzelne im Repo verfügbare Paket (''Gzip-Datei'')
Pacman-Befehle, die mit {{ic|-S}} oder {{ic|-F}} eingeleitet werden, beziehen sich auf diesen Bereich der Datenbank; er kann mit {{ic|-Sy}} aktualisiert und mit {{ic|-Syy}} neu generiert werden.
 
<b>Installierte Pakete:</b><br/>
Die Paketinformationen der im System vorhandenen Pakete befinden sich im Unterverzeichnis {{ic|/var/lib/pacman/local}}. Für alle installierten Pakete werden dort gesonderte Verzeichnisse mit Namen und Version des Paketes angelegt; folgende Dateien sind darin enthalten:
* {{ic|desc}} – Paketinformationen, welche mit dem Befehl {{ic|pacman -Qi <Paketname>}} abgerufen werden können (''Textdatei'')
* {{ic|files}} – Pfadangaben aller mit dem Paket installierten Dateien, die mit dem Befehl {{ic|pacman -Fl <Paketname>}} abgerufen werden können (''Textdatei'')
* {{ic|mtree}} – Zeit- und Größenangaben sowie Prüfsummen (Hashwerte) aller mit dem Paket installierten Dateien (''Gzip-Datei'')
Pacman-Befehle, die mit {{ic|-Q}} oder {{ic|-D}} eingeleitet werden, beziehen sich auf diesen Bereich der Datenbank. Bei Installationen und Deinstallationen erfolgt eine fortlaufende Aktualisierung. Dieser systembezogene Teil der Datenbank kann nicht neu generiert werden, da er Ausgangsreferenz der lokalen Paketverwaltung ist.


== Konfiguration ==
== Konfiguration ==
Die Einstellungen für Pacman sind in der Datei {{ic|/etc/pacman.conf}} gespeichert und können dort angepasst werden.
=== Allgemeine Einstellungen ===
#RootDir    = /
#DBPath      = /var/lib/pacman/
#CacheDir    = /var/cache/pacman/pkg/
#LogFile    = /var/log/pacman.log
#GPGDir      = /etc/pacman.d/gnupg/
HoldPkg    = pacman glibc
#XferCommand = /usr/bin/curl -C - -f %u > %o
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg  =
#IgnoreGroup =


Die Einstellungen zu '''Pacman''' werden in der Datei <code>/etc/pacman.conf</code> gespeichert. Es gibt zwei Hauptbereiche in der Datei:
#NoUpgrade  =
#NoExtract  =
* Pakete, die durch {{ic|HoldPkg}} markiert sind, müssen vor dem Entfernen nochmals bestätigt werden.
* Pakete, die mit {{ic|IgnorePkg}} markiert sind, werden vom Update völlig ausgenommen. Dies betrifft auch alle damit verbundenen Abhängigkeiten.
* Dateien, die durch {{ic|NoUpgrade}} markiert sind, werden beim Update nicht überschrieben. Pacman legt stattdessen eine neue Datei im Format {{ic|datei.pacnew}} an.
* Dateien, die durch {{ic|NoExtract}} markiert sind, werden bei der Installation oder einem Update nicht installiert.


=== Allgemeine Einstellungen ===
Seit der Version 4.1 unterstützt Pacman auch farbige Ausgaben. Dazu muss die Option {{ic|#Color}} auskommentiert werden.


Die allgemeinen Einstellungen finden sich in der [options]-Sektion
=== Repositorien ===
Offizielle Arch Linux-Pakete sind einem von sechs unterschiedlichen Repositorien zugeordnet:


Hier kann angegeben werden, welche Dateien nicht aktualisiert werden sollen. Das ist bei wichtigen Systemdateien nützlich.
* {{ic|[core]}} enthält grundlegende Programme, die zum Betrieb von Arch Linux unbedingt erforderlich sind.
* {{ic|[extra]}} enthält eine Vielzahl zusätzlicher, optionaler Anwendungen in der jeweils letzten stabilen Version. Hier liegen etwa auch die Pakete von [[KDE]] und [[GNOME]].
* {{ic|[testing]}} enthält neue Versionen, die noch nicht hinreichend getestet wurden – mit anderen Worten: Dinge, die etwas kaputt machen könnten.
* {{ic|[community]}} enthält eine Vielzahl zusätzlicher Programme, die ursprünglich nur als PKGBUILD im [[AUR]] zur Verfügung standen, nach einer Testphase jedoch als Binärpakete übernommen wurden. Dieses Repo wird von den [https://wiki.archlinux.org/index.php/Trusted_Users Trusted Users] betreut, nicht direkt von den Entwicklern. Die Verwendung gilt als sicher.
* {{ic|[multilib]}} enthält 32-Bit-Anwendungen, die auf x86_64-Systemen installiert werden sollen.
* {{ic|[multilib-testing]}} enthält noch nicht hinreichend getestete 32-Bit-Anwendungen, die auf x86_64-Systemen installiert werden sollen.


<pre>
==== Repos festlegen ====
NoUpgrade  = etc/passwd etc/group etc/shadow etc/sudoers
Die Konfiguration der {{ic|/etc/pacman.conf}} ist weitgehend selbsterklärend und erfolgt durch Ein- oder Auskommentierung bestehender Einträge sowie durch Hinzufügen zusätzlicher Einträge.
NoUpgrade  = etc/fstab etc/raidtab etc/ld.so.conf
NoUpgrade  = etc/lilo.conf boot/grub/menu.lst
IgnorePkg  = linux lirc lirc-utils
HoldPkg    = pacman glibc
</pre>


Dateien, die durch '''Noupgrade''' markiert sind, werden beim Update nicht überschrieben. Pacman legt stattdessen eine neue Datei im Format ''datei.pacnew'' an.
==== Inoffizielle Repos verwenden ====
Weitere Repos kann man beliebig anhängen, indem man Repo-Name und Server spezifiziert. Eine Liste inoffizieller Repos findet man im [http://wiki.archlinux.org/index.php/Unofficial_user_repositories engl. Wiki].


Pakete, die mit '''IgnorePkg''' markiert sind, werden vom Update völlig ausgenommen. Falls also von ''linux'' eine neue Version vorhanden wäre, würde das Paket im vorliegenden Beispiel nicht aktualisiert werden. Dies betrifft auch alle damit verbundenen Abhängigkeiten.
=== Spiegelserver ===
Die Spiegelserver, von welchen Pacman die Pakete zur Installation und für Updates herunterladen soll, werden in der Datei {{ic|/etc/pacman.d/mirrorlist}} gespeichert; ein Auschnitt als Beispiel:
{{bc|<nowiki>
## Germany
Server = http://mirror.23media.de/archlinux/$repo/os/$arch
Server = http://mirror.gnomus.de/$repo/os/$arch
#Server = https://mirror.bethselamin.de/$repo/os/$arch
#Server = http://ftp.fau.de/archlinux/$repo/os/$arch
</nowiki>}}
Die Wahl der Architektur und der Zugriff auf die Repos ist mit den Variablen {{ic|$repo}} und {{ic|$arch}} gekennzeichnet.


Pakete, die durch '''HoldPkg''' markiert sind, müssen vor dem Entfernen nochmals bestätigt werden.
Pacman greift vorrangig auf den ersten einkommentierten Server-Eintrag zu. Sollte der Server nicht erreichbar sein oder ein Paket dort nicht vorgefunden werden, wird auf den nächsten Server zugegriffen. Für eine optimale Zugänglichkeit vom eigenen Standort aus ist die Wahl heimischer Spiegelserver ratsam.


=== Repositorien und Spiegel-Server ===
Bei Veränderungen der weltweiten Spiegelserver werden von Pacman bei System-Updates automatisch neue Mirrorlisten als {{ic|/etc/pacman.d/mirrorlist.pacnew}} hinterlegt. Bei Bedarf kann man die darin enthaltenen deutschen Server auslesen:
awk '/Germany/{i=1;next}/^##/{i=0}i{print}' /etc/pacman.d/mirrorlist.pacnew


Offizielle Arch Linux-Pakete werden einem von vier verschiedenen Repositorien zugeordnet:
'''Tipp:''' Es reicht aus, nur wenige Spiegelserver in der Mirrorliste zu aktivieren und ggf. weitere, aber auskommentierte Server darunterstehend zu belassen. So kann der favorisierte Server – falls er sich nicht bewähren sollte – leicht durch einen anderen aus der auskommentierten „Vorratsliste“ ersetzt werden.
*[core] enthält grundlegende Programme, die zum Betrieb von Archlinux unbedingt erforderlich sind. Schnappschüsse aus diesem Repo dienen als Installations-CD.
*[extra] enthält eine Vielzahl zusätzlicher, optionaler Anwendungen in der jeweils letzten stabilen Version. Hier liegen etwa auch die Pakete von [[KDE]] und [[GNOME]], die nicht zwingend erforderlich sind.
*[testing] enthält neue Versionen, die noch nicht hinreichend getestet wurden - mit anderen Worten: Dinge, die etwas kaputt machen könnten.
*[community] enthält eine Vielzahl zusätzlicher Programme, die ursprünglich nur als PKGBUILD im [[AUR]] zur Verfügung standen, nach einer Testphase jedoch als Binärpakete übernommen wurden. Dieses Repo wird von den "Trusted Users" betreut, nicht direkt von den Entwicklern. Die Verwendung gilt als sicher.


Die zahlreichen, weltweit verstreuten Spiegel des Hauptservers ftp.archlinux.org folgen alle dieser Struktur. Pacman legt für jedes Repo eine Standard-Liste der zur Verfügung stehenden Spiegel an. Diese nach Ländern und Kontinenten geordneten Listen werden in der Datei <code>/etc/pacman.d/mirrorlist</code> gespeichert. Da der Zugang zum Hauptserver inzwischen beschränkt werden musste, sollte man unbedingt auf einen Spiegel zurückgreifen. Bevorzugte Spiegel-Server kann man in der Datei <code>/etc/pacman.d/mirrorlist</code> festlegen.
==== Optimale Spiegelserver ====
Die Spiegelserver unterscheiden sich in ihrer Aktualität und Geschwindigkeit. Relevante Messwerte sind:
* '''Completion:''' Die Anzahl erfolgreicher Verbindungen bei Tests des Spiegelservers in Prozent; bei weniger als 100% könnte der Server unzuverlässig sein
* '''Delay:''' Durchschnittliche Verzögerungdauer der letzten Synchronisation, diese sollte unter einer Stunde liegen
* '''Duration:''' Durchschnittliche Verbindungs- und Abbrufzeit in Sekunden(bruchteilen); ein hoher Wert kann auf eine Überlastung des Servers hindeuten
* '''Mirror Score:''' Eine grobe Berechnung des Rankings, das sich aus den vorgenannten Werten ergibt


Um die Reaktionszeiten der einzelnen Server zu testen, kann man das Python-Skript '''rankmirrors''' verwenden
Eine vollständige Übersicht an Messergebnissen findet man auf der Seite [https://www.archlinux.org/mirrors/status Mirror-Status].<br>
  rankmirrors /etc/pacman.d/mirrorlist
Da die dort gelisteten Messergebnisse nicht dem eigenen Standort entsprechen, ist es sinnvoll, selbst Messungen durchzuführen. Das Paket {{Paket|pacman-contrib}} stellt hierfür das Tool ''Rankmirrors'' zur Verfügung. Mit folgendem Befehl können die Antwortzeiten der in der Mirrorliste einkommentierten Server geprüft werden:
(dazu muss python installiert sein)
  rankmirrors -n 0 -t /etc/pacman.d/mirrorlist
Wenn kein zwingender Grund vorliegt, die Reaktionszeit weit entfernter Server zu testen, kann man vorher die Spiegel auf allen Kontinenten außer dem eigenen bedenkenlos aus den Standardlisten löschen
Falls man differenzierte Vergleichsergebnisse wie z.B. einen „Mirror Score“ wünscht, kann man das Python-Script [[Reflector]] verwenden.
Eine Liste von 10&nbsp;deutschen Spiegelservern mit der schnellsten Downloadrate erhält man z.B. mit diesem Befehl:
reflector -c Germany -p http -p https --sort rate -n 10
Fügt man am Ende des Befehles die Option {{ic|--info}} hinzu, werden zusätzlich die auf der Seite „Mirror-Status“ verfügbaren Details angezeigt.


==== Den richtigen Spiegel finden ====
==== Mirrorliste aktualisieren ====
Solange die favorisierten Spiegelserver gut und verlässlich funktionieren, sind Aktualisierungen der Mirrorliste nicht erforderlich. Falls man die Datei {{ic|/etc/pacman.d/mirrorlist}} jedoch auf Basis möglichst optimaler Messwerte aktualisieren möchte, bieten sich die vorgenannten Verfahren an.


Spiegel-Server unterscheiden sich im Hinblick auf ihre Aktualität (durch unterschiedliche Synchronisation-Raten mit dem Hauptserver), sowie im Hinblick auf ihre Zugänglichkeit vom eigenen Standort aus.<br>
* '''Rankmirrors:''' Man kann die Antwortzeiten der deutschen Spiegelserver aus der Datei {{ic|mirrorlist.pacnew}} messen, aus den Ergebnissen z.B. die 15&nbsp;schnellsten Server extrahieren und von diesen wiederum die 4&nbsp;besten Spiegelserver aktivieren – diese gründliche Messung dauert einen Moment:
Hier sind die Spiegel-Server für den deutschsprachigen Raum. Diese Liste für die jeweilige Architektur an oberste Stelle in der /etc/pacman.d/mirrorlist einkopieren und dann einen oder mehrere durch Entfernen des Kommentarzeichens(#) aktivieren. Siehe auch den Tipp im nächsten Kapitel.
awk '/Germany/{i=1;next}/^##/{i=0}i{print}' /etc/pacman.d/mirrorlist.pacnew | sed 's/^#//' > /tmp/mirror && rankmirrors -n 15 /tmp/mirror | sed '2,5!s/^S/#S/'


<pre><nowiki>
* '''Reflector:''' Man kann die deutschen Spiegelserver online abrufen, z.B. eine Kurzmessung der Downloadrate durchführen, 15&nbsp;Server mit dem schnellsten Datendurchsatz extrahieren und von diesen die 4&nbsp;besten Spiegelserver aktivieren:
# für i686
reflector -c Germany -p http -p https --sort rate -n 15 | sed '11,14!s/^S/#S/'
#
Falls man eine Sortierung auf Basis des bei [https://www.archlinux.org/mirrors/status Mirror-Status] abgerufenen „Mirror Score“ vornehmen möchte, kann man die Anweisung {{ic|--sort rate}} durch {{ic|--sort score}} ersetzen.
#Server = ftp://ftp5.gwdg.de/pub/linux/archlinux/$repo/os/i686
#Server = ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/$repo/os/i686
#Server = ftp://ftp.tu-chemnitz.de/pub/linux/archlinux/$repo/os/i686
#Server = http://ftp5.gwdg.de/pub/linux/archlinux/$repo/os/i686
#Server = ftp://ftp.uni-kl.de/pub/linux/archlinux/$repo/os/i686
#Server = http://ftp.uni-kl.de/pub/linux/archlinux/$repo/os/i686
#Server = ftp://ftp.uni-bayreuth.de/pub/linux/archlinux/$repo/os/i686
#Server = http://ftp.uni-bayreuth.de/linux/archlinux/$repo/os/i686
#Server = ftp://ftp.archlinuxppc.org/i686/$repo/os/i686
# - Österreich
#Server = ftp://gd.tuwien.ac.at/opsys/linux/archlinux/$repo/os/i686
# - Belgien
#Server = ftp://ftp.belnet.be/mirror/archlinux.org/$repo/os/i686
# - Schweiz
#Server = ftp://archlinux.puzzle.ch/$repo/os/i686
</nowiki></pre>
<pre><nowiki>
# für x86_64
#
#Server = ftp://ftp5.gwdg.de/pub/linux/archlinux/$repo/os/x86_64
#Server = ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/$repo/os/x86_64
#Server = ftp://ftp.tu-chemnitz.de/pub/linux/archlinux/$repo/os/x86_64
#Server = http://ftp5.gwdg.de/pub/linux/archlinux/$repo/os/x86_64
#Server = ftp://ftp.uni-kl.de/pub/linux/archlinux/$repo/os/x86_64
#Server = http://ftp.uni-kl.de/pub/linux/archlinux/$repo/os/x86_64
#Server = ftp://ftp.uni-bayreuth.de/pub/linux/archlinux/$repo/os/x86_64
#Server = http://ftp.uni-bayreuth.de/linux/archlinux/$repo/os/x86_64
#Server = ftp://ftp.archlinuxppc.org/i686/$repo/os/x86_64
# - Österreich
#Server = ftp://gd.tuwien.ac.at/opsys/linux/archlinux/$repo/os/x86_64
# - Belgien
#Server = ftp://ftp.belnet.be/mirror/archlinux.org/$repo/os/x86_64
# - Schweiz
#Server = ftp://archlinux.puzzle.ch/$repo/os/x86_64
</nowiki></pre>


==== Repos festlegen ====
{{hinweis|Beide oben angeführten Befehle geben die Resultate im Terminal aus. Um die vorhandene Mirrorliste zu ersetzten, kann als Ausgabeumleitung '''{{ic|>&nbsp;/etc/pacman.d/mirrorlist}}''' angefügt werden.}}


Die Konfiguration der zweiten Sektion von <code>/etc/pacman.conf</code> durch Auskommentierung oder zusätzliche Einträge ist weitgehend selbsterklärend:
==== Mirrorliste erweitern ====
Eine weitere Möglichkeit besteht darin, einen favorisierten Spiegelserver in der Pacman-Konfigurationsdatei {{ic|/etc/pacman.conf}} vorzuschalten, zum Beispiel:
  [core]
  [core]
  # Add your preferred servers here, they will be used first
  '''Server = <nowiki>http://ftp-stud.hs-esslingen.de/pub/Mirrors/archlinux/$repo/os/$arch</nowiki>'''
  Include = /etc/pacman.d/mirrorlist
  Include = /etc/pacman.d/mirrorlist


#[testing]
{{hinweis|Wird ein Spiegelserver in {{ic|/etc/pacman.conf}} eingetragen, sollte unbedingt der gleiche Eintrag bei allen offiziellen Repos erfolgen ({{ic|[core]}}, {{ic|[extra]}}, {{ic|[community]}}, {{ic|[multilib]}}). Ansonsten besteht die Gefahr, dass aufgrund unterschiedlicher Aktualität der Server versucht wird, nicht kompatible Paketversionen zusammenzuführen.}}
# Add your preferred servers here, they will be used first
 
#Include = /etc/pacman.d/mirrorlist
== Keine partiellen Upgrades ==
deaktiviert das Repo [testing].
Arch Linux wird als ''Rolling-Release'' fortlaufend aktualisiert. Sobald neue Versionen von Programmbibliotheken {{wikipedia|Programmbibliothek#Unixartige_Systeme|<nowiki>[1]</nowiki>}} in den Repositorien erscheinen, werden vom Arch-Entwicklungsteam alle Pakete, die sich auf diese Bibliothek beziehen, neu (auf)gebaut. Auf diese Weise wird sicher gestellt, dass alle Pakete aus den offiziellen Repos mit der veränderten Schnittstelle der neuen Version funktionieren.
 
Sollte man fälschlicherweise nur ein einzelnes Paket aktualisieren, werden mit diesem Paket bei Bedarf neue Versionen von Programmbibliotheken im System integriert. Andere bereits installierte und von einem Upgrade ausgenommene Pakete blieben jedoch weiterhin von älteren Versionen der Bibliotheken abhängig und kämen mit den veränderten Schnittstellen neuerer Versionen nicht zurecht. Aus diesem Grunde werden partielle Upgrades nicht unterstützt.


'''Tipp:''' Um sich das immer wiederkehrende Editieren der /etc/pacman.d/mirrorlist zu ersparen wenn diese durch ein pacman Update erneuert wird (bzw. eine mirrorlist.pacnew estellt wird) kannst du folgendes tun:
Bevor ein neues Paket installiert wird, sollte immer zunächst mit {{ic|pacman -Syu}} eine Aktualisierung des kompletten Systems durchgeführt werden. Vor dem gleichen Hintergund sollte man auch bei Ausnahmen unter {{ic|IgnorePkg}} und {{ic|IgnoreGroup}} sehr umsichtig verfahren (s. [https://wiki.archlinux.de/title/Pacman#Konfiguration Konfiguration]).
Erstelle dir eine Datei /etc/pacman.d/mymirrors und füge darin deine bevorzugten Spiegelserver ein. Dann ergänzt du die /etc/pacman.conf für die einzelnen Repos so:
 
  [core]
Pakete, die nicht aus den offiziellen Repositorien installiert worden sind (z.B. aus dem [[AUR]]) und sich auf Bibliotheken aus den Repos beziehen, müssen im Falle einer Änderung von {{ic|so}}-Namen (z.B. {{ic|libfoo.so.1}} → {{ic|libfoo.so.1.2}}) auf Anwenderseite neu gebaut werden.
  # Add your preferred servers here, they will be used first
 
Include = /etc/pacman.d/mymirrors
{{hinweis|Probleme, die auf Versionsunterschiede von Programmbibliotheken zurückzuführen sind, sollte man nicht durch „''Symlinking''“ verschlimmbessern. In der Regel lassen sich solche Probleme mit einem '{{ic|pacman -Syu}}' beheben.}}
  Include = /etc/pacman.d/mirrorlist
 
Somit bleibt die Original-Mirrorlist immer auf dem aktuellen Stand und du musst evtl. notwendige Änderungen nur in deiner Datei mymirrors vornehmen.
==Graphische Oberflächen==
Pacman wurde als reines CLI-Programm konzipiert, und greift grundsätzlich nur auf installierbare Pakete aus den offiziellen Repositorien zurück, nicht aber aber auf Skripte (PKGBUILDs) aus dem [[AUR]]. Rund herum enstanden jedoch im Laufe der Jahre zahlreiche Wrapper, GUIs, oder Programme, die Dateien aus den offiziellen Repositorien und dem AUR gleichzeitig aktualisieren können. Diese sind im Artikel [[Graphische Paketmanager]] ausführlich beschrieben. Die dort gesetzten Warn-Hinweise sollten unbedingt beachtet werden.
 
==Hilfe==
=== Keine Verbindung zu einem Mirror===
Aufgrund einer langsamen Internetverbindung oder nicht optimaler Pacman-Konfiguration kann es vorkommen, dass der Verbindungsaufbau zu einem Spiegelserver zu lange dauert und es so zu einem {{wikipedia|Timeout}} kommt. Um dieses Problem zu beheben, kann man – wie im Abschnitt [https://wiki.archlinux.de/title/Pacman#Optimale_Spiegelserver Optimale Spiegelserver] beschrieben – den schnellsten Server suchen und verwenden. Sollte auch das nicht zu gewünschtem Erfolg führen, kann versucht werden, einen alternativen Downloader einzusetzen. Dazu muss man die Datei {{ic|/etc/pacman.conf}} bearbeiten und einen der beiden Einträge durch Entfernen der Raute {{ic|#}} auskommentieren:
{{bc|<nowiki>
  #XferCommand = /usr/bin/{{Paket|curl}} -C - -f %u > %o
  #XferCommand = /usr/bin/{{Paket|wget}} --passive-ftp -c -O %o %u
</nowiki>}}
 
=== Bandbreite beschränken ===
Um die Download-Bandbreite zu beschränken, kann in in der Konfigurationsdatei {{ic|/etc/pacman.conf}} innerhalb der Zeile …
  XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
… dem ''wget''-Befehl die entsprechende Option hinzugefügt werden:
XferCommand = /usr/bin/wget --passive-ftp '''--limit-rate=40k''' -c -O %o %u
 
=== Pacman aus Versehen deinstalliert ===
Wie kann Pacman wiederhergestellt werden, wenn es aus Versehen deinstalliert wurde?


==== Inoffizielle/lokale Repositorien verwenden ====
* <span style="font-weight:bold;font-size:1.05em"> Manuelle Variante</span>
cd /
bsdtar -x -f /var/cache/pacman/pkg/pacman-*.pkg.tar.zst


Weitere Repos kann man beliebig anhängen, indem man Repo-Name und Server spezifiziert. Eine Liste inoffizieller Repositorien findet sich im [http://wiki.archlinux.org/index.php/Unofficial_user_repositories engl. Wiki]. Siehe auch [[Eigene Repos]].
Das Sternchen(*) entspricht dem Paket mit der höchsten Versionsnummer, welches hoffentlich noch im o.g. Verzeichnis vorhanden ist.
Danach Pacman mittels des „neuen“ Pacman wieder installieren, damit der Datenbankeintrag für Pacman selbst wieder angelegt wird.
pacman -S pacman


=== Download beschränken ===
* <span style="font-weight:bold;font-size:1.05em"> Per Installationsmedium</span>


Um die Download-Geschwindigkeit zu beschränken kann in der Zeile
Vom Installationsmedium booten und die deutsche Tastaturbelegung {{ic|loadkeys de}} wählen. Anschließend Partitionen einhängen:
  XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
Die Root-Partition nach {{ic|/mnt}} einhängen (Verzeichnis {{ic|/etc}} sollte darin enthalten sein)
dem wget-Befehl die entsprechende Option hinzugefügt werden:
Für weitere Partitionen unterhalb {{ic|/mnt}} Ordner anlegen und entsprechend einhängen (bspw. {{ic|/mnt/usr}}). Eine Neuinstallation von Pacman kann nun mit diesem Befehl erfolgen:
  XferCommand = /usr/bin/wget --passive-ftp --limit-rate 40K -c -O %o %u
pacstrap /mnt pacman
(würde z.B. auf 40K/s beschränken).


== Weitere Informationen ==
== Weitere Informationen ==
... findet man natürlich in den [[manpages]]:
*[https://www.archlinux.org/pacman/pacman.8.html man pacman]
*[http://www.archlinux.org/pacman/pacman.8.html man pacman]
*[https://www.archlinux.org/pacman/pacman.conf.5.html man pacman.conf]
*[http://www.archlinux.org/pacman/PKGBUILD.5.html man PKGBUILD]
*[https://www.archlinux.org/pacman/repo-add.8.html man repo-add]
*[http://www.archlinux.org/pacman/libalpm.3.html man libalpm]
*[http://www.archlinux.org/pacman/pacman.conf.5.html man pacman.conf]
*[http://www.archlinux.org/pacman/makepkg.8.html man makepkg]
*[http://www.archlinux.org/pacman/makepkg.conf.5.html man makepkg.conf]
*[http://www.archlinux.org/pacman/repo-add.8.html man repo-add]


== Siehe auch ==
== Siehe auch ==
* [[Pacnew- und Pacsave-Dateien]]
* [[Pacnew- und Pacsave-Dateien]]
* [[Pacman beschleunigen]]
* [[Pacman beschleunigen]]
* [[Farbige Pacman-Ausgaben]]
* [[Pacman-Datenbank reparieren]]
* [[Pacman-key]]
* [[Pacman-key]]
 
* [[Paketliste archivieren]]
{| style="border:1px solid #8888aa; background-color:#f7f8ff;padding:5px;font-size:95%;"
* [[Eigene Repositories erstellen]]
|
* [[Pacman-Tipps]]
Retrieved from "http://wiki.archlinux.org/index.php/Pacman_(Deutsch)"
* [[Rosettastein Paketverwaltung ]]
Published under GNU Free Documentation License 1.2.
|}


[[Kategorie:Paketverwaltung]]
[[Kategorie:Paketverwaltung]]
[[Kategorie:Systemverwaltung]]
[[Kategorie:Befehle]]
[[en:Pacman]]
[[en:Pacman]]

Aktuelle Version vom 23. August 2021, 11:16 Uhr

Der zentrale Paketmanager Pacman ist eine der größten Stärken von Arch Linux. Er verwaltet einfache Binärpakete im Format .pkg.tar.zst (bzw. .pkg.tar.xz und .pkg.tar.gz bei älteren Paketen), die entweder aus offiziellen oder inoffiziellen Repositorys stammen, oder vom Benutzer selbst über das Arch Build System (ABS) erstellt wurden. Auch selbst kompilierte Pakete sollten immer über Pacman installiert werden, damit sie in der zentralen Datenbank erfasst werden.

Mittels Pacman wird das System aktuell gehalten, indem die Paketlisten mit einem Server synchronisiert werden. Durch dieses Server/Client-Modell ist es möglich, Pakete durch einfache Befehle komplett mit allen Abhängigkeiten herunterzuladen, zu installieren bzw. zu aktualisieren. Getreu dem KISS-Prinzip wurde Pacman als einfaches Kommandozeilen-Werkzeug entwickelt. Inzwischen stehen auch grafische Benutzeroberflächen zur Verfügung, die jedoch offiziell nicht unterstützt werden.

Installation

Pacman ist bereits Bestandteil jeder Arch Linux-Installation.

Die wichtigsten Pacman-Befehle

Für neue Arch Linux-AnwenderInnen seien zunächst die wichtigsten Pacman-Befehle angeführt.

Befehl Beschreibung
pacman -Syu Führt eine komplette System-Aktualisierung aus
pacman -S <Paket> Installiert ein Paket
pacman -R <Paket> Deinstalliert ein Paket
pacman -U <Paket-Dateiname> Installation eines Paketes aus einer lokalen Datei (z.B. für ein Downgrade oder zur Installation selbst gebauter Pakete)

Diese Befehle sind der Grundstock, um ein Arch-System einrichten und auf aktuellem Stand halten zu können.

Die Pacman-Syntax

Der Aufruf der Hauptoptionen wird mit einem Minuszeichen eingeleitet und beginnt immer mit einem Grossbuchstaben.

  • S – Synchronisation der lokalen Paketdatenbank mit den Repositorien, welche in der Datei /etc/pacman.conf aktiviert sind (Sync)
  • Q – Bezieht sich immer auf die lokale Paketdatenbank des Systems (Query)
  • R – Dient zum Entfernen von installierten Paketen (Remove)
  • D – Bearbeitung der lokalen Paketdatenbank (Database)
  • U – Installiert Pakete aus einem lokalen Verzeichnis (Upgrade)
  • F – Sucht das Paket, welches eine Datei beinhaltet (File)

Die vorangestellte Hauptoption kann mit weiteren Optionen in Kleinbuchstaben erweitert und spezifiziert werden, beispielsweise:

  • s – Bewirkt eine Suche. Bei -Ss wird ein Paketname in der Paketdatenbank gesucht, Bei -Rs werden die jeweils abhängigen Pakete gesucht und mit entfernt
  • y – Bewirkt eine Aktualisierung der Paketdatenbank (falls es tatsächlich Änderungen gibt)
  • yy – Erzwingt die Aktualisierung der Paketdatenbank auch dann, wenn keine Updates vorhanden sind

Synchronisation und Installation von Paketen

Befehl Beschreibung
pacman -Syu Führt eine komplette System-Aktualisierung aus
pacman -S <Paket1 Paket2> Eines oder mehrere Pakete installieren oder aktualisieren
pacman -Sy Lokale Datenbank aktualisieren
pacman -Su Alle installierten Pakete aktualisieren
pacman -Syy Lokale Datenbank komplett neu aufbauen und aktualisieren
pacman -Syuu Alle installierten Pakete downgraden (von Testing nach Core/Extra oder von Community-Testing nach Community)
pacman -S testing/<Paket> Paket aus einem spezifischen Repo (hier: testing) installieren
pacman -Sw <Paket> Paket herunterladen, ohne es zu installieren

Informationen zu installierbaren Paketen

Befehl Beschreibung
pacman -Ss <Paket> Sucht nach installierbaren Paketen. Es reicht ein Teil des Paketnamens oder der Paketbeschreibung
pacman -Sg Sucht nach installierbaren Paketgruppen
pacman -Sg <Paketgruppe> Zeigt den Inhalt einer Paketgruppe
pacman -Si <Paket> Informationen zu (noch) nicht installierten Paketen anzeigen

Verwaltung lokaler Pakete

Befehl Beschreibung
pacman -U <Paket-Dateiname> Ein lokales Paket installieren (nicht aus einem Repo)
pacman -D --asexplicit <Paket> Status eines installierten Paketes auf „Ausdrücklich installiert“ setzen
pacman -D --asdeps <Paket> Status eines installierten Paketes auf „Installiert als Abhängigkeit“ setzen
pacman -Scc Leert das lokale Paketarchiv von Pacman vollständig (/var/cache/pacman/pkg)
pacman -Sc Löscht veraltete Pakete aus /var/cache/pacman/pkg sowie ungenutzte Repositorien aus /var/lib/pacman/sync. Vorsicht, behalten werden nur aktuell installierte Versionen – Vorversionen für ein Paket-Downgrade sind dann nicht mehr vorhanden.

Pakete entfernen

Befehl Beschreibung
pacman -R <Paketname> Deinstallation eines oder mehrerer Pakete (aus AUR oder Repos)
pacman -Rs <Paketname> Wie oben, zusätzlich werden alle abhängige Pakete gesucht und mit entfernt, falls diese nicht von einer anderen Anwendung gebraucht werden
pacman -Rsc <Paketname> Wie oben. Abhängigkeiten werden kaskadierend entfernt
pacman -Rscn <Paketname> Wie oben. Die Konfigurationsdateien der Anwendung werden mit entfernt
pacman -Rdd <Paket> Deinstallation eines Paketes ohne Prüfung bestehender Paketabhängigkeiten. Vorsicht, hierdurch kann die Konsistenz und Funktionstüchtigkeit der Systeminstallation beeinträchtigt werden!
pacman -Rss <Paket> Paket mit allen benötigten Abhängigkeiten und deren Abhängigkeiten entfernen

Abfragen der lokalen Paketdatenbank

Befehl Beschreibung
pacman -Q Zeigt alle installierten Pakete inklusive Versionsnummer auf dem System an
pacman -Qi <Paket> Informationen zu bereits installiertem Paket anzeigen
pacman -Qs <Suchmuster> Installierte Pakete nach Name oder einem Begriff in der Beschreibung durchsuchen.
pacman -Qdt Verwaiste Pakete anzeigen, die als Abhängigkeiten installiert wurden, aber nicht mehr von anderen Paketen benötigt werden
pacman -Qet Pakete anzeigen, die ausdrücklich installiert wurden, aber nicht von anderen als Abhängigkeit benötigt werden
pacman -Ql <Paket> Zeigt alle installierten Dateien des Pakets im System
pacman -Qm Pakete anzeigen, die sich in keinem aktivierten Repo laut /etc/pacman.conf befinden
pacman -Qo <Pfad zur Datei> Zeigt das Paket an, welches die gesuchte Datei enthält
pacman -Sy && pacman -Qu Aktualisiert die lokale Paketdatenbank und zeigt verfügbare Updates an
pacman -Qk | grep warning Überprüft alle Pakete auf fehlende Dateien und schränkt die Ausgabe auf Problempakete ein

Paketdateien suchen

Befehl Beschreibung
pacman -Fy Lokale Datenbank aktualisieren (wie -Sy)
pacman -Fyy Lokale Datenbank neu aufbauen und aktualisieren (wie -Syy)
pacman -F <Datei> Paket suchen das die Datei enthält
pacman -Fx <Regex> Wie -F, aber Suche mit regulären Ausdrücken (hilfreich, falls der vollständige Dateiname unbekannt ist)
pacman -Fl <Paket> Alle Dateien des Paketes anzeigen

Es können auch mehrere Befehlsaufrufe kombiniert werden; hier z.B. zur vorhergehenden Prüfung und anschließenden Deinstallation aller verwaisten Pakete:

pacman -Qdtq
pacman -Rsn $(pacman -Qdtq)

Paccache

Paccache ist ein Werkzeug zur Bereinigung des Pacman-Cache /var/cache/pacman/pkg. Archivierte Pakete können hiermit differenzierter als mit pacman -Scc bereinigt werden.

Um den Befehl nutzen zu können muss zuvor das Paket pacman-contrib installiert werden.

Zur Bereinigung des Paket-Cache kann man beispielsweise so vorgehen:

du -sh /var/cache/pacman/pkg   # Belegung des Cache-Speicherplatzes prüfen
paccache -h                    # Befehlsübersicht
paccache -dk2                  # Testdurchlauf; Wieviel Platz kann eingespart werden?
paccache -vrk2                 # Entfernt Pakete aus dem Cache, behält die jüngsten 2 Versionen
paccache -ruk0                 # Alle Pakete aus dem Cache entfernen, die nicht (mehr) installiert sind

Zur automatischen Bereinugung gibt es einen Systemd Timer. Bei aktiviertem Timer wird der Cache wöchentlich mit paccache -r bereinigt.

systemctl enable paccache.timer

Checkupdates

Mit Checkupdates lässt sich prüfen, ob Aktualisierungen für installierte Pakete verfügbar sind, ohne eine komplette System-Aktualisierung (pacman -Syu) durchzuführen.

Um den Befehl nutzen zu können muss zuvor das Paket pacman-contrib installiert werden.

checkupdates

Da die Prüfung auf Updates mit Checkupdates ohne Root-Rechte durchgeführt werden kann, eignet sich der Befehl sehr gut zur Verwendung in Conky und Scripts.


Pacman-Datenbank

Pacman speichert alle Paketinformationen in Form einer Vielzahl einzelner Dateien als logisch zusammengehörenden Datenbestand im Verzeichnis /var/lib/pacman.

Installierbare Pakete:
Die Paketinformationen der in der Pacman-Konfigurationsdatei /etc/pacman.conf aktivierten Repositorien (s.u.) werden im Verzeichnis /var/lib/pacman/sync gespeichert. Für diese Repos werden von Pacman Dateien mit folgenden Dateiendungen angelegt:

  • <Repo>.sig – PGP-Sicherheitssignatur; diese ist nur für inoffizielle Repos erforderlich und vorhanden (Textdatei)
  • <Repo>.files – Enthält die Textdateien desc und files mit den entsprechenden Informationen für jedes einzelne im Repo verfügbare Paket (Gzip-Datei)
  • <Repo>.db – Enthält die Datei desc mit entsprechenden Informationen für jedes einzelne im Repo verfügbare Paket (Gzip-Datei)

Pacman-Befehle, die mit -S oder -F eingeleitet werden, beziehen sich auf diesen Bereich der Datenbank; er kann mit -Sy aktualisiert und mit -Syy neu generiert werden.

Installierte Pakete:
Die Paketinformationen der im System vorhandenen Pakete befinden sich im Unterverzeichnis /var/lib/pacman/local. Für alle installierten Pakete werden dort gesonderte Verzeichnisse mit Namen und Version des Paketes angelegt; folgende Dateien sind darin enthalten:

  • desc – Paketinformationen, welche mit dem Befehl pacman -Qi <Paketname> abgerufen werden können (Textdatei)
  • files – Pfadangaben aller mit dem Paket installierten Dateien, die mit dem Befehl pacman -Fl <Paketname> abgerufen werden können (Textdatei)
  • mtree – Zeit- und Größenangaben sowie Prüfsummen (Hashwerte) aller mit dem Paket installierten Dateien (Gzip-Datei)

Pacman-Befehle, die mit -Q oder -D eingeleitet werden, beziehen sich auf diesen Bereich der Datenbank. Bei Installationen und Deinstallationen erfolgt eine fortlaufende Aktualisierung. Dieser systembezogene Teil der Datenbank kann nicht neu generiert werden, da er Ausgangsreferenz der lokalen Paketverwaltung ist.

Konfiguration

Die Einstellungen für Pacman sind in der Datei /etc/pacman.conf gespeichert und können dort angepasst werden.

Allgemeine Einstellungen

#RootDir     = /
#DBPath      = /var/lib/pacman/
#CacheDir    = /var/cache/pacman/pkg/
#LogFile     = /var/log/pacman.log
#GPGDir      = /etc/pacman.d/gnupg/
HoldPkg     = pacman glibc
#XferCommand = /usr/bin/curl -C - -f %u > %o
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg   =
#IgnoreGroup =
#NoUpgrade   =
#NoExtract   =
  • Pakete, die durch HoldPkg markiert sind, müssen vor dem Entfernen nochmals bestätigt werden.
  • Pakete, die mit IgnorePkg markiert sind, werden vom Update völlig ausgenommen. Dies betrifft auch alle damit verbundenen Abhängigkeiten.
  • Dateien, die durch NoUpgrade markiert sind, werden beim Update nicht überschrieben. Pacman legt stattdessen eine neue Datei im Format datei.pacnew an.
  • Dateien, die durch NoExtract markiert sind, werden bei der Installation oder einem Update nicht installiert.

Seit der Version 4.1 unterstützt Pacman auch farbige Ausgaben. Dazu muss die Option #Color auskommentiert werden.

Repositorien

Offizielle Arch Linux-Pakete sind einem von sechs unterschiedlichen Repositorien zugeordnet:

  • [core] enthält grundlegende Programme, die zum Betrieb von Arch Linux unbedingt erforderlich sind.
  • [extra] enthält eine Vielzahl zusätzlicher, optionaler Anwendungen in der jeweils letzten stabilen Version. Hier liegen etwa auch die Pakete von KDE und GNOME.
  • [testing] enthält neue Versionen, die noch nicht hinreichend getestet wurden – mit anderen Worten: Dinge, die etwas kaputt machen könnten.
  • [community] enthält eine Vielzahl zusätzlicher Programme, die ursprünglich nur als PKGBUILD im AUR zur Verfügung standen, nach einer Testphase jedoch als Binärpakete übernommen wurden. Dieses Repo wird von den Trusted Users betreut, nicht direkt von den Entwicklern. Die Verwendung gilt als sicher.
  • [multilib] enthält 32-Bit-Anwendungen, die auf x86_64-Systemen installiert werden sollen.
  • [multilib-testing] enthält noch nicht hinreichend getestete 32-Bit-Anwendungen, die auf x86_64-Systemen installiert werden sollen.

Repos festlegen

Die Konfiguration der /etc/pacman.conf ist weitgehend selbsterklärend und erfolgt durch Ein- oder Auskommentierung bestehender Einträge sowie durch Hinzufügen zusätzlicher Einträge.

Inoffizielle Repos verwenden

Weitere Repos kann man beliebig anhängen, indem man Repo-Name und Server spezifiziert. Eine Liste inoffizieller Repos findet man im engl. Wiki.

Spiegelserver

Die Spiegelserver, von welchen Pacman die Pakete zur Installation und für Updates herunterladen soll, werden in der Datei /etc/pacman.d/mirrorlist gespeichert; ein Auschnitt als Beispiel:

## Germany
Server = http://mirror.23media.de/archlinux/$repo/os/$arch
Server = http://mirror.gnomus.de/$repo/os/$arch
#Server = https://mirror.bethselamin.de/$repo/os/$arch
#Server = http://ftp.fau.de/archlinux/$repo/os/$arch

Die Wahl der Architektur und der Zugriff auf die Repos ist mit den Variablen $repo und $arch gekennzeichnet.

Pacman greift vorrangig auf den ersten einkommentierten Server-Eintrag zu. Sollte der Server nicht erreichbar sein oder ein Paket dort nicht vorgefunden werden, wird auf den nächsten Server zugegriffen. Für eine optimale Zugänglichkeit vom eigenen Standort aus ist die Wahl heimischer Spiegelserver ratsam.

Bei Veränderungen der weltweiten Spiegelserver werden von Pacman bei System-Updates automatisch neue Mirrorlisten als /etc/pacman.d/mirrorlist.pacnew hinterlegt. Bei Bedarf kann man die darin enthaltenen deutschen Server auslesen:

awk '/Germany/{i=1;next}/^##/{i=0}i{print}' /etc/pacman.d/mirrorlist.pacnew

Tipp: Es reicht aus, nur wenige Spiegelserver in der Mirrorliste zu aktivieren und ggf. weitere, aber auskommentierte Server darunterstehend zu belassen. So kann der favorisierte Server – falls er sich nicht bewähren sollte – leicht durch einen anderen aus der auskommentierten „Vorratsliste“ ersetzt werden.

Optimale Spiegelserver

Die Spiegelserver unterscheiden sich in ihrer Aktualität und Geschwindigkeit. Relevante Messwerte sind:

  • Completion: Die Anzahl erfolgreicher Verbindungen bei Tests des Spiegelservers in Prozent; bei weniger als 100% könnte der Server unzuverlässig sein
  • Delay: Durchschnittliche Verzögerungdauer der letzten Synchronisation, diese sollte unter einer Stunde liegen
  • Duration: Durchschnittliche Verbindungs- und Abbrufzeit in Sekunden(bruchteilen); ein hoher Wert kann auf eine Überlastung des Servers hindeuten
  • Mirror Score: Eine grobe Berechnung des Rankings, das sich aus den vorgenannten Werten ergibt

Eine vollständige Übersicht an Messergebnissen findet man auf der Seite Mirror-Status.
Da die dort gelisteten Messergebnisse nicht dem eigenen Standort entsprechen, ist es sinnvoll, selbst Messungen durchzuführen. Das Paket pacman-contrib stellt hierfür das Tool Rankmirrors zur Verfügung. Mit folgendem Befehl können die Antwortzeiten der in der Mirrorliste einkommentierten Server geprüft werden:

rankmirrors -n 0 -t /etc/pacman.d/mirrorlist

Falls man differenzierte Vergleichsergebnisse wie z.B. einen „Mirror Score“ wünscht, kann man das Python-Script Reflector verwenden. Eine Liste von 10 deutschen Spiegelservern mit der schnellsten Downloadrate erhält man z.B. mit diesem Befehl:

reflector -c Germany -p http -p https --sort rate -n 10

Fügt man am Ende des Befehles die Option --info hinzu, werden zusätzlich die auf der Seite „Mirror-Status“ verfügbaren Details angezeigt.

Mirrorliste aktualisieren

Solange die favorisierten Spiegelserver gut und verlässlich funktionieren, sind Aktualisierungen der Mirrorliste nicht erforderlich. Falls man die Datei /etc/pacman.d/mirrorlist jedoch auf Basis möglichst optimaler Messwerte aktualisieren möchte, bieten sich die vorgenannten Verfahren an.

  • Rankmirrors: Man kann die Antwortzeiten der deutschen Spiegelserver aus der Datei mirrorlist.pacnew messen, aus den Ergebnissen z.B. die 15 schnellsten Server extrahieren und von diesen wiederum die 4 besten Spiegelserver aktivieren – diese gründliche Messung dauert einen Moment:
awk '/Germany/{i=1;next}/^##/{i=0}i{print}' /etc/pacman.d/mirrorlist.pacnew | sed 's/^#//' > /tmp/mirror && rankmirrors -n 15 /tmp/mirror | sed '2,5!s/^S/#S/'
  • Reflector: Man kann die deutschen Spiegelserver online abrufen, z.B. eine Kurzmessung der Downloadrate durchführen, 15 Server mit dem schnellsten Datendurchsatz extrahieren und von diesen die 4 besten Spiegelserver aktivieren:
reflector -c Germany -p http -p https --sort rate -n 15 | sed '11,14!s/^S/#S/'

Falls man eine Sortierung auf Basis des bei Mirror-Status abgerufenen „Mirror Score“ vornehmen möchte, kann man die Anweisung --sort rate durch --sort score ersetzen.

Hinweis: Beide oben angeführten Befehle geben die Resultate im Terminal aus. Um die vorhandene Mirrorliste zu ersetzten, kann als Ausgabeumleitung > /etc/pacman.d/mirrorlist angefügt werden.

Mirrorliste erweitern

Eine weitere Möglichkeit besteht darin, einen favorisierten Spiegelserver in der Pacman-Konfigurationsdatei /etc/pacman.conf vorzuschalten, zum Beispiel:

[core]
Server = http://ftp-stud.hs-esslingen.de/pub/Mirrors/archlinux/$repo/os/$arch
Include = /etc/pacman.d/mirrorlist

Hinweis: Wird ein Spiegelserver in /etc/pacman.conf eingetragen, sollte unbedingt der gleiche Eintrag bei allen offiziellen Repos erfolgen ([core], [extra], [community], [multilib]). Ansonsten besteht die Gefahr, dass aufgrund unterschiedlicher Aktualität der Server versucht wird, nicht kompatible Paketversionen zusammenzuführen.

Keine partiellen Upgrades

Arch Linux wird als Rolling-Release fortlaufend aktualisiert. Sobald neue Versionen von Programmbibliotheken Wikipedia.png [1] in den Repositorien erscheinen, werden vom Arch-Entwicklungsteam alle Pakete, die sich auf diese Bibliothek beziehen, neu (auf)gebaut. Auf diese Weise wird sicher gestellt, dass alle Pakete aus den offiziellen Repos mit der veränderten Schnittstelle der neuen Version funktionieren.

Sollte man fälschlicherweise nur ein einzelnes Paket aktualisieren, werden mit diesem Paket bei Bedarf neue Versionen von Programmbibliotheken im System integriert. Andere bereits installierte und von einem Upgrade ausgenommene Pakete blieben jedoch weiterhin von älteren Versionen der Bibliotheken abhängig und kämen mit den veränderten Schnittstellen neuerer Versionen nicht zurecht. Aus diesem Grunde werden partielle Upgrades nicht unterstützt.

Bevor ein neues Paket installiert wird, sollte immer zunächst mit pacman -Syu eine Aktualisierung des kompletten Systems durchgeführt werden. Vor dem gleichen Hintergund sollte man auch bei Ausnahmen unter IgnorePkg und IgnoreGroup sehr umsichtig verfahren (s. Konfiguration).

Pakete, die nicht aus den offiziellen Repositorien installiert worden sind (z.B. aus dem AUR) und sich auf Bibliotheken aus den Repos beziehen, müssen im Falle einer Änderung von so-Namen (z.B. libfoo.so.1libfoo.so.1.2) auf Anwenderseite neu gebaut werden.

Hinweis: Probleme, die auf Versionsunterschiede von Programmbibliotheken zurückzuführen sind, sollte man nicht durch „Symlinking“ verschlimmbessern. In der Regel lassen sich solche Probleme mit einem 'pacman -Syu' beheben.

Graphische Oberflächen

Pacman wurde als reines CLI-Programm konzipiert, und greift grundsätzlich nur auf installierbare Pakete aus den offiziellen Repositorien zurück, nicht aber aber auf Skripte (PKGBUILDs) aus dem AUR. Rund herum enstanden jedoch im Laufe der Jahre zahlreiche Wrapper, GUIs, oder Programme, die Dateien aus den offiziellen Repositorien und dem AUR gleichzeitig aktualisieren können. Diese sind im Artikel Graphische Paketmanager ausführlich beschrieben. Die dort gesetzten Warn-Hinweise sollten unbedingt beachtet werden.

Hilfe

Keine Verbindung zu einem Mirror

Aufgrund einer langsamen Internetverbindung oder nicht optimaler Pacman-Konfiguration kann es vorkommen, dass der Verbindungsaufbau zu einem Spiegelserver zu lange dauert und es so zu einem Wikipedia.png Timeout kommt. Um dieses Problem zu beheben, kann man – wie im Abschnitt Optimale Spiegelserver beschrieben – den schnellsten Server suchen und verwenden. Sollte auch das nicht zu gewünschtem Erfolg führen, kann versucht werden, einen alternativen Downloader einzusetzen. Dazu muss man die Datei /etc/pacman.conf bearbeiten und einen der beiden Einträge durch Entfernen der Raute # auskommentieren:

 #XferCommand = /usr/bin/{{Paket|curl}} -C - -f %u > %o
 #XferCommand = /usr/bin/{{Paket|wget}} --passive-ftp -c -O %o %u

Bandbreite beschränken

Um die Download-Bandbreite zu beschränken, kann in in der Konfigurationsdatei /etc/pacman.conf innerhalb der Zeile …

XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u

… dem wget-Befehl die entsprechende Option hinzugefügt werden:

XferCommand = /usr/bin/wget --passive-ftp --limit-rate=40k -c -O %o %u

Pacman aus Versehen deinstalliert

Wie kann Pacman wiederhergestellt werden, wenn es aus Versehen deinstalliert wurde?

  • Manuelle Variante
cd /
bsdtar -x -f /var/cache/pacman/pkg/pacman-*.pkg.tar.zst

Das Sternchen(*) entspricht dem Paket mit der höchsten Versionsnummer, welches hoffentlich noch im o.g. Verzeichnis vorhanden ist. Danach Pacman mittels des „neuen“ Pacman wieder installieren, damit der Datenbankeintrag für Pacman selbst wieder angelegt wird.

pacman -S pacman
  • Per Installationsmedium

Vom Installationsmedium booten und die deutsche Tastaturbelegung loadkeys de wählen. Anschließend Partitionen einhängen: Die Root-Partition nach /mnt einhängen (Verzeichnis /etc sollte darin enthalten sein) Für weitere Partitionen unterhalb /mnt Ordner anlegen und entsprechend einhängen (bspw. /mnt/usr). Eine Neuinstallation von Pacman kann nun mit diesem Befehl erfolgen:

pacstrap /mnt pacman

Weitere Informationen

Siehe auch