apt-pinning bestimmter Pakete

Zuweilen ist es notwendig, bestimmte Paketversionen fuer eine bestimmte Zeit zu behalten. Damit diese durch ein Systemupdate via apt-get und natuerlich auch Frontends wie Synaptic nicht mit aktualisiert werden, setzt man sie mittels apt-pinning auf hold. Selbstredend sollte man solcherart gepinnte Pakete nicht vergessen.

Ein auf ein non-PAE-System installiertes Lubuntu 12.10 ist ein aktuelles Beispiel dafuer. Direkt nach der Installation ohne gleichzeitiges Aktualisieren sollten 4 Pakete auf hold gesetzt werden:

1
2
3
4
echo "linux-generic hold" | sudo dpkg --set-selections
echo "linux-headers-generic hold" | sudo dpkg --set-selections
echo "linux-image-generic hold" | sudo dpkg --set-selections
echo "linux-libc-dev hold" | sudo dpkg --set-selections

Nun kann man das (restliche) System normal aktualisieren:

1
2
sudo apt-get update
sudo apt-get dist-upgrade

Gepinnte Pakete bleiben auf ihren bisherigen Versionen. In einer Shell durchgeführt wird dies auch entsprechend angezeigt.

Ist der Grund für das Pinning weggefallen bzw. behoben worden, setzt man entsprechende Pakete auf unhold:

1
2
3
4
echo "linux-generic install" | sudo dpkg --set-selections
echo "linux-headers-generic install" | sudo dpkg --set-selections
echo "linux-image-generic install" | sudo dpkg --set-selections
echo "linux-libc-dev install" | sudo dpkg --set-selections

Danach ist wieder zu aktualisieren:

1
2
sudo apt-get update
sudo apt-get dist-upgrade