Pacman: Unterschied zwischen den Versionen
K paccache ergänzt |
K Link eingefügt |
||
Zeile 269: | Zeile 269: | ||
* [[Pacman beschleunigen]] | * [[Pacman beschleunigen]] | ||
* [[Pacman-key]] | * [[Pacman-key]] | ||
* [[Paketliste archivieren]] | |||
* [[Eigene Repositories erstellen]] | * [[Eigene Repositories erstellen]] | ||
* [[Pacman-Tipps]] | * [[Pacman-Tipps]] |
Version vom 25. August 2014, 12:08 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 inklusive 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`
paccache
Paccache ist ein Werkzeug für die Pflege des pacman-cache. Es bietet vielfältige Möglichkeiten die Kontrolle darüber zu behalten was und wieviel aus jedwedem Pacman Paket-Tarballarchive enthaltenden Verzeichnis gelöscht wird. Es stellt eine besser dosierbare Alternative zu
pacman -Scc
dar. Eine Anleitung zur Verwendung von paccache ist über
paccache -h
verfügbar.
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 #XferCommand = /usr/bin/curl -C - -f %u > %o #XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u #CleanMethod = KeepInstalled #UseDelta = 0.7 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.
Seit der Version 4.1 unterstützt Pacman auch farbige Ausgaben. Dazu muss die Option #Color
auskommentiert werden.
Repositories und Spiegel-Server
Offizielle Arch Linux-Pakete werden einem von sechs 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.
- [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
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
Einen Überblick über die Reaktionszeiten und die jeweils letzte Aktualisierung einzelner Sever findet man zudem auf der Seite Mirror-Status.
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. 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
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.