Pacman: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
(-Qo)
Keine Bearbeitungszusammenfassung
(44 dazwischenliegende Versionen von 18 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.gz</code>, 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 <code>.pkg.tar.xz</code> (bzw. <code>.pkg.tar.gz</code> bei älteren Paketen), die entweder aus offiziellen oder inoffiziellen Repositories 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 [http://wiki.archlinux.de/?title=Shaman_-_eine_GUI_f%C3%BCr_Pacman 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.


== Anwendung ==
== Anwendung ==
Zeile 15: Zeile 12:
* herunterladen,
* herunterladen,
* installieren und aktualisieren, sowohl vom Server als auch von lokalen Datenbanken,
* installieren und aktualisieren, sowohl vom Server als auch von lokalen Datenbanken,
* überprüfen und
* entfernen.
* entfernen.


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 kleingeschrieben werden!
Die wichtigsten Befehle sind hier aufgeführt. Bitte beachte, dass die Paketnamen immer klein geschrieben werden.
 


{|border="1" style="width:100%"
{|border="1" style="width:100%"
Zeile 25: Zeile 22:
  |-
  |-
  |''pacman -Syu''
  |''pacman -Syu''
  |Führt eine komplette System-Aktualisierung aus. Kombiniert die drei folgenden Parameter
  |Führt eine komplette System-Aktualisierung aus
  |-
  |-
  |''pacman -S [paket1] [paket2]''
  |''pacman -S [paket1] [paket2]''
Zeile 35: Zeile 32:
  |''pacman -Su''
  |''pacman -Su''
  |Alle installierten Pakete aktualisieren
  |Alle installierten Pakete aktualisieren
|-
|''pacman -Syy''
|Lokale Datenbank komplett neu aufbauen und aktualisieren
|-
|''pacman -Syuu''
|Alle installierten Pakete downgraden (von Testing nach Core)
  |-
  |-
  |''pacman -Ss [paket]''
  |''pacman -Ss [paket]''
  |Sucht nach installierbaren Paketen. Es reicht ein Teil des Paketnamens
  |Sucht nach installierbaren Paketen. Es reicht ein Teil des Paketnamens oder der Paketbeschreibung
  |-
  |-
  |''pacman -Sg''
  |''pacman -Sg''
Zeile 44: Zeile 47:
  |''pacman -Sg [paketgruppe]''
  |''pacman -Sg [paketgruppe]''
  |Zeigt den Inhalt einer Paketgruppe
  |Zeigt den Inhalt einer Paketgruppe
|-
|''pacman -Q''
|Zeigt alle installierten Pakete inkluse Versionsnummer auf dem System an
  |-
  |-
  |''pacman -Qs [paket]''
  |''pacman -Qs [paket]''
Zeile 50: Zeile 56:
  |''pacman -R [paket]
  |''pacman -R [paket]
  |Paket entfernen
  |Paket entfernen
|-
|''pacman -Rd [paket]
|Paket entfernen '''ohne''' auf Abhängigkeiten zu achten. ACHTUNG: Das Paket wird auch entfernt, wenn es noch von anderen Paketen gebraucht wird!
|-
|''pacman -Rdd [paket]
|Paket entfernen, wie oben, jedoch werden alle Abhängigkeitsprüfungen ausgeschaltet
  |-
  |-
  |''pacman -Rs [paket]
  |''pacman -Rs [paket]
  |Paket mit allen benötigten Abhängigkeiten entfernen (wenn diese nicht von anderen installierten Paketen benötigt werden)
  |Paket mit allen benötigten Abhängigkeiten entfernen (wenn diese nicht von anderen installierten Paketen benötigt werden)
|-
|''pacman -Rss [paket]
|Paket mit allen benötigten Abhängigkeiten und deren Abhängigkeiten entfernen
|-
|''pacman -D [paket]''
|Status eines installierten Programms ändern, ohne es "drüber zu installieren"
  |-
  |-
  |''pacman -Qi [paket]''
  |''pacman -Qi [paket]''
Zeile 67: Zeile 85:
  |-
  |-
  |''pacman -U [paket-datei]
  |''pacman -U [paket-datei]
  |Ein lokales Paket installieren. (nicht aus einem Repo)  
  |Ein lokales Paket installieren (nicht aus einem Repo)  
|-
|''pacman -Runs [paket]''
|Paket inklusive aller Abhängigkeiten entfernen
  |-
  |-
  |''pacman -Qdt''
  |''pacman -Qdt''
Zeile 77: Zeile 98:
  |''pacman -Scc''
  |''pacman -Scc''
  |Leert den lokalen Speicher von '''Pacman''' (/var/cache/pacman/pkg)
  |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]''
  |''pacman -Ql [paket]''
  |Zeigt alle installierten Dateien des Pakets im System
  |Zeigt alle installierten Dateien des Pakets im System
  |-
  |-
  |''pacman -Qo [datei]''
|''pacman -Qm''
  |Zeigt das Paket an das die Datei enthält
|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 -Qu''
|Zeigt an, für welche installierten Pakete Updates verfügbar sind
|-
|''pacman -Qk''
|Überprüft alle Pakete auf fehlende Dateien. Einfachhalber pacman -Qk mit grep warning benutzen
  |-
  |-
  |''pacman-optimize''
  |''pacman-optimize''
  |'''Pacman''' optimieren
  |'''Pacman'''-Datenbank optimieren durch Neuanordnung der Paketdateien im Dateisystem
  |-
  |-
  |}
  |}


Man kann natürlich auch mehrere Befehle kombinieren und zum Beispiel so alle verwaisten Pakete deinstallieren: pacman -Rcsn `pacman -Qdtq`


== Konfiguration ==
Es können auch mehrere Befehle kombiniert werden.


'''Pacmans''' Einstellungen werden in der Datei <code>/etc/pacman.conf</code> gespeichert. Es gibt zwei Hauptbereiche in der Datei:
Z.B. Alle verwaisten Pakete deinstallieren:


  pacman -Rcsn `pacman -Qdtq`


=== Allgemeine Einstellungen ===
== Konfiguration ==


Die allgemeinen Einstellungen finden sich in der [options]-Sektion
Die Einstellungen zu '''Pacman''' werden in der Datei <code>/etc/pacman.conf</code> gespeichert.


Hier kann angegeben werden, welche Dateien nicht aktualisiert werden sollen. Das ist bei wichtigen Systemdateien nützlich. Die Syntax ist sehr einfach:
=== Allgemeine Einstellungen ===
<pre>
NoUpgrade  = etc/passwd etc/group etc/shadow etc/sudoers
NoUpgrade  = etc/fstab etc/raidtab etc/ld.so.conf
NoUpgrade  = etc/rc.conf etc/rc.local
NoUpgrade  = etc/modprobe.conf etc/modules.conf
NoUpgrade  = etc/lilo.conf boot/grub/menu.lst
IgnorePkg  = paketxxx
HoldPgk    = paketyyy
</pre>


Dateien, die durch '''Noupgrade''' markiert sind, werden beim Update nicht überschrieben, '''Pacman''' legt stattdessen eine neue Datei im Format ''datei.pacnew'' an.
  #RootDir    = /
  #DBPath      = /var/lib/pacman/
  #CacheDir    = /var/cache/pacman/pkg/
  #LogFile    = /var/log/pacman.log
  #GPGDir      = /etc/pacman.d/gnupg/
  HoldPkg    = pacman glibc
  SyncFirst  = pacman
  #CleanMethod = KeepInstalled
  Architecture = auto
  #IgnorePkg  =
  #IgnoreGroup =
  #NoUpgrade  =
  #NoExtract  =
  #UseSyslog
  #UseDelta
  #TotalDownload
  #CheckSpace
  #VerbosePkgLists


Pakete, die mit '''IgnorePkg''' markiert sind, werden vom Update völlig ausgenommen, falls also von ''paket xxx'' eine neue Version vorhanden wäre, würde das Paket im vorliegenden Beispiel nicht aktualisiert werden.
Pakete, die durch '''HoldPkg''' markiert sind, müssen vor dem Entfernen nochmals bestätigt werden.


Falls jemand versucht, Pakete, die durch '''HoldPkg''' markiert sind, zu entfernen, muss er das bestätigen.
Pakete, die mit '''IgnorePkg''' markiert sind, werden vom Update völlig ausgenommen. Dies betrifft auch alle damit verbundenen Abhängigkeiten.


'''Easteregg''': Folgende Zeile in die /etc/pacman.conf schreiben:
Dateien, die durch '''NoUpgrade''' markiert sind, werden beim Update nicht überschrieben. Pacman legt stattdessen eine neue Datei im Format <code>datei.pacnew</code> an.
<pre>ILoveCandy</pre>


=== Repositorien und Spiegel-Server ===
=== Repositories und Spiegel-Server ===


Offizielle Arch Linux-Pakete werden einem von vier verschiedenen Repositorien zugeordnet:
Offizielle Arch Linux-Pakete werden einem von vier verschiedenen Repositories zugeordnet:
*[core] enthält grundlegende Programme, die zum Betrieb von Archlinux unbedingt erforderlich sind. Schnappschüsse aus diesem Repo dienen als Installations-CD.
*[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]], die nicht zwingend 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.
*[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.
*[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.
==== Repos festlegen ====
 
Die Konfiguration der <code>/etc/pacman.conf</code> durch Auskommentierung oder zusätzliche Einträge ist weitgehend selbsterklärend.
 
==== Inoffizielle Repositories verwenden ====
 
Weitere Repos kann man beliebig anhängen, indem man Repo-Name und Server spezifiziert. Eine Liste inoffizieller Repositories findet sich im [http://wiki.archlinux.org/index.php/Unofficial_user_repositories engl. Wiki].


Um die Reaktionszeiten der einzelnen Server zu testen, kann man das Python-Skript '''rankmirrors''' verwenden
==== Den richtigen Spiegel-Server finden ====
rankmirrors /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


==== Den richtigen Spiegel finden ====
Spiegel-Server unterscheiden sich durch ihre Aktualität (Siehe unterschiedliche Synchronisations-Raten mit dem Hauptserver), sowie durch ihre Zugänglichkeit vom eigenen Standort aus.


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>
* Es werden nur noch Server mit dem HTTP Protokoll unterstützt.
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.
* Die Wahl der Architektur wird durch entsprechende Variablen gesteuert.


<pre><nowiki>
<pre><nowiki>
# für i686
## Germany
#
#Server = http://1favre.de/arch/$repo/os/$arch
#Server = ftp://ftp5.gwdg.de/pub/linux/archlinux/$repo/os/i686
#Server = http://archlinux.limun.org/$repo/os/$arch
#Server = ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/$repo/os/i686
#Server = http://artfiles.org/archlinux.org/$repo/os/$arch
#Server = ftp://ftp.tu-chemnitz.de/pub/linux/archlinux/$repo/os/i686
#Server = http://mirror.devnu11.net/archlinux/$repo/os/$arch
#Server = http://ftp5.gwdg.de/pub/linux/archlinux/$repo/os/i686
#Server = http://ftp5.gwdg.de/pub/linux/archlinux/$repo/os/$arch
#Server = ftp://ftp.uni-kl.de/pub/linux/archlinux/$repo/os/i686
#Server = http://ftp.hosteurope.de/mirror/ftp.archlinux.org/$repo/os/$arch
#Server = http://ftp.uni-kl.de/pub/linux/archlinux/$repo/os/i686
#Server = http://ftp-stud.hs-esslingen.de/pub/Mirrors/archlinux/$repo/os/$arch
#Server = ftp://ftp.uni-bayreuth.de/pub/linux/archlinux/$repo/os/i686
#Server = http://mirror.de.leaseweb.net/archlinux/$repo/os/$arch
#Server = http://ftp.uni-bayreuth.de/linux/archlinux/$repo/os/i686
#Server = http://mirror.selfnet.de/archlinux/$repo/os/$arch
#Server = ftp://ftp.archlinuxppc.org/i686/$repo/os/i686
#Server = http://mirrors.mycraft.eu/archlinux/$repo/os/$arch
# - Österreich
#Server = http://mirrors.n-ix.net/archlinux/$repo/os/$arch
#Server = ftp://gd.tuwien.ac.at/opsys/linux/archlinux/$repo/os/i686
#Server = http://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch
# - Belgien
#Server = http://ftp.spline.inf.fu-berlin.de/mirrors/archlinux/$repo/os/$arch
#Server = ftp://ftp.belnet.be/mirror/archlinux.org/$repo/os/i686
#Server = http://ftp.tu-chemnitz.de/pub/linux/archlinux/$repo/os/$arch
# - Schweiz
#Server = http://ftp.tuxdroid.org/archlinux/$repo/os/$arch
#Server = ftp://archlinux.puzzle.ch/$repo/os/i686
#Server = http://ftp.uni-bayreuth.de/linux/archlinux/$repo/os/$arch
</nowiki></pre>
#Server = http://ftp.uni-kl.de/pub/linux/archlinux/$repo/os/$arch
<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>
</nowiki></pre>


==== Repos festlegen ====
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.


Die Konfiguration der zweiten Sektion von <code>/etc/pacman.conf</code> durch Auskommentierung oder zusätzliche Einträge ist weitgehend selbsterklärend:
Um die Antwortzeiten der einzelnen Server zu testen, kann man das Skript '''rankmirrors''' verwenden:
  [core]
  rankmirrors -n 0 -t -v /etc/pacman.d/mirrorlist
# Add your preferred servers here, they will be used first
Include = /etc/pacman.d/mirrorlist


#[testing]
==== Eigene mirrorlist ====
# Add your preferred servers here, they will be used first
#Include = /etc/pacman.d/mirrorlist
deaktiviert das Repo [testing].


'''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:
Um sich das immer wiederkehrende Editieren der /etc/pacman.d/mirrorlist zu ersparen, wenn diese durch ein pacman-mirrorlist Update erneuert wird (bzw. eine mirrorlist.pacnew erstellt wird) kannst du folgendes tun:
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:
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]
  [core]
Zeile 198: Zeile 220:
Somit bleibt die Original-Mirrorlist immer auf dem aktuellen Stand und du musst evtl. notwendige Änderungen nur in deiner Datei mymirrors vornehmen.
Somit bleibt die Original-Mirrorlist immer auf dem aktuellen Stand und du musst evtl. notwendige Änderungen nur in deiner Datei mymirrors vornehmen.


==== Inoffizielle/lokale Repositorien verwenden ====
=== Download beschränken ===


Weitere Repos kann man beliebig anhängen, indem man Repo-Name und Server spezifiziert. Für die KDE3-Variante [[KDEmod]] lautet der Eintrag etwa:
Um die Download-Geschwindigkeit zu beschränken kann in der Zeile
   [kdemod-legacy]
   XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
  Server = http://kdemod.ath.cx/repo/legacy/i686
dem wget-Befehl die entsprechende Option hinzugefügt werden.
beziehungsweise
   XferCommand = /usr/bin/wget --passive-ftp '''--limit-rate=40k''' -c -O %o %u
  [kdemod-legacy]
   Server = http://kdemod.ath.cx/repo/legacy/x86_64
je nachdem welche Architektur man verwendet.


Vor der Verwendung dieses Repos sollte man die entsprechenden [http://kdemod.ath.cx/installation.html Installationshinweise] beachten. Eine Liste mit weiteren inoffiziellen Repositorien findet sich im [http://wiki.archlinux.org/index.php/Unofficial_user_repositories engl. Wiki]. Siehe auch [[Eigene Repos]].
== Pacman aus Versehen deinstalliert ==
Wie kann pacman wiederhergestellt werden, wenn es aus Versehen deinstalliert wurde?
Manuelle Variante (Ausführen als root):
  cd /
  bsdtar -x -f /var/cache/pacman/pkg/pacman-4.0.*.pkg.tar.xz
Das Sternchen(*) entspricht dem Paket mit der höchsten Versionsnummer, welches hoffentlich noch im o.g. Verzeichnis vorhanden ist.
Danch 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
  loadkeys de
* Partitionen einhängen:
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)
  pacstrap /mnt pacman
installiert pacman neu.


== Weitere Informationen ==
== Weitere Informationen ==
... findet man natürlich in den '''man-pages''':
*[http://www.archlinux.org/pacman/pacman.8.html man pacman]
*[http://www.archlinux.org/pacman/pacman.8.html man pacman]
*[http://www.archlinux.org/pacman/PKGBUILD.5.html man PKGBUILD]
*[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/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]
*[http://www.archlinux.org/pacman/repo-add.8.html man repo-add]


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


[[Kategorie:Paketverwaltung]]
[[Kategorie:Paketverwaltung]]
[[en:Pacman]]

Version vom 13. Oktober 2012, 14:00 Uhr

Der zentrale Paketmanager Pacman ist eine der größten Stärken von Arch Linux. Er verwaltet einfache Binärpakete im Format .pkg.tar.xz (bzw. .pkg.tar.gz bei älteren Paketen), die entweder aus offiziellen oder inoffiziellen Repositories 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.

Anwendung

Pacman ist ein All-In-One-Paketmanager. Er kann Pakete

  • suchen,
  • herunterladen,
  • installieren und aktualisieren, sowohl vom Server als auch von lokalen Datenbanken,
  • überprüfen und
  • entfernen.

Die wichtigsten Befehle sind hier aufgeführt. Bitte beachte, dass die Paketnamen immer klein geschrieben werden.

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)
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 -Q Zeigt alle installierten Pakete inkluse Versionsnummer auf dem System an
pacman -Qs [paket] Sucht nach bereits installierten Paketen
pacman -R [paket] Paket entfernen
pacman -Rd [paket] Paket entfernen ohne auf Abhängigkeiten zu achten. ACHTUNG: Das Paket wird auch entfernt, wenn es noch von anderen Paketen gebraucht wird!
pacman -Rdd [paket] Paket entfernen, wie oben, jedoch werden alle Abhängigkeitsprüfungen ausgeschaltet
pacman -Rs [paket] Paket mit allen benötigten Abhängigkeiten entfernen (wenn diese nicht von anderen installierten Paketen benötigt werden)
pacman -Rss [paket] Paket mit allen benötigten Abhängigkeiten und deren Abhängigkeiten entfernen
pacman -D [paket] Status eines installierten Programms ändern, ohne es "drüber zu installieren"
pacman -Qi [paket] Informationen zu bereits installiertem Paket anzeigen
pacman -Si [paket] Informationen zu (noch) nicht installierten Paketen anzeigen
pacman -Sw [paket] Paket herunterladen, ohne es zu installieren
pacman -S testing/[paket] Paket aus einem spezifischen Repo (hier: testing) installieren
pacman -U [paket-datei] Ein lokales Paket installieren (nicht aus einem Repo)
pacman -Runs [paket] Paket inklusive aller Abhängigkeiten entfernen
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 -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 aktivierten Repo laut /etc/pacman.conf befinden
pacman -Qo [/pfad/zur/datei] Zeigt das Paket an, welches die gesuchte Datei enthält
pacman -Qu Zeigt an, für welche installierten Pakete Updates verfügbar sind
pacman -Qk Überprüft alle Pakete auf fehlende Dateien. Einfachhalber pacman -Qk mit grep warning benutzen
pacman-optimize Pacman-Datenbank optimieren durch Neuanordnung der Paketdateien im Dateisystem


Es können auch mehrere Befehle kombiniert werden.

Z.B. Alle verwaisten Pakete deinstallieren:

 pacman -Rcsn `pacman -Qdtq`

Konfiguration

Die Einstellungen zu Pacman werden in der Datei /etc/pacman.conf gespeichert.

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
 SyncFirst   = pacman
 #CleanMethod = KeepInstalled
 Architecture = auto
 #IgnorePkg   =
 #IgnoreGroup =
 #NoUpgrade   =
 #NoExtract   =
 #UseSyslog
 #UseDelta
 #TotalDownload
 #CheckSpace
 #VerbosePkgLists

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.

Repositories und Spiegel-Server

Offizielle Arch Linux-Pakete werden einem von vier verschiedenen Repositories 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.

Repos festlegen

Die Konfiguration der /etc/pacman.conf durch Auskommentierung oder zusätzliche Einträge ist weitgehend selbsterklärend.

Inoffizielle Repositories verwenden

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

Den richtigen Spiegel-Server finden

Spiegel-Server unterscheiden sich durch ihre Aktualität (Siehe unterschiedliche Synchronisations-Raten mit dem Hauptserver), sowie durch ihre Zugänglichkeit vom eigenen Standort aus.

  • Es werden nur noch Server mit dem HTTP Protokoll unterstützt.
  • Die Wahl der Architektur wird durch entsprechende Variablen gesteuert.
## Germany
#Server = http://1favre.de/arch/$repo/os/$arch
#Server = http://archlinux.limun.org/$repo/os/$arch
#Server = http://artfiles.org/archlinux.org/$repo/os/$arch
#Server = http://mirror.devnu11.net/archlinux/$repo/os/$arch
#Server = http://ftp5.gwdg.de/pub/linux/archlinux/$repo/os/$arch
#Server = http://ftp.hosteurope.de/mirror/ftp.archlinux.org/$repo/os/$arch
#Server = http://ftp-stud.hs-esslingen.de/pub/Mirrors/archlinux/$repo/os/$arch
#Server = http://mirror.de.leaseweb.net/archlinux/$repo/os/$arch
#Server = http://mirror.selfnet.de/archlinux/$repo/os/$arch
#Server = http://mirrors.mycraft.eu/archlinux/$repo/os/$arch
#Server = http://mirrors.n-ix.net/archlinux/$repo/os/$arch
#Server = http://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch
#Server = http://ftp.spline.inf.fu-berlin.de/mirrors/archlinux/$repo/os/$arch
#Server = http://ftp.tu-chemnitz.de/pub/linux/archlinux/$repo/os/$arch
#Server = http://ftp.tuxdroid.org/archlinux/$repo/os/$arch
#Server = http://ftp.uni-bayreuth.de/linux/archlinux/$repo/os/$arch
#Server = http://ftp.uni-kl.de/pub/linux/archlinux/$repo/os/$arch

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 /etc/pacman.d/mirrorlist gespeichert. Da der Zugang zum Hauptserver inzwischen beschränkt werden musste, sollte man unbedingt auf einen Spiegel zurückgreifen.

Um die Antwortzeiten der einzelnen Server zu testen, kann man das Skript rankmirrors verwenden:

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

Eigene mirrorlist

Um sich das immer wiederkehrende Editieren der /etc/pacman.d/mirrorlist zu ersparen, wenn diese durch ein pacman-mirrorlist Update erneuert wird (bzw. eine mirrorlist.pacnew erstellt wird) kannst du folgendes tun: 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]
# Add your preferred servers here, they will be used first
Include = /etc/pacman.d/mymirrors
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.

Download beschränken

Um die Download-Geschwindigkeit zu beschränken kann in 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 (Ausführen als root):

 cd /
 bsdtar -x -f /var/cache/pacman/pkg/pacman-4.0.*.pkg.tar.xz

Das Sternchen(*) entspricht dem Paket mit der höchsten Versionsnummer, welches hoffentlich noch im o.g. Verzeichnis vorhanden ist. Danch 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
 loadkeys de
  • Partitionen einhängen:

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)

 pacstrap /mnt pacman

installiert pacman neu.

Weitere Informationen

Siehe auch