... 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 ...
Lokale Paketmarkierungen
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.
Paketmarkierungen, die von verschiedenen Programmen genutzt werden
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:
- automatisch installiert (automatic)
-
das Paket wurde automatisch installiert, i.d.R. als Abhängigkeit eines anderen Pakets (siehe ``Paketabhängigkeiten anzeigen'' in [paketabhaengigkeiten-anzeigen]). Diese Markierung veranlasst, dass dieses Paket wieder entfernt wird, wenn keine weiteren, installierten Pakete mehr von diesem abhängen.
- manuell installiert (manual)
-
das Paket wurde manuell, d.h. explizit installiert. Diese Markierung verhindert, dass dieses Paket automatisch mit entfernt wird, wenn kein weiteres Paket mehr von ihm abhängt (siehe ``Umgang mit Waisen'' in [umgang-mit-waisen]).
- halten (hold)
-
das Paket wird in der vorliegenden, installierten Version auf dem System gehalten und nicht aktualisiert (upgrade) oder deinstalliert (siehe
Pakete aktualisieren'' in [pakete-aktualisieren] und
Pakete deinstallieren'' in [pakete-deinstallieren]).
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
[1]
/var/lib/apt/extended_states
(Ausschnitt)/var/lib/dpkg/status
(Ausschnitt)... Package: awesome Status: hold ok installed Priority: optional Section: x11 Installed-Size: ... ...
Aptitude-spezifische Paketmarkierungen
aptitude
speichert weitere Informationen zu den Paketen eigenständig
in der Datei /var/lib/aptitude/pkgstates
. Dazu gehören:
- Verbotene Versionen ('forbid-version'/'ForbidVer')
-
Von Ihnen als lokaler Administrator nicht erwünschte Version, die nicht installiert wird, auf die nicht aktualisiert wird bzw. die beim Aktualisieren übersprungen wird.
- Neue Pakete ('New Packages'/'Unseen')
-
aptitude
pflegt eine Liste mit neuen Paketen, die in den Paketlisten der abonnierten APT-Repositories aufgetaucht sind. Diese Markierung können Sie mit dem Aufrufaptitude forget-new
zurücksetzen. - Entfernungsgrund ('Remove-Reason')
-
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 speichertaptitude
bis zur Entfernung auch den Grund für diese. - Benutzerspezifische Markierungen ('User Tags')
-
Sie als Benutzer dürfen für Pakete mit dem Unterkommando
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.
Lesen und Anzeigen einer Markierung mit aptitude
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.
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 Ausgabe der Paketmarkierungen in der Textoberfläche von aptitude
).

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
[automatisch-installierte-pakete-mit-aptitude].
Lesen und Anzeigen einer Markierung mit apt-mark
(apt-mark, showpurge
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
-
alle automatisch installierten Pakete
showmanual
-
alle manuell installierten Pakete
showinstall
-
alle Pakete, die installiert werden
showhold
-
alle Pakete, deren Zustand beibehalten wird
showremove
-
alle Pakete, die entfernt werden
showpurge
-
alle Pakete, die inklusive der Konfiguration entfernt werden
Nachfolgend sehen Sie beispielhaft nur das Ergebnis des Aufrufs für die manuell installierten Pakete. Auf automatisch installierte Pakete gehen wir genauer in [automatisch-installierte-pakete-anzeigen] ein. Dem Umgang mit dem hold-Flag in der Praxis ist der Abschnitt ``Ausgewählte Pakete nicht aktualisieren'' in [ausgewaehlte-pakete-nicht-aktualisieren] gewidmet.
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.
Setzen und Entfernen einer Markierung mit apt-mark
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
-
automatisch installiert
install
-
Paket wird installiert
manual
-
Paket wird manuell installiert
hold
-
Paket wird beibehalten
purge
-
Paket inklusive Konfiguration löschen
remove
-
Paket löschen
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'.
# 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
[ausgewaehlte-pakete-nicht-aktualisieren].
Tip
|
Liste der Pakete eingrenzen, deren Markierung geändert wird
Um nur eine Auswahl an Paketen zu markieren, erlaubt 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. |
Was passiert, wenn Paketmarkierungen geändert werden?
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'' ([ausgewaehlte-pakete-nicht-aktualisieren]) ausführlicher.
Setzen und Entfernen einer Markierung mit aptitude
Alternativ zu apt-mark
bietet sich auch aptitude
an. Dort heissen
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.
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.
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:
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 #
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.