Pakete auf hold setzen

Aus DebianforumWiki
Zur Navigation springen Zur Suche springen
Wiki ‹ Grundsatzfragen ‹ 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.png 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

Debianpackage.png 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.

Debianpackage.png wajig

root@debian:~# wajig hold $PAKETNAME

Debianpackage.png 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

Debianpackage.png 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.

Debianpackage.png dpkg

root@debian:~# echo $PAKETNAME install |dpkg --set-selections

Debianpackage.png aptitude

root@debian:~# aptitude unhold $PAKETNAME

Debianpackage.png 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:

Debianpackage.png dpkg

root@debian:~# dpkg --get-selections |awk '$2 == "hold" { print $1 }'

Debianpackage.png aptitude

root@debian:~# aptitude search ~ahold

Debianpackage.png 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.


Migriert.png Migration abgeschlossen: Dieser Artikel wurde vollständig aus dem alten Wiki migriert.