Non sei autorizzato a inviare commenti.

Come evitare l'aggiornamento di un pacchetto (es. kernel)

Mediante apt si può bloccare l'aggiornamento di un dato pacchetto.
Questo può essere molto comodo per evitare, ad esempio, l'aggiornamento accidentale del kernel o di altri pacchetti che non vogliamo sostituire, magari perchè modificati a nostro piacimento.

Supponiamo di avere i seguenti kernel installati da pacchetto ufficiale debian
dpkg -l | grep linux-image
 
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name                              Version                              Description
ii  linux-image-2.6-amd64             2.6.18+6etch3                        Linux kernel 2.6 image on AMD64
ii  linux-image-2.6.18-6-amd64        2.6.18.dfsg.1-18etch1                Linux 2.6.18 image on AMD64
Facendo un :
apt-get dist-upgrade -u

The following packages will be upgraded:
apache2 apache2-mpm-prefork apache2-utils apache2.2-common cupsys cupsys-bsd cupsys-client cupsys-common debconf debconf-i18n grub initramfs-tools initscripts libcupsimage2 libcupsys2 libfreetype6 libgd-tools libgd2-xpm libkrb53 libqt3-mt libtiff4 libxml2 linux-image-2.6.18-6-amd64 locales openssh-client openssh-server phpmyadmin proftpd selinux-policy-refpolicy-targeted ssh sysv-rc sysvinit sysvinit-utils tzdata

34 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 40.1MB of archives.
After unpacking 1122kB disk space will be freed.
Do you want to continue [Y/n]?
Come si può notare tra i pacchetti da aggiornare c'è proprio il kernel. Io preferisco sempre evitare aggiornamenti non necessari del kernel ed opto sempre per la regola: "se va, lascialo stare".
C'è anche da dire che aumentano sempre piu le occasioni in cui l'installazione di un nuovo kernel genera noie: vmware si arrabbia, i driver nvidia si arrabbiano etc.

Apt è molto ben documentato da debian. La guida ufficiale si trova qui.
Grazie al "pinning" apt può essere configurato per tralasciare gli aggiornamenti riguardanti uno o più pacchetti. In realtà ci si possono fare molte altre cose ma mi limito a questo.

Si edita il file /etc/apt/preferences. Se non esiste lo si crea:
vim /etc/apt/preferences

Package: linux-image-2.6.18-6-amd64
Pin: version 2.6.18.dfsg.1-18etch1
Pin-Priority: 1001

Package: linux-image-2.6-amd64
Pin: version 2.6.18+6etch3
Pin-Priority: 1001
rilanciando il comando:
apt-get dist-upgrade -u

The following packages will be upgraded:
apache2 apache2-mpm-prefork apache2-utils apache2.2-common cupsys cupsys-bsd cupsys-client cupsys-common debconf debconf-i18n grub initramfs-tools initscripts libcupsimage2 libcupsys2 libfreetype6 libgd-tools libgd2-xpm libkrb53 libqt3-mt libtiff4 libxml2 locales openssh-client openssh-server phpmyadmin proftpd selinux-policy-refpolicy-targeted ssh sysv-rc sysvinit sysvinit-utils tzdata

33 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 23.2MB of archives.
After unpacking 1122kB disk space will be freed.
Do you want to continue [Y/n]?
ecco che il pacchetto linux-image-2.6.18-6-amd64 non risulta più aggiornabile e la versione 2.6.18.dfsg.1-18etch1 correntemente installata non verrà piu aggiornata fino a quando non verrà modificato il file preferences.

E' importante specificare Pin-Priority: 1001. Dal manuale infatti si legge:

1001

La versione 0.4.99 di sylpheed non sarà mai sostituita da apt. Se disponibile apt installerà la versione 0.4.99 anche sostituendo una versione successiva del pacchetto già installata. Solo i pacchetti con priorità superiore a 1000 possono far retrocedere un pacchetto già installato.


Già che si parla di gestione di apt, aggiungo una nota a parte:

se voglio posso vedere la cronologia delle installazioni avvenute sul sistema mediante apt-get:

ls -lart /var/lib/dpkg/info | awk {'print $6" "$7"\t"$8'}