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.
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.
Tapez "linux-generic" dans le champ de recherche rapide et appuyez sur Entrée.
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
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
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!
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
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
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.
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.
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é
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
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é.
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-"
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