À cause du bug n° 693758, je voudrais empêcher apt-get upgrade
et le Gestionnaire de mises à jour de mettre à jour le paquet "libgtk2.0-0".
Comment cela peut-il être réalisé?
À cause du bug n° 693758, je voudrais empêcher apt-get upgrade
et le Gestionnaire de mises à jour de mettre à jour le paquet "libgtk2.0-0".
Comment cela peut-il être réalisé?
Il existe différentes manières de retenir des paquets : avec dpkg
, apt
, dselect
, aptitude
ou Synaptic.
Metre un paquet en attente :
echo " hold" | sudo dpkg --set-selections
Supprimer l'attente :
echo " install" | sudo dpkg --set-selections
Afficher l'état de tous vos paquets :
dpkg --get-selections
Afficher l'état d'un seul paquet :
dpkg --get-selections
Afficher tous les paquets en attente :
dpkg --get-selections | grep "\
`
Retenir un paquet :
sudo apt-mark hold
Supprimer l'attente :
sudo apt-mark unhold
Afficher tous les paquets en attente :
sudo apt-mark showhold
Avec dselect, allez à l'écran de sélection, trouvez le paquet que vous souhaitez maintenir dans son état actuel et appuyez sur = ou H. Les changements prendront effet immédiatement après la sortie de l'écran de sélection.
Les approches suivantes sont limitées en ce sens que verrouiller/retenir un paquet dans aptitude ou synaptic n'affecte pas apt-get/apt.
Retenir un paquet :
sudo aptitude hold
Supprimer l'attente :
sudo aptitude unhold
Allez dans Gestionnaire de paquets Synaptic (Système > Administration > Gestionnaire de paquets Synaptic).
Cliquez sur le bouton de recherche et tapez le nom du paquet.
Lorsque vous trouvez le paquet, sélectionnez-le et allez dans le menu Paquet et sélectionnez Verrouiller la version.
Ce paquet ne s'affichera désormais pas dans le gestionnaire de mises à jour et ne sera pas mis à jour.
`
Cela fonctionne également pour empêcher l'installation d'un paquet. Lors de l'installation devscripts
, de nombreux paquets sont tirés en tant que paquets recommandés. Comme je n'ai pas besoin d'un serveur de messagerie (postfix), je pourrais désactiver son installation en exécutant echo postfix hold | sudo dpkg --set-selections
avant d'exécuter sudo apt-get install devscripts
. Cette action de maintien persiste uniquement pour cette installation, après l'installation les sélections sont réinitialisées.
Il convient également de souligner que les maintiens de paquets peuvent parfois perturber les mises à niveau et les correctifs en créant une situation où il n'y a pas de solution légale que apt puisse calculer pour une dépendance. Si le paquet foo a une dépendance == < or <= sur libbar, alors apt refusera de mettre à jour libbar ainsi que foo. Avec le temps, ces dépendances en cascade peuvent bloquer un grand nombre de mises à jour, y compris des mises à jour de sécurité importantes. Vous devrez soit supprimer le maintien et laisser la mise à niveau se faire, soit reconstruire les paquets que vous retenez contre de nouvelles versions de leurs dépendances si cela se produit.
J'étais à la recherche de la même chose et après beaucoup de recherche j'ai trouvé qu'en utilisant la syntaxe suivante vous pouvez interdire une version spécifique mais permettre la prochaine mise à jour:
Forfait: compiz-plugins-main
Épingle: version 1:0.9.7.0~bzr19-0ubuntu10.1
Priorité d'épingle: -1
Cela va dans le fichier /etc/apt/preferences
.
Avec cette méthode, je pense que les chances sont plus grandes de prévenir les "logiciels publicitaires" d'Ubuntu tels qu'Ubuntu One ou l'icône Amazon d'être réinstallés lors de la prochaine mise à niveau de la version.
Cette méthode empêche également Aptitude de signaler qu'un paquet est "améliorable" (en supposant qu'une version plus ancienne soit utilisée que celle disponible dans le dépôt)
Notez également que tant qu'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 modifier.
@rcoup Si vous avez une ancienne version en attente, et que vous mettez manuellement à jour vers une nouvelle version sans enlever la mise en attente comme vous le décrivez, l'ancienne version sera-t-elle conservée en cache pour que vous puissiez y revenir ?
Installer synaptic
en utilisant sudo apt-get install synaptic
.
Exécutez en utilisant gksudo synaptic
et dans la zone de recherche, localisez le package 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 lors des mises à niveau.
Veuillez consulter "La version verrouillée n'est pas aussi intelligente qu'elle en a l'air. Elle est censée faire ce qu'elle promet, à savoir verrouiller la version... Mais elle ne le fait que dans Synaptic. Tout ce qui effectue des mises à jour de paquets (à savoir : Gestionnaire de mises à jour, apt-get, aptitude, etc.) ignore cela. Il s'agit probablement d'un comportement bogué, donc je m'attends à ce que cela soit corrigé avec le temps." depuis askubuntu.com/questions/9607/what-does-lock-version-do. Quel est l'état actuel ? Si quelque chose est verrouillé dans Synaptic, est-ce que les autres gestionnaires de paquets vont "honorer" le verrouillage ?
Empêcher l'installation d'un paquet s'appelle le "holding de paquet" et c'est très simple à faire :
echo _nom\_du\_paquet_ hold | dpkg --set-sélections
...où *nom_du_paquet* est le nom du paquet que vous voulez empêcher d'installer.
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.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.
0 votes
@hhlp: Mais cette question concerne un paquet qui n'a jamais été installé.
1 votes
@George Edison - Il existe également un maintien de paquet, qui vous permet de ne pas mettre à jour le paquet. Ainsi, maintenir un paquet signifie essentiellement dire au gestionnaire de paquets de conserver la version actuelle quoi qu'il arrive. C'est utile si une version plus récente d'un programme fonctionnant actuellement cesse de fonctionner après une mise à jour. (vous ne pouvez pas maintenir un paquet qui n'a jamais été installé, voir aussi ma question est la même)... j'ai testé cela juste maintenant - voyez ce qu'il a dit
désactiver les mises à jour automatiques des paquets
0 votes
Puisque cette question a été posée avant notre passage de
apt-get
àapt
, il convient de noter queapt-mark hold nomdupaquet
est toujours la solution standard pour cela. Essayerapt hold
se plaindra simplement avecE: Opération invalide hold