web-dev-qa-db-fra.com

Comment sauter la mise à jour du noyau?

J'utilise Ubuntu 12.04.1 LTS i686 sur VirtulBox. Chaque fois que je vérifie les mises à jour, il y a un nouveau noyau Linux. Si j'installe le nouveau noyau, je dois installer à nouveau Virtulbox Guest Additions et redémarrer le serveur. Je ne veux pas faire ça chaque semaine. Je sais que je peux désélectionner manuellement les packages du noyau dans le gestionnaire de mise à jour, mais existe-t-il un moyen d'ignorer la mise à jour du noyau automatiquement? J'ai trouvé une réponse ici, mais c'est pour Ubuntu 10. Merci.

25
garconcn

APT (Advanced Packaging Tool) est le système utilisé par Ubuntu pour gérer tous les logiciels installés sur un système. Il vous permet de "fixer" un package à une certaine version, de sorte qu’il ne soit pas mis à jour lors de l’exécution du gestionnaire de mise à jour.

Pour épingler vos paquets de noyau, vous devez d’abord déterminer la version de votre noyau. Pour ce faire, ouvrez le gestionnaire de paquets Synaptic dans Système> Administration.

enter image description here

Tapez "linux-generic" dans le champ de recherche rapide et appuyez sur Entrée.

enter image description here

Notez le numéro indiqué dans la colonne "Version installée". Nous allons l'utiliser dans la prochaine étape.

Ensuite, nous devons éditer le fichier/etc/apt/preferences. Ouvrez-le en appuyant sur Alt + F2 pour afficher la fenêtre Exécuter l'application et en entrant:

gksudo gedit /etc/apt/preferences

enter image description here

Cela ouvrira une fenêtre gedit. Très probablement, la fenêtre sera vide, sauf si vous avez déjà joué avec APT auparavant.

Dans la fenêtre, tapez ce qui suit en remplaçant le numéro de version par le numéro de version trouvé dans le gestionnaire de paquets Synaptic.

Package: linux-generic linux-headers-generic linux-image-generic linux-restricted-modules-generic
Pin: version <insert version here>
Pin-Priority: 1001

enter image description here

Enregistrez le fichier et fermez gedit. Si vous ouvrez Update Manager, vous devriez voir que les mises à jour du noyau Linux sont maintenant masquées!

enter image description here

Source

Blocage de paquets avec APT/DPKG

Rappelez-vous le nom du paquet de votre noyau ci-dessus.

Ouvrez un terminal et lancez:

Sudo -s

Et frappé enter.

Entrez votre mot de passe pour Sudo:

echo kernel_package_name hold | dpkg --set-selections

Remplacez kernel_package_name par le nom du noyau que vous souhaitez épingler.

Maintenant, lancez:

Sudo apt-get update && Sudo apt-get upgrade

Pour retirer la broche de Apt/Dpkg:

Ouvrir un terminal

Sudo -s
echo kernel_package install | dpkg --set-selections

Remplacez kernel_package par le package que vous souhaitez épingler.

Maintenant, lancez:

Sudo apt-get update &&  Sudo apt-get upgrade

Source

Ce que vous essayez de faire s'appelle épingler. Les sources que je vous ai données ci-dessus ont l'essentiel sur ce que vous devez faire pour accomplir vos tâches.

18
LnxSlck

En une ligne c'est:

echo $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}') hold | dpkg --set-selections

Cela définira l'état de l'image du noyau de installer à maintenir et empêchera ainsi les mises à jour.

16
Christoph

Christoph one-liner de Christoph ne prend pas en compte le paquet supplémentaire (par exemple, linux-image-extra-3.13.0-45-generic). Utilisez plutôt celui-ci:

pour i dans $ (dpkg -l "* $ (uname -r) *" | grep image | awk '{print $ 2}'); echo $ je tiens | dpkg --set-selections; terminé
8
Superlexx

En ce qui concerne la suggestion de superlexx: cette ligne manquera le paquet "en-têtes":

dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'
linux-image-3.13.0-48-generic
linux-image-extra-3.13.0-48-generic

Alors, que diriez-vous simplement d'utiliser ce qui suit:

dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'
linux-headers-3.13.0-48-generic
linux-image-3.13.0-48-generic
linux-image-extra-3.13.0-48-generic
4
cloudeliver

Cela purge les packages de méta-noyau qui permettent les mises à jour du noyau:

Sudo apt purge $(apt-cache rdepends -i --installed linux-{headers,image}-$(uname -r)|awk '!/[0-9]/ && /^[ ]/{print $1}')

(Si vous venez de mettre à niveau le noyau, vous devez d'abord redémarrer avec le nouveau noyau ou rechercher la dernière version du noyau et l'utiliser ci-dessus au lieu de "$ (uname -r)".)

Il est toutefois recommandé d'installer les mises à jour de noyaux car il s'agit principalement de mises à jour de sécurité.

1
jarno

Version plus courte: (remplacez "hold" par "install" pour enlever la broche)

 dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2,"hold"}' | Sudo dpkg --set-selections

Pour voir l'état de toutes les images et en-têtes du noyau, exécutez:

 dpkg --get-selections | grep "linux-"
0

Sur Ubuntu 16.04.1, le code suivant fonctionne

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i hold | Sudo dpkg --set-selections; done

le est une amélioration du code de Superlexx, le Sudo est ajouté

dpkg -l | grep linux-image

Tu trouveras:

hi linux-image-4.4.0-34-generic ...

hi linux-image-extra-4.4.0-34-generic ...

notez que la balise lit maintenant hi, pas ii

enlever la goupille

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i install | Sudo dpkg --set-selections; done
0
Chen Deng-Ta