Pakete auf hold setzen
Um die Aktualisierung eines Pakets zu verhindern, obwohl eine neuere Version verfügbar ist, muss das Paket auf hold gesetzt werden. Hier kurz die Syntax, wie man das mit den verschiedenen Tools zur Paketverwaltung macht. Wer mehr darüber erfahren möchte schaue ins Debian Anwenderhandbuch.
Hinweis: Es ist anders als bei der Installation mit dpkg --install Dateiname darauf zu achten, dass der Paketname angeben wird und nicht die Paketdatei. Hat man Beispielsweise die Debian-Paketdatei qsampler_0.2.2-1_amd64.deb selbst gebaut oder aus dem Internet heruntergeladen, heißt das installierte Paket lediglich qsampler; Also ohne Versionsangaben und Dateiendung. Und man muss folglich das Paket qsampler auf hold setzen und nicht die Paketdatei. (Wie ein Paket letzten Endes wirklich heißt, findet man u.a. mit dpkg --info /Pfad/zur/Debian-Paketdatei heraus.)
|
Paket auf hold setzen
dpkg
root@debian:~# echo $PAKETNAME hold |dpkg --set-selections
Eine Kontrolle, ob Pakete die man auf hold setzen will überhaupt installiert sind, fehlt bei dieser Methode. Hat man z.B. einen Tippfehler gemacht, werden keinerlei Fehler ausgegeben. Anders bei der Benutzung von aptitude.
wajig
root@debian:~# wajig hold $PAKETNAME
aptitude
Es existiert auch eine Möglichkeit via aptitude ein Paket auf hold zu setzen: Allerdings verwendet aptitude eine eigene Datenbank, und nicht die von dpkg, um diesen Paketzustand zu speichern. Die Pakete werden also nur bei einem Upgrade mit aptitude zurückgehalten. Beim Aktualisieren mit anderen Tools (apt-get, feta, ...) werden neuere Versionen dennoch installiert.
root@debian:~# aptitude hold $PAKETNAME
apt
root@debian:~# apt-mark hold $PAKETNAME
Paket auf unhold setzen
Das ganze kann man später auch wieder rückgängig machen; dann werden die Pakete wieder normal aktualisiert.
dpkg
root@debian:~# echo $PAKETNAME install |dpkg --set-selections
aptitude
root@debian:~# aptitude unhold $PAKETNAME
apt
root@debian:~# apt-mark unhold $PAKETNAME
Alle Pakete die auf hold stehen anzeigen lassen
Alle Pakete die im Moment auf hold stehen, kann man sich wie folgt auflisten lassen:
dpkg
root@debian:~# dpkg --get-selections |awk '$2 == "hold" { print $1 }'
aptitude
root@debian:~# aptitude search ~ahold
apt
Wenn Paket A auf hold gesetzt wurde und Paket B in Abhängigkeit von A steht, so wird apt-mark nur Paket A als hold auflisten, selbst wenn B ebenfalls auf hold gesetzt wurde.
root@debian:~# apt-mark showhold
Das Changelog verfolgen
Ausgehen davon, dass man Pakete festhält, weil diese einen offenen Bugreport haben, kann man sich wie folgt die Änderungen dieser Paket anzeigen lassen und verfolgen welche Bugs geschlossen wurden.
dpkg -l | awk '$1=="hi" {printf "%s %s %s\n", $2, $3, $4}' | while read pkg ver arch; do apt-get -qq changelog $pkg | sed "/$pkg ($ver)/q" | pager done
Dabei wird das aktuelle Changelog mittels sed ab dem Eintrag für die aktuell installierte Version abgeschnitten, so dass nur neuere Einträge angezeigt werden.
Migration abgeschlossen: Dieser Artikel wurde vollständig aus dem alten Wiki migriert. |