Der Umgang mit dem Paketmanagementsystem ist unter Linux tägliches Handwerkszeug. Dabei gibt es immer wieder ein paar interessante Tricks und Kniffe, die ich hier nun für gentoo beschreiben möchte.
Upgrade des gesamten Systems
Ein Systemupgrade führe ich mit folgenden Schritten durch
# führt ein emerge --sync durch, aktualisiert den lokalen eix-Cache mit eix-update und zeigt die Unterschiede mit eix-diff an
eix-sync
# Overlays auf aktuellen Stand bringen (sofern man welche benutzt)
layman -S
# kurz für emerge --update --deep --newuse --ask --verbose --tree world
emerge -uDNavt world
# überflüssige Pakete entfernen
emerge -av depclean
# findet Pakete, die noch auf alte Programmbibliotheken verweisen und kompiliert diese neu
revdep-rebuild -v -- --ask
# Überflüssige Quellcodes und alte Binärpakete entfernen
eclean -d
# Konfigurationsdateien aktualisieren
dispatch-conf
# Prüfen, ob nicht mehr benötigte Pakete installiert sind
eix-test-obsolete
Auf serverfault.com gibt es eine interessante Diskussion wie man am Besten ein gentoo-System aktualisiert.
Emailbenachrichtigung über sicherheitsrelevante Paketupdates
Damit ich bei Sicherheitslücken in den installierten Programmen informiert werde, habe ich ein Cron-Skript unter /etc/cron.daily/glsa-check erstellt. Dieses ruft glsa-check auf und schickt eine Nachricht, falls eines oder mehrere Programme Sicherheitslücken aufweisen.
#!/bin/sh
export LANG=de_DE.UTF-8
export LANGUAGE=de_DE.UTF-8
# emerge --sync erforderlich, um glsa Meldungen zu bekommen
emerge --sync
glsa-check -n -q -l affected | mail -a "Content-Type: text/plain; charset=UTF-8" -e -s "glsa-check for $HOSTNAME" yourmailaddress@domain.com
Pakete inklusive Konfigurationsdateien vollständig entfernen
Ein einfaches Deinstallieren eines Paketes mit emerge löscht nicht die Konfigurationsdateien. Für den Fall, dass man diese auch löschen möchte, kann man dies tun mit einem
CONFIG_PROTECT="-*" emerge --unmerge package
Spezielle Paketversionen installiert halten
Manchmal möchte man ein Paket nicht aktualisieren und stattdessen die aktuelle Version beibehalten. Nun kann man einfach keine neuere Version installieren. Wenn man das gesamte System wie oben beschrieben aktualisieren oder bereinigen will, ist das natürlich schwierig. Mit einem
emerge -avt --noreplace sys-kernel/hardened-sources-3.10.1-r1
sorgt man dafür, dass emerge ein spezielles Paket in einer Version beibehält (siehe hierzu auch der Artikel Protecting slotted packages from ‚emerge –depclean‘).
[…] die erforderliche Pakete bash-completion (allgemeine Bash-Befehlsvervollständigungen) und gentoo-bashcomp (spezifische Befehlsvervollständigungen für gentoo) installiert. Sofern nicht gesetzt, muss man auch das bash-completion USE flag in der Datei /etc/portage/make.conf ergänzen und dann eine Systemaktualisierung durchführen. […]