Inhaltsverzeichnis
ArchLinux - Pacman
Der Paketmanager pacman ist eines der wichtigsten Unterscheidungsmerkmale von ArchLinux. Er kombiniert ein einfaches Format für Binärpakete mit einem leicht zu bedienenden Build-System. Das Ziel von pacman ist es, die einfache Verwaltung von Paketen zu ermöglichen, unabhängig davon, ob sie aus den offiziellen Repositories oder aus eigenen Builds stammen.
Pacman hält das System auf dem neuesten Stand, indem es die Paketlisten mit dem „Master-Server“ synchronisiert. Dieses Server/Client-Modell erlaubt es dem Benutzer auch, Pakete mit einem einfachen Befehl herunterzuladen/zu installieren, komplett mit allen erforderlichen Abhängigkeiten.
Beschreibung | Externer Link |
---|---|
Homepage | https://www.archlinux.de/ |
Dokumentation | https://wiki.archlinux.de/title/Pacman |
Pacman/Rosetta | https://wiki.archlinux.org/index.php/Pacman/Rosetta |
Pacman DokuWiki | https://wiki.archlinux.de/title/Pacman |
Konfiguration
Nachfolgend soll eine mögliche Konfiguration von pacman
durchgeführt werden.
/etc/pacman.conf
Bei der Verwendung von pacman
, nachfolgend soll eine das updaten von Paketen als Beispiel dienen, kann die Ausgabe, das „Look & Feel“ sozusagen angepasst werden, wie die Änderungen andere Konfigurationsdatei
/etc/pacman.conf
wie nachfolgend dargestellt, zeigen.
Standardmässig wird beim Aufruf von pacman
, nachfolgend formatierte Ausgabe zum Vorschein kommen, hier als Beispiel eine update von im System bereits installierten Paketen:
Vorher:
# pacman -Syu :: Synchronizing package databases... core is up to date extra is up to date community is up to date :: Starting full system upgrade... resolving dependencies... looking for conflicting packages... Packages (9) imagemagick-7.0.10.38-1 libibus-1.5.23+1+gdd4cc5b0-1 python-html5lib-1.1-4 python-pep517-0.9.1-1 python-pip-20.2-1 python-pyopenssl-19.1.0-2 python-resolvelib-0.5.1-1 raptor-2.0.15-14 rasqal-1:0.9.33-4 Total Download Size: 12.48 MiB Total Installed Size: 96.38 MiB Net Upgrade Size: 19.34 MiB :: Proceed with installation? [Y/n]
Um diese Anzeige, ein wenig aussagekräftiger und schöner zu gestalten, können nachfolgende Anpassungen an der Konfigurationsdatei
/etc/pacman.conf
in der Sektion
# Misc options
durchgeführt werden:
# Misc options #UseSyslog # Tachtler - enabled - Color # Tachtler - enabled - TotalDownload CheckSpace # Tachtler - enabled - VerbosePkgLists # Tachtler - new - ILoveCandy
Erklärungen:
Color
Aktiviert automatisch die Anzeige von Farben, aber nur dann, wenn die Ausgabe von pacman
auf einem tty
statt findet.
TotalDownload
Zeigen beim Herunterladen die heruntergeladene Menge und die Download-Rate an, die ETA (Estimated Time of Arrival) die Zeit, bis der Download abgeschlossen sein sollte und der wahrscheinliche abgeschlossene Prozentsatz der gesamten Download-Liste als der Prozentsatz jedes einzelnen Download-Ziels. Eine Fortschrittsanzeige, jeweils ausschliesslich für das aktuellen herunter zu ladende Paket. Diese Option funktioniert allerdings nicht, wenn XferCommand
verwendet wird.
VerbosePkgLists
Zeigt jeweils den Name, die Version und die Grösse des jeweiligen Zielpaketes an, dargestellt in Tabellenform für Upgrade-, Synchronisierungs- und Löschoperationen.
ILoveCandy
Undokumentierte Option - Stellt die Ausgabe des Fortschrittsbalken als Pacman dar, welche „Süssigkeiten“ als Fortschrittsbalken verspeist.
Anschliessend sieht dann das bereits zuvor gezeigte Beispiel des update von im System bereits installierten Paketen, wie folgt aus:
Nachher - (80 Zeichen Fensterbreite)
# pacman -Syu :: Synchronizing package databases... core is up to date extra is up to date community is up to date :: Starting full system upgrade... resolving dependencies... looking for conflicting packages... warning: insufficient columns available for table display Packages (9) imagemagick-7.0.10.38-1 libibus-1.5.23+1+gdd4cc5b0-1 python-html5lib-1.1-4 python-pep517-0.9.1-1 python-pip-20.2-1 python-pyopenssl-19.1.0-2 python-resolvelib-0.5.1-1 raptor-2.0.15-14 rasqal-1:0.9.33-4 Total Download Size: 12.48 MiB Total Installed Size: 96.38 MiB Net Upgrade Size: 19.34 MiB :: Proceed with installation? [Y/n]
WICHTIG - Die erweiterte Anzeige kann nur dargestellt werden, wenn die Fensterbreite mehr als 80 Zeichen beträgt!
Sonst kommt nachfolgende Warnung zum Vorschein:
warning: insufficient columns available for table display
Nachher - (120 Zeichen Fensterbreite)
# pacman -Syu :: Synchronizing package databases... core is up to date extra is up to date community is up to date :: Starting full system upgrade... resolving dependencies... looking for conflicting packages... Package (9) Old Version New Version Net Change Download Size extra/imagemagick 7.0.10.37-1 7.0.10.38-1 0.00 MiB 2.53 MiB extra/libibus 1.5.22+8+gf591381e-1 1.5.23+1+gdd4cc5b0-1 16.67 MiB 8.33 MiB community/python-html5lib 1.1-1 1.1-4 0.00 MiB 0.20 MiB extra/python-pep517 0.8.2-1 0.9.1-1 0.00 MiB 0.03 MiB extra/python-pip 20.1.1-1 20.2-1 0.11 MiB 0.40 MiB extra/python-pyopenssl 19.1.0-2 0.53 MiB 0.08 MiB extra/python-resolvelib 0.4.0-1 0.5.1-1 0.01 MiB 0.02 MiB extra/raptor 2.0.15-13 2.0.15-14 0.93 MiB 0.45 MiB extra/rasqal 1:0.9.33-3 1:0.9.33-4 1.09 MiB 0.45 MiB Total Download Size: 12.48 MiB Total Installed Size: 96.38 MiB Net Upgrade Size: 19.34 MiB :: Proceed with installation? [Y/n] Y :: Retrieving packages... imagemagick-7.0.10.38-1-x86_64 2.5 MiB 9.37 MiB/s 00:00 [----------------------------------------] 20% libibus-1.5.23+1+gdd4-1-x86_64 10.9 MiB 11.3 MiB/s 00:01 [----------------------------------------] 86% python-pep517-0.9.1-1-any 10.9 MiB 11.1 MiB/s 00:01 [----------------------------------------] 87% python-resolvelib-0.5.1-1-any 10.9 MiB 10.9 MiB/s 00:01 [----------------------------------------] 87% python-pyopenssl-19.1.0-2-any 11.0 MiB 10.6 MiB/s 00:01 [----------------------------------------] 88% python-pip-20.2-1-any 11.4 MiB 10.4 MiB/s 00:01 [----------------------------------------] 91% raptor-2.0.15-14-x86_64 11.8 MiB 10.3 MiB/s 00:01 [----------------------------------------] 94% rasqal-1:0.9.33-4-x86_64 12.3 MiB 10.2 MiB/s 00:01 [----------------------------------------] 98% python-html5lib-1.1-4-any 12.5 MiB 9.99 MiB/s 00:01 [----------------------------------------] 100% (9/9) checking keys in keyring [----------------------------------------] 100% (9/9) checking package integrity [----------------------------------------] 100% (9/9) loading package files [----------------------------------------] 100% (9/9) checking for file conflicts [----------------------------------------] 100% (9/9) checking available disk space [----------------------------------------] 100% :: Processing package changes... (1/9) upgrading imagemagick [----------------------------------------] 100% (2/9) upgrading libibus [----------------------------------------] 100% (3/9) upgrading python-html5lib [----------------------------------------] 100% (4/9) upgrading python-pep517 [----------------------------------------] 100% (5/9) upgrading python-resolvelib [----------------------------------------] 100% (6/9) installing python-pyopenssl [----------------------------------------] 100% (7/9) upgrading python-pip [----------------------------------------] 100% (8/9) upgrading raptor [----------------------------------------] 100% (9/9) upgrading rasqal [----------------------------------------] 100% :: Running post-transaction hooks... (1/2) Arming ConditionNeedsUpdate... (2/2) Warn about old perl modules
Hilfsprogramme
paccache
paccache
ist ein Werkzeug zur Bereinigung des „Pacman-Cache“, welcher sich im Verzeichnis
/var/cache/pacman/pkg
befindet.
Um den Befehl verfügbar zu haben, muss das Paket pacman-contrib
mit z.B. dem nachfolgendem Befehl installiert werden:
# pacman -S pacman-contrib resolving dependencies... looking for conflicting packages... Package (1) New Version Net Change Download Size community/pacman-contrib 1.4.0-1 0.10 MiB 0.04 MiB Total Download Size: 0.04 MiB Total Installed Size: 0.10 MiB :: Proceed with installation? [Y/n] Y :: Retrieving packages... pacman-contrib-1... 37.7 KiB 0.00 B/s 00:00 [----------------------] 100% (1/1) checking keys in keyring [----------------------] 100% (1/1) checking package integrity [----------------------] 100% (1/1) loading package files [----------------------] 100% (1/1) checking for file conflicts [----------------------] 100% (1/1) checking available disk space [----------------------] 100% :: Processing package changes... (1/1) installing pacman-contrib [----------------------] 100% Optional dependencies for pacman-contrib findutils: for pacdiff --find [installed] mlocate: for pacdiff --locate sudo: privilege elevation for several scripts [installed] vim: default merge program for pacdiff [installed] :: Running post-transaction hooks... (1/2) Reloading system manager configuration... (2/2) Arming ConditionNeedsUpdate...
Nachfolgender Befehl listet den installierten Inhalt des Pakets pacman-contrib
auf:
# pacman -Qil pacman-contrib Name : pacman-contrib Version : 1.4.0-1 Description : Contributed scripts and tools for pacman systems Architecture : x86_64 URL : https://git.archlinux.org/pacman-contrib.git/about/ Licenses : GPL Groups : None Provides : None Depends On : fakeroot pacman perl Optional Deps : findutils: for pacdiff --find [installed] mlocate: for pacdiff --locate sudo: privilege elevation for several scripts [installed] vim: default merge program for pacdiff [installed] Required By : None Optional For : None Conflicts With : None Replaces : None Installed Size : 103.38 KiB Packager : Daniel M. Capella <polyzen@archlinux.org> Build Date : Wed 29 Jul 2020 03:17:14 AM CEST Install Date : Thu 03 Dec 2020 08:49:34 AM CET Install Reason : Explicitly installed Install Script : No Validated By : Signature pacman-contrib /usr/ pacman-contrib /usr/bin/ pacman-contrib /usr/bin/checkupdates pacman-contrib /usr/bin/paccache pacman-contrib /usr/bin/pacdiff pacman-contrib /usr/bin/paclist pacman-contrib /usr/bin/paclog-pkglist pacman-contrib /usr/bin/pacscripts pacman-contrib /usr/bin/pacsearch pacman-contrib /usr/bin/pacsort pacman-contrib /usr/bin/pactree pacman-contrib /usr/bin/rankmirrors pacman-contrib /usr/bin/updpkgsums pacman-contrib /usr/lib/ pacman-contrib /usr/lib/systemd/ pacman-contrib /usr/lib/systemd/system/ pacman-contrib /usr/lib/systemd/system/paccache.service pacman-contrib /usr/lib/systemd/system/paccache.timer pacman-contrib /usr/share/ pacman-contrib /usr/share/man/ pacman-contrib /usr/share/man/man8/ pacman-contrib /usr/share/man/man8/checkupdates.8.gz pacman-contrib /usr/share/man/man8/paccache.8.gz pacman-contrib /usr/share/man/man8/pacdiff.8.gz pacman-contrib /usr/share/man/man8/pacsort.8.gz pacman-contrib /usr/share/man/man8/pactree.8.gz pacman-contrib /usr/share/man/man8/updpkgsums.8.gz pacman-contrib /usr/share/vim/ pacman-contrib /usr/share/vim/vimfiles/ pacman-contrib /usr/share/vim/vimfiles/ftdetect/ pacman-contrib /usr/share/vim/vimfiles/ftdetect/PKGBUILD.vim pacman-contrib /usr/share/vim/vimfiles/ftplugin/ pacman-contrib /usr/share/vim/vimfiles/ftplugin/PKGBUILD.vim pacman-contrib /usr/share/vim/vimfiles/syntax/ pacman-contrib /usr/share/vim/vimfiles/syntax/PKGBUILD.vim
Um den verbrauchten Speicherplatz des „Pacman-Cache“ im Verzeichnis /var/cache/pacman/pkg
zu ermitteln, kann nachfolgender Befehl verwendet werden:
# du -sh /var/cache/pacman/pkg 667M /var/cache/pacman/pkg
Um durch einen Testlauf vorab erst einmal ermitteln zu können, wie viel Speicherplatz durch eine Bereinigung mittels dem Befehl paccache
eingespart bzw. freigegeben werden kann, kann nachfolgender Befehl verwendet werden:
# paccache -dk2 ==> finished dry run: 17 candidates (disk space saved: 313.61 MiB)
Um alle Pakete zu entfernen, welche nicht mehr installiert sind kann nachfolgender Befehl verwendet werden:
# paccache -ruk0 ==> finished: 1 packages removed (disk space saved: 416.58 KiB)
Um nur die jüngsten zwei Versionen aller Pakete zu behalten und alle vorhergehenden Versionen zu entfernen, kann nachfolgender Befehl verwendet werden:
# paccache -vrk2 removed '/var/cache/pacman/pkg/tzdata-2020a-1-x86_64.pkg.tar.zst' removed '/var/cache/pacman/pkg/vim-8.2.1584-1-x86_64.pkg.tar.zst' removed '/var/cache/pacman/pkg/python-setuptools-1:50.3.0-1-any.pkg.tar.zst' removed '/var/cache/pacman/pkg/glib2-2.64.5-1-x86_64.pkg.tar.zst' removed '/var/cache/pacman/pkg/glib2-2.66.1-1-x86_64.pkg.tar.zst' removed '/var/cache/pacman/pkg/vim-runtime-8.2.1584-1-x86_64.pkg.tar.zst' removed '/var/cache/pacman/pkg/linux-lts-5.4.63-1-x86_64.pkg.tar.zst' removed '/var/cache/pacman/pkg/linux-lts-5.4.70-1-x86_64.pkg.tar.zst' removed '/var/cache/pacman/pkg/libldap-2.4.50-2-x86_64.pkg.tar.zst' removed '/var/cache/pacman/pkg/util-linux-2.36-3-x86_64.pkg.tar.zst' removed '/var/cache/pacman/pkg/linux-firmware-20200817.7a30af1-1-any.pkg.tar.zst' removed '/var/cache/pacman/pkg/python-cryptography-3.1-1-x86_64.pkg.tar.zst' removed '/var/cache/pacman/pkg/pacman-mirrorlist-20200801-1-any.pkg.tar.zst' removed '/var/cache/pacman/pkg/ansible-2.9.13-1-any.pkg.tar.zst' removed '/var/cache/pacman/pkg/ansible-2.10.0-1-any.pkg.tar.zst' removed '/var/cache/pacman/pkg/ca-certificates-mozilla-3.56-1-x86_64.pkg.tar.zst' removed '/var/cache/pacman/pkg/openssh-8.3p1-4-x86_64.pkg.tar.zst' ==> finished: 17 packages removed (disk space saved: 313.61 MiB)
/usr/lib/systemd/system/paccache.timer
Um mittels dem Befehl
paccache -r
automatisch eine Bereinigung durchzuführen, gibt es einen systemd
-Timer.
Bei aktiviertem Timer wird der „Pacman-Cache“ - wöchentlich bereinigt.
Damit jedoch wöchentlich durch den systemd - timer eine Bereinigung durchgeführt werden kann, muss mit nachfolgendem Befehl, der mit der Installation mit gekommene Timer
/usr/lib/systemd/system/paccache.timer
aktiviert werden:
# systemctl enable --now paccache.timer Created symlink /etc/systemd/system/timers.target.wants/paccache.timer → /usr/lib/systemd/system/paccache.timer.
* Die Angabe des Parameters –now
bewirkt die sofortige Ausführung!
Ob dies korrekt funktioniert hat, kann mit nachfolgendem Befehl überprüft werden:
# systemctl list-timers NEXT LEFT LAST PASSED UNIT ACTIVATES Fri 2020-12-04 00:00:00 CET 14h left Thu 2020-12-03 08:29:45 CET 33min ago shadow.timer shadow.service Fri 2020-12-04 08:45:04 CET 23h left Thu 2020-12-03 08:45:04 CET 18min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service Mon 2020-12-07 00:00:00 CET 3 days left n/a n/a paccache.timer paccache.service 3 timers listed. Pass --all to see loaded but inactive timers, too.