Das Paketsystem benutzt eine private Datenbank mit Informationen über
installierte, nicht installierte und für eine Installation verfügbare Pakete.
Das Programm apt-get
benutzt diese Datenbank, um herauszufinden,
wie es die vom Benutzer angeforderten Pakete installieren soll und welche
zusätzlichen Pakete benötigt werden, damit die ausgewählten Pakete ordentlich
funktionieren.
Um diese Liste zu updaten, benutzt man das Kommando apt-get
update
. apt-get
sucht dann nach den Paketlisten in den
Archiven aus der /etc/apt/sources.list; In Die Datei /etc/apt/sources.list,
Abschnitt 3.1 finden Sie weitere Information über diese Datei.
Es ist eine gute Idee, dieses Kommando regelmäßig auszuführen, um sich selbst und sein System auf dem neusten Stand über mögliche Paket- bzw. Sicherheitsupdates zu halten.
Endlich kommt das, worauf Sie alle gewartet haben! Mit der fertigen sources.list und der Liste der verfügbaren Pakete auf dem neusten Stand ist alles, was Sie zu tun haben apt-get auszuführen, um das gewünschte Paket zu installieren. Zum Beispiel:
# apt-get install xchat
APT durchsucht seine Datenbank nach der aktuellsten Version dieses Paketes und holt es aus dem entsprechenden Archiv, welches in der sources.list spezifiziert ist. Wenn es eintritt, daß das Paket von einem anderen abhängt -- wie es hier der Fall ist -- überprüft APT die Abhängigkeiten und installiert die benötigten Pakete. Sehen Sie folgendes Beispiel:
# apt-get install nautilus Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: bonobo libmedusa0 libnautilus0 The following NEW packages will be installed: bonobo libmedusa0 libnautilus0 nautilus 0 packages upgraded, 4 newly installed, 0 to remove and 1 not upgraded. Need to get 8329kB of archives. After unpacking 17.2MB will be used. Do you want to continue? [Y/n]
Das Paket nautilus
benötigt die genannten Bibliotheken (bonobo
libmedusa0 libnautilus0), deshalb holt APT sie aus dem Archiv. Übergibt man
apt-get die Namen der Bibliotheken beim Aufruf mit, fragt es
nicht, ob es fortfahren soll, es akzeptiert automatisch, daß die genannten
Pakete installiert werden sollen.
Das bedeutet, daß APT nur um Bestätigung bittet, wenn es Pakete installieren muß, die man nicht auf der Kommandozeile übergeben hat.
Die folgenden Optionen von apt-get können hilfreich sein:
-h Dieser Hilfetext -d Nur herunterladen - Nicht installieren oder entpacken -f Versuche fortzufahren wenn der integrity check fehlschlägt -s Nichts wirklich tun. Simulation durchführen. -y Beantworte alle Fragen mit Ja anstatt sie zu stellen. -u Zeige eine Liste der Pakete die geupgraded werden.
Es können mehrere Pakete in einer Zeile zur Installation ausgewählt werden. Pakete, die über das Netzwerk oder Internet heruntergeladen wurden, werden im Verzeichnis /var/cache/apt/archives für spätere Installationen gespeichert.
Ebenfalls kann man Pakete zum Entfernen auf derselben Zeile angeben, indem man ein '-' direkt hinter den Paketnamen hängt wie im folgenden:
# apt-get install nautilus gnome-panel- Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: bonobo libmedusa0 libnautilus0 The following packages will be REMOVED: gnome-applets gnome-panel gnome-panel-data gnome-session The following NEW packages will be installed: bonobo libmedusa0 libnautilus0 nautilus 0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded. Need to get 8329kB of archives. After unpacking 2594kB will be used. Do you want to continue? [Y/n]
Im Abschnitt Pakete entfernen, Abschnitt 4.3 finden Sie weitere Details zum Entfernen von Paketen.
Wenn Sie ein installiertes Paket irgendwie beschädigt haben oder einfach die Dateien eines Paketes mit der aktuellsten verfügbaren Version neu installieren möchten, können Sie die Option --reinstall wie im folgenden nutzen:
# apt-get --reinstall install gdm Reading Package Lists... Done Building Dependency Tree... Done 0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1 not upgraded. Need to get 0B/182kB of archives. After unpacking 0B will be used. Do you want to continue? [Y/n]
Die Version des APT, die zur Erstellung dieser Anleitung benutzt wurde, ist Version 0.5.3, die aktuelle Version in Debian `unstable' (sid) zur Zeit als sie geschrieben wurde. Wenn diese Version installiert ist, kann APT auf Ihren Wunsch noch mehr: Sie können ein Kommando der Form apt-get install paket/distribution benutzen, um ein Paket einer anderen Distribution zu installieren, oder apt-get install package=version. Zum Beispiel:
# apt-get install nautilus/unstable
Dies installiert nautilus aus der Distribution `unstable', auch wenn die aktuell laufende Distribution `stable' ist. Mögliche Werte für 'distribution' sind stable, testing, und unstable.
Meistens ist es besser, die Option -t zu benutzen, um eine
Distribution zu wählen, was dazu führt, daß apt-get
diese
Distribution beim Auflösen von Abhängigkeiten bevorzugt.
WICHTIG: Die `unstable'-Version von Debian ist die Version, in welcher neue Versionen von Debian-Paketen zuerst erscheinen. Diese Distribution sieht alle Änderungen, die an Paketen vorgenommen werden, kleinere und größere, welche mehrere Pakete oder das ganze System betreffen können. Aus diesem Grund sollte sie nicht von unerfahrenen Benutzern oder solchen, die geprüfte Stabilität brauchen, verwendet werden.
Die `testing'-Distribution ist ein wenig besser als `unstable' was Stabilität angeht, jedoch sollte für Produktionssysteme die Distribution `stable' benutzt werden.
Wenn ein Paket nicht mehr gebraucht wird, kann es mit APT vom System entfernt werden. Geben Sie einfach apt-get remove package ein. Zum Beispiel:
# apt-get remove gnome-panel Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: gnome-applets gnome-panel gnome-panel-data gnome-session 0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded. Need to get 0B of archives. After unpacking 14.6MB will be freed. Do you want to continue? [Y/n]
Wie im obigen Beispiel zu sehen ist, kümmert sich APT ebenfalls um das Entfernen der Pakete, die das Paket, das Sie entfernen wollen, benötigen. Es gibt keine Möglichkeit, Pakete mit APT zu entfernen, ohne gleichzeitig die Pakete zu entfernen, die von dem entfernten Paket abhängen.
Wenn man apt-get
ausführt wie oben angegeben, werden die Pakete
entfernt, aber die Konfigurationsdateien, falls es welche gibt, bleiben auf dem
System. Für eine komplette Entfernung der Pakete, sehen Sie folgendes
Beispiel:
# apt-get --purge remove gnome-panel Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: gnome-applets* gnome-panel* gnome-panel-data* gnome-session* 0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded. Need to get 0B of archives. After unpacking 14.6MB will be freed. Do you want to continue? [Y/n]
Der '*' hinter den Namen der Pakete, die vom zu entfernenden Paket abhängen, bedeutet, daß deren Konfigurationsdateien ebenso entfernt werden.
Genau wie bei der Methode install kann man auch bei remove ein Symbol benutzen, um die Wirkung für ein einzelnes Paket umzukehren. Hier fügt man einem Paket ein '+' zu und das Paket wird installiert, anstatt entfernt zu werden.
# apt-get --purge remove gnome-panel nautilus+ Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: bonobo libmedusa0 libnautilus0 nautilus The following packages will be REMOVED: gnome-applets* gnome-panel* gnome-panel-data* gnome-session* The following NEW packages will be installed: bonobo libmedusa0 libnautilus0 nautilus 0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded. Need to get 8329kB of archives. After unpacking 2594kB will be used. Do you want to continue? [Y/n]
apt-get
listet die Pakete auf, die extra installiert werden (die
gebraucht werden, damit das Programm einwandfrei funktionieren kann), die
entfernt werden und die installiert werden (hier werden die extra-Pakete noch
einmal mit aufgelistet).
Das Aktualisieren von Paketen ist eine tolle Sache mit APT. Es braucht dafür nur einen einzigen Befehl: apt-get upgrade. Man kann dieses benutzen, um Pakete aus der gleichen Distribution zu aktualisieren, oder aus einer neuen Distribution, obwohl für letzteres apt-get dist-upgrade empfehlenswerter ist; Siehe Upgrade einer Debian-Version, Abschnitt 4.5 für weitere Einzelheiten.
Es ist sinnvoll, diesen Befehl mit der Option -u auszuführen. Diese Option läßt APT die komplette Liste der Pakete anzeigen, die aktualisiert werden sollen. Ohne diese Option aktualisiert man quasi blind. APT lädt die aktuellsten Versionen aller Pakete herunter und installiert sie in der richtigen Reihenfolge. Es ist wichtig, daß vor jedem Aktualisieren der Pakete apt-get update ausgeführt wird. Siehe Abschnitt Update der Liste der verfügbaren Pakete, Abschnitt 4.1. Zum Beispiel:
# apt-get -u upgrade Reading Package Lists... Done Building Dependency Tree... Done The following packages have been kept back cpp gcc lilo The following packages will be upgraded adduser ae apt autoconf debhelper dpkg-dev esound esound-common ftp indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc 29 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded. Need to get 5055B/5055kB of archives. After unpacking 1161kB will be used. Do you want to continue? [Y/n]
Das ganze ist extrem einfach. Die ersten paar Zeilen sagen, daß einige Pakete zurückgehalten werden (have been kept back). Das bedeutet, daß es neuere Versionen dieser Pakete gibt, die aus irgendeinem Grund nicht installiert werden. Mögliche Gründe sind unerfüllbare Abhängigkeiten (z.B. wenn ein Paket, von dem das neue Paket abhängt, nicht im Archiv verfügbar ist) oder neue Abhängigkeiten (das Paket hängt nun von neuen Paketen ab).
Es gibt keine "saubere" Lösung für das erste Problem. Für den zweiten Fall kann man apt-get install für das spezielle Paket ausführen, das zurückgehalten wurde, da dann auch die Abhängigkeiten aufgelöst werden. Eine noch sauberere Lösung ist es, dist-upgrade zu benutzen. Siehe Abschnitt Upgrade einer Debian-Version, Abschnitt 4.5.
Diese Funktion erlaubt es, ein ganzes Debian-System entweder über das Internet oder von einer neuen CD (die Sie kaufen oder aus dem Internet herunterladen können) auf einmal zu aktualisieren.
Außerdem ist es sinnvoll, wenn an den Abhängigkeiten zwischen den Paketen Änderungen vorgenommen wurden. Mit apt-get upgrade werden solche Pakete nicht installiert (sie werden auf dem derzeitigen Stand gehalten kept back).
Wenn auf Ihrem System z.B. Revision 0 der stabilen Debian-Version läuft und
Sie sich Revision 3 auf CD kaufen, können Sie APT benutzen, um ein Upgrade auf
die neue Version von CD durchzuführen. Dafür benutzen Sie
apt-cdrom
(Siehe Abschnitt Hinzufügen einer CD-ROM in die sources.list,
Abschnitt 3.4), um die CD zu Ihrer /etc/apt/sources.list
hinzuzufügen und führen Sie apt-get dist-upgrade aus.
Es ist wichtig zu wissen, daß APT immer nach der aktuellsten Version eines Pakets sucht. Wenn also Ihre /etc/apt/sources.list auf ein Archiv zeigt, das eine neuere Version eines Pakets enthält als sich auf der CD befindet, lädt APT das Paket aus diesem herunter.
In dem Beispiel aus Abschnitt Upgrade von Paketen, Abschnitt 4.4 sehen wir, daß manche Pakete nicht aktualisiert wurden (kept back). Wir werden dieses Problem nun mit der Funktion dist-upgrade lösen:
# apt-get -u dist-upgrade Reading Package Lists... Done Building Dependency Tree... Done Calculating Upgrade... Done The following NEW packages will be installed: cpp-2.95 cron exim gcc-2.95 libident libopenldap-runtime libopenldap1 libpcre2 logrotate mailx The following packages have been kept back lilo The following packages will be upgraded adduser ae apt autoconf cpp debhelper dpkg-dev esound esound-common ftp gcc indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc 31 packages upgraded, 10 newly installed, 0 to remove and 1 not upgraded. Need to get 0B/7098kB of archives. After unpacking 3118kB will be used. Do you want to continue? [Y/n]
Hier ist zu bemerken, daß die Pakete aktualisiert werden, aber neue Pakete (neue Abhängigkeiten der aktualisierten Pakete) zusätzlich installiert werden. Weiterhin wird lilo immer noch nicht aktualisiert, es gibt möglicherweise schwerwiegendere Probleme mit diesem Paket. Wir können das prüfen, in dem wir folgendes ausführen:
# apt-get -u install lilo Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2 logrotate mailx The following packages will be REMOVED: debconf-tiny The following NEW packages will be installed: cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2 logrotate mailx The following packages will be upgraded lilo 1 packages upgraded, 9 newly installed, 1 to remove and 31 not upgraded. Need to get 225kB/1179kB of archives. After unpacking 2659kB will be used. Do you want to continue? [Y/n]
Hier erfahren wir, daß das neue lilo einen Konflikt mit dem Paket
debconf-tiny
hat, was bedeutet, daß wir es nicht installieren
(oder aktualisieren) können, ohne debconf-tiny zu entfernen.
Um herauszufinden, wovon ein Paket zurückgehalten oder entfernt wird, können Sie folgendes tun:
# apt-get -o Debug::pkgProblemResolver=yes dist-upgrade Reading Package Lists... Done Building Dependency Tree... Done Calculating Upgrade... Starting Starting 2 Investigating python1.5 Package python1.5 has broken dep on python1.5-base Considering python1.5-base 0 as a solution to python1.5 0 Holding Back python1.5 rather than change python1.5-base Investigating python1.5-dev Package python1.5-dev has broken dep on python1.5 Considering python1.5 0 as a solution to python1.5-dev 0 Holding Back python1.5-dev rather than change python1.5 Try to Re-Instate python1.5-dev Done Done The following packages have been kept back gs python1.5-dev 0 packages upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
Auf diesem Wege ist es einfach festzustellen, daß das python1.5-dev Paket wegen einer ungelösten Abhängigkeit zu python1.5 nicht installiert werden kann.
Wenn ein Paket installiert werden soll, bezieht APT von den Quellen, die in der
/etc/apt/sources.list aufgelistet sind, die nötigen Dateien, legt sie in ein
lokales Archiv (/var/cache/apt/archives/
) und fährt mit der
Installation fort. (sehen Sie Installieren von Paketen, Abschnitt
4.2).
Nach und nach kann dieses lokale Archiv immer größer werden und eine Menge
Platz auf der Festplatte belegen. Auch für diesen Fall bietet APT Werkzeuge
an, um sein lokales Archiv zu warten: apt-get
s clean
und autoclean Methoden.
apt-get clean
entfernt alles bis auf Lock-Dateien (sehen Sie Glossar, Abschnitt 1.2) aus
/var/cache/apt/archives/
und
/var/cache/apt/archives/partial/
. In der Folge muß APT ein Paket,
das Sie erneut installieren wollen auch erneut herunterladen.
apt-get autoclean
entfernt nur Pakete, die nicht mehr
heruntergeladen werden können.
Das folgende Beispiel sollte zeigen, wie apt-get autoclean arbeitet:
# ls /var/cache/apt/archives/logrotate* /var/cache/apt/archives/gpm* logrotate_3.5.9-7_i386.deb logrotate_3.5.9-8_i386.deb gpm_1.19.6-11_i386.deb
In /var/cache/apt/archives liegen zwei Versionen des Pakets
logrotate
und eine Version des Pakets gpm
.
# apt-show-versions -p logrotate logrotate/stable uptodate 3.5.9-8 # apt-show-versions -p gpm gpm/stable upgradeable from 1.19.6-11 to 1.19.6-12
apt-show-versions
shows that
logrotate_3.5.9-8_i386.deb
provides the up to date version of
logrotate
, so logrotate_3.5.9-7_i386.deb
is useless.
Also gpm_1.19.6-11_i386.deb
is useless because a more recent
version of the package can be retrieved.
# apt-get autoclean Reading Package Lists... Done Building Dependency Tree... Done Del gpm 1.19.6-11 [145kB] Del logrotate 3.5.9-7 [26.5kB]
apt-get autoclean entfernt also nur die alten Pakete. Für weitere Informationen über apt-show-versions sehen Sie Upgrade von Paketen spezieller Debian-Versionen, Abschnitt 4.9.
dselect
ist ein Programm, daß Debian-Benutzern hilft, zu
installierende Pakete auszuwählen. Viele halten es für zu kompliziert und
vielmehr langweilig, aber mit ein wenig Übung kann man durchaus Gefallen an
seiner konsolen-basierten ncurses-Oberfläche finden.
Eine Stärke von dselect ist es, daß es mit den Möglichkeiten umgehen kann, die Debian-Pakete haben, um andere Pakete zu empfehlen ("suggesting") oder vorzustellen ("recommending"). Um es zu benutzen, rufen Sie `dselect' als root auf. Wählen Sie 'apt' als Zugriffsmethode. Das ist zwar nicht dringend notwendig, aber wenn Sie keine CD-ROM benutzen und Pakete aus dem Internet herunterladen möchten, ist es der beste Weg.
Um ein besseres Verständnis über die Benutzung von dselect zu erhalten, lesen
Sie die Dokumentation auf der Debian-Homepage http://www.debian.org/doc/ddp
.
Nachdem Sie Ihre Auswahl mit deselect getroffen haben, benutzen Sie folgendes Kommando
# apt-get -u dselect-upgrade
wie im folgenden Beispiel:
# apt-get -u dselect-upgrade Reading Package Lists... Done Building Dependency Tree... Done The following packages will be REMOVED: lbxproxy The following NEW packages will be installed: bonobo console-tools-libs cpp-3.0 enscript expat fingerd gcc-3.0 gcc-3.0-base icepref klogd libdigest-md5-perl libfnlib0 libft-perl libgc5-dev libgcc300 libhtml-clean-perl libltdl0-dev libsasl-modules libstdc++3.0 metamail nethack proftpd-doc psfontmgr python-newt talk tidy util-linux-locales vacation xbill xplanet-images The following packages will be upgraded debian-policy 1 packages upgraded, 30 newly installed, 1 to remove and 0 not upgraded. Need to get 7140kB of archives. After unpacking 16.3MB will be used. Do you want to continue? [Y/n]
Im Vergleich: apt-get dist-upgrade auf demselben System:
# apt-get -u dist-upgrade Reading Package Lists... Done Building Dependency Tree... Done Calculating Upgrade... Done The following packages will be upgraded debian-policy 1 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 421kB of archives. After unpacking 25.6kB will be freed. Do you want to continue? [Y/n]
Viele der Pakete im oberen Beispiel werden installiert, weil andere Pakete sie "empfehlen ("suggest" or "recommend"). Andere werden aufgrund unserer Auswahl, die wir beim Navigieren durch die Paketlisten von dselect getroffen haben, installiert oder entfernt (Im Falle von lbxproxy z.B.). Dselect kann in Verbindung mit APT ein nützliches Werkzeug sein.
Viele benutzen die "testing"-Distribution, da sie stabiler ist als "unstable" und aktueller als "stable" ist. Benutzer, die aktuelle Versionen von Paketen wollen, sich aber nicht trauen, ihr ganzes System auf "unstable" umzustellen haben die Möglichkeit "testing" und "unstable" zu mischen. Auf der anderen Seite möchten konservativere Benutzer vielleicht "stable" und "testing" mischen.
Für diesen Zweck muß die folgende Zeile in die /etc/apt/apt.conf
eingefügt werden:
APT::Default-Release "testing";
Um nun Pakete aus unstable zu installieren, muß die Option -t benutzt werden:
# apt-get -t unstable install Paketname
Vergessen Sie aber nicht, daß Sie, um ein Paket aus einer anderen Debian
Version zu installieren, eine Quellzeile in die
/etc/apt/sources.list
einfügen müssen. In unserem Beispiel
brauchen wir Quellzeilen für die "unstable"-Distribution neben denen
für "testing".
apt-show-versions
bietet einen sicheren Weg für Benutzer
gemischter Systeme, um ihre Systeme zu aktualisieren, ohne mehr aus der weniger
stabilen Distribution zu installieren als sie im Sinn haben. Zum Beispiel ist
es möglich, nur die "unstable"-Pakete zu aktualisieren, in dem man
folgendes ausführt:
# apt-get install `apt-show-versions -u -b | grep unstable`
Manchmal gibt es Gründe, etwas in einem Paket zu verändern, und es fehlt die Zeit oder die Lust, diese Dinge auf neue Versionen des Paketes zu übertragen. Vielleicht haben Sie auch gerade Ihre Debian-Version auf 3.0 aktualisiert, aber möchten trotzdem ein Paket aus Version 2.2 behalten. Es ist möglich, die installierte Version zu markieren (pin), so daß sie nicht aktualisiert wird.
Diese Möglichkeit einzusetzen ist einfach. Editieren Sie einfach die Datei /etc/apt/preferences.
Das Format ist trivial:
Package: <Paket> Pin: <Pin-Definition> Priority: <Priorität des Pins>
Um zum Beispiel das Paket sylpheed
zu behalten, welches ich dazu
gebracht habe "reply-to-list" in Version 0.4.99 zu benutzen, füge ich
folgendes hinzu:
Package: sylpheed Pin: version 0.4.99*
Bemerken Sie das * (Sternchen/Asterisk). Es funktioniert als Platzhalter; das bedeutet, daß dieser "Pin" für alle Versionen die mit 0.4.99 beginnen gültig sein soll. Das ist nötig, da Pakete in Debian eine Nummer für die "Debian-Revision" enthalten und ich nicht verhindern möchte, daß diese Revisionen installiert werden. Folglich werden die Versionen 0.4.99-1 und 0.4.99-10 installiert, sobald sie verfügbar sind. Bemerken Sie, daß Sie das vermutlich nicht möchten, wenn Sie das Paket modifiziert haben, da diese Änderungen dann verloren gehen.
Das Priority Feld ist optional; wenn nicht anders spezifiziert hat der "Pin" die Priorität 989.
Lassen Sie uns einen Blick darauf werfen, wie die Pin-Priorität funktioniert. Eine niedrigere Priorität als Null bewirkt, daß das Paket nie installiert wird. Prioritäten von 0 bis 100 bezeichnen Pakete, die nicht installiert sind und keine verfügbare Version haben. Solche Pakete werden in der Auswahl verfügbarer Versionen nicht berücksichtigt. Die Priorität 100 bezeichnet ein installiertes Paket. Damit eine installierte Version von einer anderen ersetzt wird, muß die Priorität über 100 liegen.
Prioritäten über 100 sagen aus, daß ein Paket installiert werden soll. Normalerweise wird ein installiertes Paket nur durch neuere Versionen übersetzt. Alle Prioritäten zwischen 100 und 1000 (inklusive) führen zu diesem Normalverhalten. Ein Paket mit solcher Priorität wird nicht durch eine niedrigere Version ersetzt. Wenn ich also zum Beispiel sylpheed 0.5.3 installiert habe und einen Pin auf sylpheed 0.4.99 mit der Priorität 999 definiert habe, wird Version 0.4.99 nicht installiert werden, um den Pin zu erfüllen. Um Pakete deaktualisieren zu können, um einen Pin zu erfüllen, braucht der Pin eine Priorität von über 1000.
Ein Pin kann für die version, das release oder die Herkunft (origin) definiert werden.
Für einen Pin auf die version, wie oben beschrieben, kann man sowohl Versionsnummern als auch Platzhalter (Sternchen) verwenden. Letzteres spezifiziert mehrere Versionen in einem Pin.
Die Option release benutzt die Release-Datei aus den APT-Archiven oder von den CDs. Die Brauchbarkeit dieser Version verfällt, wenn Sie APT-Archive benutzen, die diese Datei nicht zur Verfügung stellen. Sie können den Inhalt der Release-Dateien, die Sie haben in /var/lib/apt/lists/ nachlesen. Die Parameter für ein Release sind: a (Archiv(Archive)), c (Sektion(Component)), v (Version(Version)), o (Herkunft(Origin)) und l (Label(Label)).
Beispiel:
Package: * Pin: release v=2.2*,a=stable,c=main,o=Debian,l=Debian Priority: 1001
In diesem Beispiel wählen wir die Debian-Version 2.2* (was 2.2r2, 2.2r3 sein kann -- r* bezeichnet so genannte "point releases", welche normalerweise Sicherheitsupdates und andere extrem wichtige Updates enthalten), das stable Archiv, die Sektion main (im Gegensatz zu contrib oder non-free) und Herkunft und Label Debian. Herkunft (o=) bezeichnet, wer die Release-Datei erstellt hat, das Label (l=) definiert den Namen des Debian-Distribution: Debian für Debian selbst und Progeny für Progeny Linux zum Beispiel. Ein Beispiel einer Release-Datei:
$ cat /var/lib/apt/lists/ftp.debian.org.br_debian_dists_potato_main_binary-i386_Release Archive: stable Version: 2.2r3 Component: main Origin: Debian Label: Debian Architecture: i386
APT HOWTO
1.8.4 - April 2003kov@debian.org
netzwurm@debian.org