Pacman: Unterschied zwischen den Versionen
python benötigt für rankmirrors-script |
Pierre (Diskussion | Beiträge) K Link zum englischen Wiki hinzugefügt |
||
Zeile 255: | Zeile 255: | ||
[[Kategorie:Paketverwaltung]] | [[Kategorie:Paketverwaltung]] | ||
[[en:Pacman]] |
Version vom 14. April 2010, 16:07 Uhr
Der zentrale Paketmanager Pacman ist eine der größten Stärken der ArchLinux-Distribution. Er verwaltet einfache Binärpakete im Format .pkg.tar.xz
(bzw. .pkg.tar.gz
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.
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. 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
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 enthält das Script pacman-optimize. Dafür wird das Paket diffutils aus der Paketkategorie base-devel benötigt.
Anwendung
Pacman ist ein All-In-One-Paketmanager. Er kann Pakete
- suchen,
- herunterladen,
- installieren und aktualisieren, sowohl vom Server als auch von lokalen Datenbanken,
- 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!
Befehl | Beschreibung |
pacman -Syu | Führt eine komplette System-Aktualisierung aus. Kombiniert die drei folgenden Parameter |
pacman -S [paket1] [paket2] | Eines oder mehrere Pakete installieren oder aktualisieren |
pacman -Sy | Lokale Datenbank aktualisieren |
pacman -Su | Alle installierten Pakete aktualisieren |
pacman -Ss [paket] | Sucht nach installierbaren Paketen. Es reicht ein Teil des Paketnamens |
pacman -Sg | Sucht nach installierbaren Paketgruppen |
pacman -Sg [paketgruppe] | Zeigt den Inhalt einer Paketgruppe |
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: Mit Vorsicht zu genießen! Das Paket wird auch entfernt, wenn es noch von anderen Paketen gebraucht wird! |
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 -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 -Qo [datei] | Zeigt das Paket an das die Datei enthält |
pacman -Qm | Pakete anzeigen die sich in keinem Repo befinden |
pacman-optimize | Pacman optimieren |
Man kann natürlich auch mehrere Befehle kombinieren und zum Beispiel so alle verwaisten Pakete deinstallieren: pacman -Rcsn `pacman -Qdtq`
Konfiguration
Pacmans Einstellungen werden in der Datei /etc/pacman.conf
gespeichert. Es gibt zwei Hauptbereiche in der Datei:
Allgemeine Einstellungen
Die allgemeinen Einstellungen finden sich in der [options]-Sektion
Hier kann angegeben werden, welche Dateien nicht aktualisiert werden sollen. Das ist bei wichtigen Systemdateien nützlich. Die Syntax ist sehr einfach:
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
Dateien, die durch Noupgrade markiert sind, werden beim Update nicht überschrieben, Pacman legt stattdessen eine neue Datei im Format datei.pacnew an.
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.
Falls jemand versucht, Pakete, die durch HoldPkg markiert sind, zu entfernen, muss er das bestätigen.
Easteregg: Folgende Zeile in die /etc/pacman.conf schreiben:
ILoveCandy
Repositorien und Spiegel-Server
Offizielle Arch Linux-Pakete werden einem von vier verschiedenen Repositorien zugeordnet:
- [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 /etc/pacman.d/mirrorlist
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 /etc/pacman.d/mirrorlist
festlegen.
Um die Reaktionszeiten der einzelnen Server zu testen, kann man das Python-Skript rankmirrors verwenden
rankmirrors /etc/pacman.d/mirrorlist
(dazu muss python installiert sein) 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 im Hinblick auf ihre Aktualität (durch unterschiedliche Synchronisation-Raten mit dem Hauptserver), sowie im Hinblick auf ihre Zugänglichkeit vom eigenen Standort aus.
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.
# für i686 # #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
# 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
Repos festlegen
Die Konfiguration der zweiten Sektion von /etc/pacman.conf
durch Auskommentierung oder zusätzliche Einträge ist weitgehend selbsterklärend:
[core] # Add your preferred servers here, they will be used first Include = /etc/pacman.d/mirrorlist
#[testing] # 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: 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.
Inoffizielle/lokale Repositorien verwenden
Weitere Repos kann man beliebig anhängen, indem man Repo-Name und Server spezifiziert. Für die KDE3-Variante KDEmod lautet der Eintrag etwa:
[kdemod-legacy] Server = http://kdemod.ath.cx/repo/legacy/i686
beziehungsweise
[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 Installationshinweise beachten. Eine Liste mit weiteren inoffiziellen Repositorien findet sich im engl. Wiki. Siehe auch Eigene Repos.
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
(würde z.B. auf 40K/s beschränken).
Weitere Informationen
... findet man natürlich in den manpages:
Retrieved from "http://wiki.archlinux.org/index.php/Pacman_(Deutsch)" Published under GNU Free Documentation License 1.2. |