Ein installiertes Debianpaket kann zusätzliche, lokale Markierungen besitzen. Diese beeinflussen z.B. dessen Aktualisierung oder — wenn kein anderes Paket mehr von ihm abhängt — veranlassen oder verhindern auch seine automatische Deinstallation.
Diese Markierungen werden teilweise bereits automatisch von APT und
aptitude
gesetzt, wenn es Pakete installiert, entfernt oder
aktualisiert. Als Systembetreuer können Sie jederzeit eingreifen und die
Markierungen eigenhändig setzen und entfernen.
Die folgenden Paketmarkierungen sind in Benutzung:
Die Markierung manuell installiert entspricht defacto dem Nicht-Vorhandensein der Markierung automatisch installiert. Ein Paket hat jeweils immer genau eine der beiden Markierungen manuell installiert oder automatisch installiert.
Die vorgenannten Paketmarkierungen werden von dpkg
(nur hold), APT und
aptitude
ausgewertet. Die Unterscheidung automatisch/manuell
installiert wird dazu in der Datei /var/lib/apt/extended_states
gespeichert, die hold-Markierungen in
/var/lib/dpkg/status
[7]
Informationen zu jedem Paket in der Datei /var/lib/apt/extended_states
(Ausschnitt).
... Package: gnome-menus Auto-Installed: 0 Architecture: i386 Package: libfont-afm-perl Auto-Installed: 1 Architecture: i386 Package: libhtml-parser-perl Auto-Installed: 1 Architecture: i386 ...
Ein Paket "auf hold" in der Datei /var/lib/dpkg/status
(Ausschnitt).
... Package: awesome Status: hold ok installed Priority: optional Section: x11 Installed-Size: ... ...
aptitude
speichert weitere Informationen zu den Paketen eigenständig
in der Datei /var/lib/aptitude/pkgstates
. Dazu gehören:
aptitude
pflegt eine Liste mit neuen Paketen, die in den Paketlisten
der abonnierten APT-Repositories aufgetaucht sind. Diese Markierung
können Sie mit dem Aufruf aptitude forget-new
zurücksetzen.
aptitude
zeigt an, warum ein Paket entfernt wird: wegen nicht (mehr)
erfüllter Abhängigkeiten, wegen Konflikten mit anderen Paketen, oder
weil es nicht mehr gebraucht wird (sprich: kein Paket mehr davon
abhängt). Wird solch eine Paketentfernung nur vorgemerkt, so speichert
aptitude
bis zur Entfernung auch den Grund für diese.
add-user-tag
eigene Markierungen setzen. Nach diesen suchen Sie im Paketbestand mit
dem Muster ?user-tag(Muster)
. Muster bezeichnet hier einen Regulären
Ausdruck, mit dem Sie die Markierung spezifizieren.
aptitude
-spezifische Zusatzinformationen zu Paketen (Ausschnitt).
... Package: python3-pkg-resources Architecture: amd64 Unseen: no State: 1 Dselect-State: 1 Remove-Reason: 0 ForbidVer: 18.8-1 User-Tags: broken-by-807773 ...
Diese benutzerspezifischen Markierungen werden auch in der Textoberfläche
(text-based user interface, kurz TUI) von aptitude
angezeigt, jedoch
können Sie diese dort nicht ändern.
Sichtbar werden alle Markierungen zu einem Paket, wenn Sie die Details
dazu erfragen – entweder direkt über die Kommandozeile oder in der
Textoberfläche zu aptitude
. Wir verdeutlichen Ihnen das hier anhand
des installierten und gehaltenen Pakets python-pkg-resources.
Auf der Kommandozeile rufen Sie hierfür aptitude
mit dem Unterkommando
show
gefolgt vom Paketnamen auf. In den Zeilen 2 und 3 der
nachfolgenden Ausgabe erfahren Sie einerseits, dass das Paket
python-pkg-resources automatisch installiert wurde und die Version 18.8-1
nicht lokal eingespielt werden darf. Darüberhinaus wurde eine manuelle
Markierung vergeben (broken-by-807773
), die kennzeichnet, dass das
Paket defekt ist (broken
). Die Ziffernfolge referenziert die Nummer
des Bugs im Debian Bug Tracking System (BTS) und ermöglicht Ihnen,
nachzulesen, warum der Eintrag da ist.
Darstellung der Markierungen zum Paket python-pkg-resources mittels aptitude
.
$ aptitude show python-pkg-resources Paket: python-pkg-resources Zustand: Installiert Verbotene Version: 18.8-1 Automatisch installiert: ja Version: 18.7-1 … Benutzermarkierungen: broken-by-807773 ... $
In der Textoberfläche von aptitude
bekommt jeder Eintrag in der
Paketliste zusätzliche Buchstaben. Dabei stehen die Buchstaben h
für
hold und A
für automatic (siehe Abbildung 2.12, „Ausgabe der Paketmarkierungen in der Textoberfläche von aptitude
“).
aptitude
kann ebenfalls nach allen Paketen fahnden, die automatisch
installiert wurden und somit das Flag automatic tragen. Es kennt dazu
das spezielle Muster ?automatic
(Kurzform ~M
) zum Unterkommando
search
. Ausführlicher besprechen wir das in „Automatisch installierte
Pakete mit aptitude
anzeigen“ in
Abschnitt 8.10.2, „aptitude
benutzen“.
Das Werkzeug apt-mark
ist spezialisiert auf die Paketmarkierungen und
kann Ihnen die Pakete ausgeben, bei denen nur ein bestimmtes Paketflag
gesetzt ist. Es kennt dazu die folgenden sechs Unterkommandos
showauto
showmanual
showinstall
showhold
showremove
showpurge
Nachfolgend sehen Sie beispielhaft nur das Ergebnis des Aufrufs für die
manuell installierten Pakete. Auf automatisch installierte Pakete gehen wir
genauer in Abschnitt 8.10, „Automatisch installierte Pakete anzeigen“ ein. Dem Umgang mit
dem Unterkommando showhold
für die Verwendung des hold-Flags in der
Praxis ist der Abschnitt „Ausgewählte Pakete nicht aktualisieren“ in
Kapitel 16, Ausgewählte Pakete nicht aktualisieren gewidmet.
Auflistung aller manuell installierten Pakete mittels apt-mark
.
# apt-mark showmanual abiword acpi acpi-support acpi-support-base ... #
apt-mark
erlaubt keine Eingrenzung, welche Pakete überprüft werden. Es
validiert stets den gesamten Paketbestand.
Die Markierungen automatic und manual werden von den Programmen zur
Paketverwaltung eigenständig gesetzt, wenn Sie Pakete installieren.
Grundlage sind die ausgewerteten Paketabhängigkeiten. Trotzdem können
Sie stets eigenhändig eingreifen, sofern dazu Ihrerseits Bedarf besteht.
apt-mark
kennt dafür diese sechs Schalter:
auto
install
manual
hold
purge
remove
Damit setzen Sie die entsprechende Markierung für ein angegebenes Paket
explizit. Dazu erwartet apt-mark
als Parameter ein einzelnes Paket oder
eine Paketliste. Die nachfolgende Ausgabe zeigt das Setzen der
Markierung manual für das Paket wireshark.
Setzen der Paketmarkierungen manual für das Paket wireshark.
# apt-mark manual wireshark wireshark wurde als manuell installiert festgelegt. #
Für das Halten eines Pakets existieren die Unterkommandos hold
und
unhold
. Welchen konkreten Nutzen das haben kann, erfahren Sie unter
„Ausgewählte Pakete nicht aktualisieren“ in
Kapitel 16, Ausgewählte Pakete nicht aktualisieren.
Um nur eine Auswahl an Paketen zu markieren, erlaubt apt-mark
eine
Paketliste in Form einer Datei, die Sie beim Aufruf mit übergeben:
apt-mark -f=paketliste manual
Die Datei ist eine Textdatei, in der pro Zeile ein Paketname steht. Mit obigem Aufruf werden alle Pakete auf „manuell installiert“ gesetzt, die in der übermittelten Paketliste angegeben sind.
Durch das Setzen von Paketmarkierungen verändert sich die Art und Weise,
wie die Paketabhängigkeiten bewertet werden. dpkg
, apt
, apt-get
und aptitude
respektieren die von Ihnen gesetzten Markierungen. apt
,
apt-get
und aptitude
empfehlen Ihnen bei einer Änderung des
Paketbestands beispielsweise andere Pakete als sonst, um die
Paketabhängigkeiten nicht zu verletzen. Oder sie schlagen vor, bestimmte
Pakete zu entfernen, da sie neu als nicht mehr gebraucht angesehen
werden.
Setzen oder Entfernen Sie bewusst das hold-Flag und legen somit eine Version explizit fest, nehmen Sie Einfluss auf den Zustand Ihres Systems. Wobei Ihnen das von Nutzen sein kann, erklären wir unter „Ausgewählte Pakete nicht aktualisieren“ (Kapitel 16, Ausgewählte Pakete nicht aktualisieren) ausführlicher.
Alternativ zu apt-mark
bietet sich auch aptitude
an. Dort heißen
die Unterkommandos etwas anders, ebenso agiert aptitude
vielleicht
ungewohnt. In der Standardeinstellung will es Pakete entfernen, die
mangels geänderter Abhängigkeiten nicht mehr benötigt werden. Im u.g.
Beispiel gibt es z.B. Pakete, die eine Abhängigkeit auf das Paket
wireshark haben, aber keine, die eine Abhängigkeit auf zshdb haben.
Entsprechend will aptitude
es auch direkt entfernen.
Setzen von Paketmarkierungen mit aptitude
.
# aptitude markauto wireshark zshdb Die folgenden Pakete werden ENTFERNT: zshdb{u} 0 Pakete aktualisiert, 0 zusätzlich installiert, 1 werden entfernt und 26 nicht aktualisiert. 0 B an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 451 kB frei werden. Möchten Sie fortsetzen? [Y/n/?] n Abbruch. #
Möchten Sie eine Markierung wieder aufheben, kennt aptitude
den
Schalter unmarkauto
. Das nachfolgende Beispiel demonstriert das
Vorgehen.
Aufheben von Paketmarkierungen mit aptitude
.
# aptitude unmarkauto wireshark zshdb Es werden keine Pakete installiert, aktualisiert oder entfernt. 0 Pakete aktualisiert, 0 zusätzlich installiert, 0 werden entfernt und 26 nicht aktualisiert. 0 B an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 0 B zusätzlich belegt sein. #
Dabei fällt auf, das aptitude
im Gegensatz zu apt-mark
nicht angibt,
dass sich eine Markierung geändert oder nicht geändert hat. Stattdessen
informiert es Sie darüber, dass es keine Pakete entfernt oder
aktualisiert. Kurioserweise aktualisiert es (in der Standardeinstellung)
nicht automatisch die Pakete, bei denen die hold-Markierung entfernt
wurde:
Setzen eines Paketes auf hold mit aptitude
.
# aptitude search '~U' i A awesome - Hochkonfigurierbarer Fenstermanager für X # aptitude hold awesome Es werden keine Pakete installiert, aktualisiert oder entfernt. 0 Pakete aktualisiert, 0 zusätzlich installiert, 0 werden entfernt und 26 nicht aktualisiert. 0 B an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 0 B zusätzlich belegt sein. # aptitude search '~U' ihA awesome - Hochkonfigurierbarer Fenstermanager für X # aptitude unhold awesome Es werden keine Pakete installiert, aktualisiert oder entfernt. 0 Pakete aktualisiert, 0 zusätzlich installiert, 0 werden entfernt und 26 nicht aktualisiert. 0 B an Archiven müssen heruntergeladen werden. Nach dem Entpacken werden 0 B zusätzlich belegt sein. # aptitude search '~U' i A awesome - Hochkonfigurierbarer Fenstermanager für X #
[7] In früheren
Debian-Veröffentlichungen wurden die hold-Markierungen von
aptitude
und dpkg
getrennt gespeichert und apt-get
wusste nichts
von der hold-Markierung. Auch wurde die automatisch
installiert-Markierung zuerst von aptitude
eingeführt und
dementsprechend anfangs nur in /var/lib/aptitude/pkgstates
gespeichert.