Bloquer les mises à jour du noyau avec dpkg

16

Je voudrais bloquer toutes les mises à jour du noyau fournies par la distribution en raison d'une mauvaise chose qui m'est récemment arrivée. (Je suis sur un dérivé Ubuntu 12.04 amd64.)

Je voudrais bloquer toutes les mises à jour de noyaux installés de la petite version 3.2 aux linux-headers, linux-headers-generic, linux-imageet les linux-image-extrapaquets. Le problème que je rencontre est que ceux-ci ont tous une version et si je bloque une version spécifique, rien n'est gagné car une nouvelle version sera installée (par exemple: si je bloque linux-image-3.2.0-35, linux-image-3.2.0-36n'est pas bloquée et pourrait toujours être installée avec un dist-upgradefrom apt.)

Naftuli Kay
la source
Notez que cela ne fonctionne plus dans Ubuntu 16.04. Vous devez mettre les packages sur liste noire à l'aide de ce guide: help.ubuntu.com/lts/serverguide/automatic-updates.html
user199618

Réponses:

17

Ce que vous devez utiliser est une fonctionnalité d'apt-get appelée holding

Vous pouvez le faire via Synaptic ou Dpkg, voici comment je tiendrais mon noyau en utilisant la méthode dpkg.

Vérifiez d'abord le nom de votre image de noyau

dpkg -l | grep linux-image

sortie pour moi:

ii  linux-image-3.2.0-4-amd64              3.2.35-2                           amd64        Linux 3.2 for 64-bit PCs
ii  linux-image-amd64                      3.2+46                             amd64        Linux for 64-bit PCs (meta-package)

puis dites à dpkg de conserver le métapaquet (la version générique sans aucun numéro de version)

echo linux-image-amd64 hold | sudo dpkg --set-selections

Vous pouvez ensuite vérifier cela a fonctionné via dpkg -l linux-image-amd64

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                       Version            Architecture       Description
+++-==========================-==================-==================-==========================================================
hi  linux-image-amd64          3.2+46             amd64              Linux for 64-bit PCs (meta-package)

Remarquez le «salut» en bas, h signifie maintenu et i signifie actuellement installé. Ce package est installé mais ne sera pas mis à niveau.

Vous pouvez inverser cela via

echo linux-image-amd64 install | sudo dpkg --set-selections

et peut encore vérifier via dpkg -l linux-image-amd64

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                       Version            Architecture       Description
+++-==========================-==================-==================-==========================================================
ii  linux-image-amd64          3.2+46             amd64              Linux for 64-bit PCs (meta-package)

Remarquez 'ii', le premier i signifie que ce paquet est configuré pour être installé et le second i signifie qu'il est actuellement installé. Ce package est installé et sera mis à niveau.

Pour plus d'informations sur ces indicateurs, reportez-vous man dpkgspécifiquement aux sections «États de sélection des packages».

cjh
la source
1
Mes noms d'images sont ici . Est-ce que je veux interdire "linux-image-generic"?
Naftuli Kay
1
@TKKocheran yes; vous souhaitez suspendre le métapaquet plutôt qu'une version spécifique.
cjh
Ne fonctionne pas - dpkg: avertissement: le paquet n'est pas dans l'état ni la base de données disponible à la ligne 1: linux-image-amd64 dpkg: avertissement: paquets inconnus trouvés; cela peut signifier que la base de données disponible est obsolète et doit être mise à jour via une méthode frontend; veuillez consulter la FAQ < wiki.debian.org/Teams/Dpkg/FAQ >
Arturas M