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


En raison de bug # 693758 Je voudrais empêcher apt-get upgrade et Update Manager de la mise à jour du package "libgtk2.0-0".

Comment cela peut il etre accompli?


324
2017-12-23 17:29


origine


@hhlp: Mais cette question concerne un paquet qui n'a jamais été installé. - Nathan Osman
@George Edison - Il y a aussi un paquetage qui vous permet de ne pas mettre à jour le paquet. Tenir un paquet signifie donc que vous dites au gestionnaire de paquet de garder la version actuelle, peu importe quoi. Ceci est utile si une version plus récente d'un programme en cours de fonctionnement se rompt après une mise à jour. (vous ne pouvez pas tenir un paquet qui n’a jamais été installé; voyez aussi ma question est la même). disable packages from the auto-update - hhlp


Réponses:


En portant

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 la cale:

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

Afficher le statut de vos paquets:

dpkg --get-selections

Afficher le statut d'un package unique:

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

apte

Tenez un paquet:

sudo apt-mark hold <package-name>

Supprimer la cale:

sudo apt-mark unhold <package-name>

dselect

Avec dselect, accédez à l'écran [S] elect, trouvez le package 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 la cale:

sudo aptitude unhold <package-name>

Verrouillage avec le gestionnaire de paquets Synaptic

Aller à Gestionnaire de paquets Synaptic (Système> Administration> Gestionnaire de paquets Synaptic).

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

Lorsque vous trouvez le paquet, sélectionnez-le et accédez au Paquet menu et sélectionnez Version serrure.

Synaptic menu

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


474
2017-12-23 18:04



Cela fonctionne également pour empêcher un paquet d'être installé. Lors de l'installation devscripts, beaucoup emballés sont tirés en paquets recommandés. Comme je n'ai pas besoin d'un serveur de messagerie (postfix), je pourrais désactiver l'installation en cours d'exécution echo postfix hold | sudo dpkg --set-selections avant de courir sudo apt-get install devscripts. Cette action de maintien persiste uniquement pour cette installation, une fois l'installation terminée, les sélections sont réinitialisées. - Lekensteyn
Il convient également de souligner que les réservations de paquets rompent parfois les mises à niveau et les correctifs en créant une situation dans laquelle il n’existe pas de solution juridique capable de calculer une dépendance. Si le paquet foo a une dépendance == <ou <= sur libbar, alors apt refusera de mettre à jour libbar aussi bien que foo. Au fil du temps, ces dépendances en cascade risquent de bloquer un grand nombre de mises à jour, notamment des mises à jour de sécurité importantes. Vous devrez soit supprimer la mise en attente et laisser la mise à niveau se produire, soit recréer les packages que vous conservez contre les nouvelles versions de ses dépendances si cela se produit. - Stephanie
Juste une note: apt-mark ne supporte pas hold dans la version 0.7.25 (Ubuntu Lucid) - Joril
Ceci est particulièrement utile lorsque vous tentez de retenir les pilotes graphiques. Pour les utilisateurs ATI, apt-mark hold fglrx fglrx-amdcccle fglrx-dev && aptitude hold fglrx fglrx-amdcccle fglrx-dev. - earthmeLon
Actuellement, synaptic et aptitude ne verrouillent que les paquets dans ces programmes. "Tout ce qui fait la mise à jour des paquets (lisez: Update Manager, apt-get, aptitude, etc.) ignore cela." De cette question. - holocronweaver


Pour mettre un paquet "foo" en attente:

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

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

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

Pour supprimer la cale:

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

43
2017-12-08 20:15



Notez également que lorsqu'un paquet est en attente, vous pouvez installer une version spécifique via apt-get install wine=1.2.3. Être en attente empêche apt-get (dist-)upgrade de le changer. - rcoup
@rcoup Si vous avez une ancienne version en attente, et que vous mettez à jour manuellement une nouvelle version sans supprimer le hold que vous décrivez, l'ancienne version sera-t-elle conservée dans le cache pour pouvoir y revenir? - cxrodgers
@cxrodgers le cache local (généralement /var/cache/apt/archives) est indépendant des hold & mises à jour, donc toutes les versions que vous avez téléchargées seront là jusqu'à ce que vous exécutiez apt-get [auto]clean - rcoup


Je cherchais la même chose et après de nombreuses recherches, j'ai découvert qu'en utilisant la syntaxe suivante, vous pouvez 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
Priorité Pin: -1

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


28
2017-07-22 11:13



C'est une bien meilleure façon que d'empêcher les mises à jour indéfiniment - Eero Aaltonen
Avec cette méthode, je pense que les chances sont plus grandes d'empêcher ubuntu "adware" comme Ubuntu One ou l'icône Amazon d'être réinstallé avec la prochaine mise à niveau de la version ... - Daniel Alder


Installer synaptic en utilisant sudo apt-get install synaptic.

Exécuter en utilisant gksudo synaptic et dans le champ de recherche, localisez le paquet que vous souhaitez verrouiller, à savoir: gedit

enter image description here

Dans le menu du package, sélectionnez Version serrure:

enter image description here

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


19
2017-12-08 20:06



Veuillez regarder "La version de Lock n'est pas aussi intelligente que ça en a l'air. Elle est censée faire ce qu'elle dit sur le tin, verrouiller la version ... Mais elle ne la verrouille que dans Synaptic. , apt-get, aptitude, etc.) ignore cela. Il s’agit probablement d’un comportement bogué, donc je m'attendrais à ce que cela soit corrigé à temps. " de askubuntu.com/questions/9607/what-does-lock-version-do. Quel est l'état actuel? Si quelque chose est verrouillé dans Synaptic, les autres gestionnaires de paquets "honoreront-ils" le verrou?
vasa1: Depuis la version 0.75.13, toujours pas :( Même problème avec aptitude. - syockit


Empêcher l'installation d'un paquet s'appelle "tenue de paquet" et c'est très simple à faire:

écho nom du paquet tenir | 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.


16
2018-02-05 01:18



Parfait ce était la réponse. Je vous remercie. - asoundmove
s/sudo su/sudo -s/g (ou sudo -i). (-i donnera un shell de connexion, -s ne sera pas). - derobert


Depuis quelque temps apt-get est remplacé par apt, par exemple, je veux empêcher Firefox de mettre à jour vers la version supérieure à 56, parce que beaucoup de modules complémentaires, comme "Groupes d'onglets" ne fonctionne plus avec le nouveau Firefox 57 (voir "WebExtensions Update").

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

Empêcher Firefox de se mettre à jour

sudo apt-mark hold firefox firefox-locale-*

Si vous souhaitez les détourner plus tard, ce serait la commande:

sudo apt-mark unhold firefox firefox-locale-*

5
2017-11-19 07:45





Je 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 il va définitivement arrêter le gestionnaire de mise à jour.

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

J'espère que cela t'aides

edit: Ceci question 16668 traite d'une situation similaire


4
2017-12-23 17:35





Tout ce que vous avez toujours voulu savoir sur le "maintien" et le "pinning" des paquets sur des versions spécifiques: https://help.ubuntu.com/community/PinningHowto


3
2017-12-23 21:09