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]

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-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 Aufruf aptitude 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 speichert aptitude 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

...

Die benutzerspezifischen Markierungen werden auch in der 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.

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 Ausgabe der Paketmarkierungen in der Textoberfläche von aptitude).

aptitude hold.png
Figure 1. 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 [automatisch-installierte-pakete-mit-aptitude].

Lesen und Anzeigen einer Markierung mit apt-mark

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 drei Unterkommandos showauto, showmanual und showhold für alle automatisch oder manuell installierten Pakete bzw. die Pakete, deren Zustand beibehalten wird.

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.

Auflistung aller manuell installierten Pakete mittels apt-mark
# apt-mark showmanual
abiword
acpi
acpi-support
acpi-support-base
...
#
Tip
Liste der Pakete eingrenzen, die überprüft werden

Geben Sie beim Aufruf keine weiteren Parameter an, werden alle Pakete geprüft. Übergeben Sie hingegen eine eigene Paketliste als Datei, untersucht apt-mark die darin genannten Pakete auf das Vorhandensein des jeweiligen Paketmarkierungen.

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 die drei Schalter auto für automatisch, manual für manuell und hold für gehalten, mit dem Sie die entsprechende Markierung für ein angegebenes Paket explizit setzen können. 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 [ausgewaehlte-pakete-nicht-aktualisieren].

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.

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
#

1. 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.

results matching ""

    No results matching ""