Comment empêcher la mise à jour d'un paquet spécifique?

319

En raison de bogue n ° 693758 , je voudrais empêcher apt-get upgrade et Update Manager de mettre à jour le paquet "libgtk2.0-0".

Comment cela peut-il être réalisé?

    
posée Ivan 23.12.2010 - 18:29
la source

12 réponses

466

Holding

Il existe quatre manières de retenir les paquets: avec dpkg, apt, aptitude ou dselect.

dpkg

Mettre un paquet en attente:

echo "<package-name> hold" | sudo dpkg --set-selections

Supprimer le hold:

echo "<package-name> install" | sudo dpkg --set-selections

Afficher l’état de vos paquets:

dpkg --get-selections

Affiche l’état d’un seul paquet:

dpkg --get-selections | grep "<package-name>"

apt

Tenez un paquet:

sudo apt-mark hold <package-name>

Supprimer le hold:

sudo apt-mark unhold <package-name>

dselect

Avec dselect, entrez dans l'écran [S] elect, trouvez le paquet que vous souhaitez conserver dans son état actuel et appuyez sur = ou H . Les modifications prendront effet immédiatement après la sortie de l'écran [S] elect.

Les approches suivantes sont limitées dans la mesure où le verrouillage / la tenue d’un paquet dans aptitude ou synaptic n’affecte pas apt-get / apt.

aptitude

Tenez un paquet:

sudo aptitude hold <package-name>

Supprimer le hold:

sudo aptitude unhold <package-name>

Verrouillage avec le gestionnaire de paquets Synaptic

Accédez à Gestionnaire de packages Synaptic (System & gt; Administration & gt; Gestionnaire de packages Synaptic).

Cliquez sur le bouton de recherche et tapez le nom du package.

Lorsque vous trouvez le package, sélectionnez-le et accédez au menu Package , puis sélectionnez Verrouiller la version .

Ce paquet ne sera plus affiché dans le gestionnaire de mise à jour et ne sera pas mis à jour.

    
réponse donnée hhlp 23.12.2010 - 19:04
la source
43

Pour mettre un paquet "foo" en attente:

echo "foo hold" | dpkg --set-selections

Dans votre cas, nous allons mettre le vin en attente:

sudo -i
echo "wine hold" | dpkg --set-selections

Pour supprimer le blocage:

sudo -i
echo "wine install" | dpkg --set-selections
    
réponse donnée Panther 08.12.2011 - 21:15
la source
28

Je cherchais la même chose et après de nombreuses recherches, j'ai découvert qu'en utilisant la syntaxe suivante, vous pouviez interdire une version spécifique mais autoriser la prochaine mise à jour:

Package: compiz-plugins-main
Pin: version 1:0.9.7.0~bzr19-0ubuntu10.1
Pin-Priority: -1

Cela va dans le fichier / etc / apt / preferences.

    
réponse donnée soger 22.07.2013 - 13:13
la source
19

Installez synaptic en utilisant sudo apt-get install synaptic .

Exécuter en utilisant gksudo synaptic et dans la zone de recherche, localisez le paquet que vous souhaitez verrouiller, par exemple: gedit

Dans le menu du package, sélectionnez Verrouiller la version :

Et c’est tout, la version actuellement installée au moment du verrouillage restera installée même pendant les mises à niveau.

    
réponse donnée Bruno Pereira 08.12.2011 - 21:06
la source
16

Le fait d’empêcher l’installation d’un paquet est appelé "tenue de paquet" et il est très simple à faire:

echo package_name hold | dpkg --set-selections

... où * nom_package * est le nom du package que vous souhaitez empêcher l'installation.

Remarque: la commande ci-dessus suppose des privilèges root. En d'autres termes, vous devrez probablement taper sudo su avant de l'exécuter.

    
réponse donnée RobotHumans 05.02.2011 - 02:18
la source
4

Je suis synaptique, vous pouvez geler la version d'un paquet spécifique Je ne suis pas sûr à 100% si cela va modifier apt-get, mais cela arrêtera définitivement le gestionnaire de mises à jour.

Pour geler un paquet, sélectionnez-le dans synaptic, puis ouvrez le menu du paquet et sélectionnez la version figée.

J'espère que ça aide

edit: Cet question 16668 traite d'une situation similaire

    
réponse donnée Allan 23.12.2010 - 18:35
la source
4

Depuis un certain temps, apt-get est remplacé par apt , donc par exemple, je veux empêcher Firefox de mettre à jour vers une version supérieure à 56, car beaucoup de modules complémentaires, comme " Les groupes d'onglets " ne fonctionnent plus avec le nouveau Firefox 57 (voir" Mise à jour des extensions Web ").

Il est possible de stocker plusieurs paquets avec une seule commande et d'utiliser des caractères génériques.

Empêchez Firefox de se mettre à jour

sudo apt-mark hold firefox firefox-locale-*

Si vous souhaitez les retrouver plus tard, ce sera la commande:

sudo apt-mark unhold firefox firefox-locale-*
    
réponse donnée rubo77 19.11.2017 - 08:45
la source
3

Tout ce que vous avez toujours voulu savoir sur le "maintien" et le "pinning" des paquets dans des versions spécifiques: lien

    
réponse donnée Jeff Ferland 23.12.2010 - 22:09
la source
3

Voir les bogues # 75332 , # 158981 et # 72806 .

Le résumé indique que le niveau d’apt-get / aptitude ne déclenche pas le statut de maintien dans dpkg (voir le bogue 72806 en particulier) et update-manager lit le statut de dpkg.

La solution

est exécutée en tant que root: echo "package hold" | dpkg --set-selections

    
réponse donnée jasper 26.11.2012 - 08:24
la source
1

Si Synaptic est installé, vous pouvez sélectionner le package et utiliser le menu Package - & gt; Verrouiller la version pour empêcher sa mise à jour.

Vous pouvez installer Synaptic avec sudo apt-get install synaptic. Personnellement, je trouve cela plus utile que le Software Center ... Et puis, je suis assez vieux à l'école. :)

    
réponse donnée dinchamion 08.12.2011 - 21:06
la source
1

Vous pouvez utiliser sur aptitude le "remplacement spécifique", comme ceci:

aptitude reinstall ~i oracle-java8-jre:

Il s’agit d’une utilisation unique de (non stockée pour de futures réinstallations), conservez un remplacement spécifique, pour réinstaller tous les packages de votre système, mais pas oracle-java8-jre.

Si vous utilisez un remplacement spécifique, le paquet sera momentanément dans l’état de garder une aptitude ne tentera pas de l’installer.

Une très bonne chose si vous pensez que votre système a été compromis.

    
réponse donnée cabonamigo 18.05.2017 - 18:27
la source
0

De temps en temps, on peut vouloir retenir tous les paquets actuellement installés. Voici comment.

Sauvegardez d'abord l'état actuel pour pouvoir annuler:

dpkg --get-selections > current_selections.txt

Ensuite, pour retenir tous les paquets:

dpkg --get-selections | sed -r "s/\tinstall/hold/" |dpkg --set-selections

Enfin, lorsque vous souhaitez revenir à l’état précédent:

dpkg --set-selections < current_selections.txt

Il peut s’agir d’un cas d’utilisation lors de la création d’un snapshot VM ou Amazon AMI pour migrer d’un environnement QA vers un environnement de production.

    
réponse donnée JVW 14.01.2015 - 20:46
la source

Lire d'autres questions sur les étiquettes