|
Das Paketsystem benutzt eine eigene 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. Im Kapitel Die Datei /etc/apt/sources.list
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:
root@linux #
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, dass 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:
root@linux #
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, dass die genannten
Pakete installiert werden sollen.
Das bedeutet, dass APT nur um Bestätigung bittet, wenn es Pakete
installieren muss, 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:
root@linux #
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 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:
root@linux #
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:
root@linux #
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, dass 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:
root@linux #
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:
root@linux #
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, dass 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.
root@linux #
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 diesen
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 für weitere
Einzelheiten.
Es ist sinnvoll, diesen Befehl mit der Option -u auszuführen. Diese
Option lässt 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, dass vor
jedem Aktualisieren der Pakete apt-get update ausgeführt wird. Siehe
Abschnitt Update der Liste der verfügbaren Pakete. Zum Beispiel:
root@linux #
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, dass einige
Pakete zurückgehalten werden (have been kept back). Das bedeutet, dass
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.
|
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.
Ausserdem 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), 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, dass 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 Upgrade von Paketen sehen wir, dass manche Pakete
nicht aktualisiert wurden (kept back). Wir werden dieses Problem nun mit
der Funktion dist-upgrade lösen:
root@linux #
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, dass 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:
root@linux #
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, dass das neue lilo einen Konflikt mit dem Paket
debconf-tiny hat, was bedeutet, dass 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:
root@linux #
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, dass das Packet
python1.5-dev 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).
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 clean und
autoclean Methoden.
apt-get clean entfernt alles bis auf Lock-Dateien aus
/var/cache/apt/archives/ und /var/cache/apt/archives/partial/. In der
Folge muss 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:
root@linux #
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.
root@linux #
apt-show-versions -p logrotate
logrotate/stable uptodate 3.5.9-8
root@linux #
apt-show-versions -p gpm
gpm/stable upgradeable from 1.19.6-11 to 1.19.6-12
|
apt-show-versions zeigt, dass logrotate_3.5.9-8_i386.deb
die aktuelle Version von logrotate bereitstellt, daher wird
logrotate_3.5.9-7_i386.deb nicht mehr benötigt. Ebenso wird
gpm_1.19.6-11_i386.deb nicht mehr benötigt, da eine aktuellere Version
von den Debian-Archiven heruntergeladen werden kann.
root@linux #
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.
|
dselect ist ein Programm, das 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, dass 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 dselect getroffen haben, benutzen Sie
folgendes Kommando
root@linux #
apt-get -u dselect-upgrade
|
wie im folgenden Beispiel:
root@linux #
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:
root@linux #
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 muss die folgende Zeile in die /etc/apt/apt.conf
eingefügt werden:
/etc/apt/apt.conf
|
APT::Default-Release "testing";
|
Um nun Pakete aus unstable zu installieren, muss die Option -t benutzt
werden:
root@linux #
apt-get -t unstable install Paketname
|
Vergessen Sie aber nicht, dass 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:
root@linux #
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 dass sie
nicht aktualisiert wird.
Diese Möglichkeit einzusetzen ist einfach. Editieren Sie einfach die
Datei /etc/apt/preferences.
Das Format ist trivial:
/etc/apt/preferences
|
Package: <Paket>
Pin: <Pin-Definition>
Pin-Priority: <Priorität des Pins>
|
Um zum Beispiel das Paket sylpheed in Version 0.4.99 zu behalten,
fügen wir folgendes hinzu:
/etc/apt/preferences
|
Package: sylpheed
Pin: version 0.4.99*
|
Beachten Sie das * (Sternchen/Asterisk). Es funktioniert als
Platzhalter; das bedeutet, dass 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, dass diese Revisionen installiert werden. Folglich werden die
Versionen 0.4.99-1 und 0.4.99-10 installiert, sobald sie verfügbar sind.
Beachten Sie, dass Sie das vermutlich nicht möchten, wenn Sie das Paket
modifiziert haben, da diese Änderungen dann verloren gehen.
Das Feld Pin-Priority 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, dass 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, muss die Priorität
über 100 liegen.
Prioritäten über 100 sagen aus, dass ein Paket installiert werden soll.
Normalerweise wird ein installiertes Paket nur durch neuere Versionen
ersetzt. 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:
/etc/apt/preferences
|
Package: *
Pin: release v=2.2*,a=stable,c=main,o=Debian,l=Debian
Pin-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
der Debian-Distribution: Debian für Debian selbst und Progeny für
Progeny Linux zum Beispiel. Ein Beispiel einer Release-Datei:
root@linux #
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
|
|
|
|