Exclure un paquet lors d'un apt-get upgrade

Je me rappelle plus comment faire…
J’ai la liste suivante à upgrader:

burp:~# apt-get upgrade Lecture des listes de paquets... Fait Construction de l'arbre des dépendances... Fait Les paquets suivants ont été conservés : ffmpeg libavcodeccvs libmjpegtools0 mjpegtools mplayer-386 transcode Les paquets suivants seront mis à jour : avidemux dvdrip kernel-image-2.6.8-2-386 libdvdcss2 libebml-dev libmatroska-dev libxvidcore4 mplayer-doc qdvdauthor ripmake transcode-doc 11 mis à jour, 0 nouvellement installés, 0 à enlever et 6 non mis à jour. Il est nécessaire de prendre 23,0Mo dans les archives. Après dépaquetage, 4411ko d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer ? [O/n] n Annulation. burp:~#
Et bien sûr, le kernel-image-2.6.8-2, j’en ai rien à branler vu que je suis en 2.6.14, alors je ne trouve plus l’info pour lui dire comment définitivement oublier ce paquet…

apt-get remove kernel-image-2.6.8-2-386

:unamused:

tu as oublier le --purge :slightly_smiling:

Le problème est que j’ai l’habitude de toujours garder le kernel issu lors de l’installation de la machine, comme roue de secours… Tout en évitant qu’il soit pris en compte lors des upgrades.
Il faudrait qu’il soit en quelque sorte oublié par l’upgrade…
Je sais qu’on peut marquer certains paquets comme “non-upgradable” mais je n’arrive plus à mettre la main sur l’info… :cry:

Ha ha! Alors, tu en as encore de quoi a branler du kernel-image-2.6.8-2

Attends, je téléphone à mon psy pour lui poser quelques questions.

Pourquoi faire simple lorsque l’on peut se compliquer la vie?

Bon d’accord, je vais t’aider à flinguer ton système. :laughing:

Comment est-ce que je mets un paquet en « hold » ?

Il y a trois moyens de bloquer un paquet, avec dpkg, aptitude ou dselect.

Avec dpkg, vous devez seulement exporter la liste de sélection des paquets, avec la commande :

 dpkg --get-selections \* > selections.txt

puis éditer le fichier selections.txt, changer la ligne contenant le paquet que vous souhaitez conserver, par exemple pour libc6, de ceci :

 libc6                                           install

à ceci :

 libc6                                           hold

sauvegarder le fichier et le recharger dans la base de données de dpkg avec :

 dpkg --set-selections < selections.txt

Avec aptitude, vous pouvez conserver un paquet en faisant

 aptitude hold package_name

et enlever le drapeau « hold » avec

 aptitude unhold package_name

Avec dselect, vous devez entrer dans l’écran [S]elect, trouver le paquet que vous souhaitez conserver dans l’état actuel, et appuyer sur la touche ‘=’ (ou sur ‘H’). Les changements seront pris en compte à la sortie de l’écran [S]elect.

Mais oui ! :imp: :imp: :imp:
La voilä la commande que je n’arrivait pas à retrouver …
Et je parie que l’explication est tirée du guide de référence, non ? :smiley:

Non seulement je me rappelais plus de la commande mais encore plus fort, je me rappelais plus dans quel bouquin je l’avais trouvée … :unamused:

Merci encore ! :wink:

Avec Aptitude aussi, il suffit de faire “=” sur le paquet…

et avec synaptic, il sufit de passe par le menu /Paquet/Bloquer la version.

Super simple !!

La méthode la plus simple et rapide demeure avec aptitude en ligne de commande.

Il va falloir que je m’y mettre à ce fameux aptitude mais c’est loin d’être évident lorsque ça fait des années que tu tapes “apt”

Il y a un bon manuel (en français je crois) mais ça demande qd même du temps pour piger son fonctionnement.

Ctrl-u annule la dernière action (avant de valider avec g, g) …très utile au début :wink:

je te conseille vraiment l’interface plutôt que la ligne de commande en aveugle : tu verras ce qu’il va faire avant qu’il le fasse… (g, une seule fois)

[quote=“rdc”]La méthode la plus simple et rapide demeure avec aptitude en ligne de commande.

Il va falloir que je m’y mettre à ce fameux aptitude mais c’est loin d’être évident lorsque ça fait des années que tu tapes “apt”[/quote]
Effectivement, tu as raison, il s’agit de la manière la plus simple. Ceci dit, il y a encore quelque chose qui me chiffone. J’ai bloqué mon paquet de la manière suivante:

burp:~# aptitude hold kernel-image-2.6.8-2-386

Le paquet semble correctement bloqué:

burp:~# aptitude show kernel-image-2.6.8-2-386 Paquet : kernel-image-2.6.8-2-386 État: installé [gardé]
Etant donné le flag “gardé” si j’ai bien pigé … :confused:
Alors, fantastique, mais ca se gâte si je contrôle avec le bon vieux dpkg:

burp:~# dpkg --get-selections | grep kernel-image | grep install kernel-image-2.6.14perso-20-12-05 install kernel-image-2.6.8-2-386 install burp:~# dpkg --get-selections | grep kernel-image | grep hold burp:~#
Le blocage du paquet, effectué à l’aide de aptitude n’est pas pris en compte par les outils standards tels que apt-get et dpkg !
Pour s’en convaincre:

burp:~# apt-get upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Les paquets suivants ont été conservés :
  ffmpeg libavcodeccvs libmjpegtools0 mjpegtools mplayer-386 transcode
Les paquets suivants seront mis à jour :
  avidemux dvdrip kernel-image-2.6.8-2-386 libdvdcss2 libebml-dev libmatroska-dev libxvidcore4 mplayer-doc qdvdauthor ripmake transcode-doc
11 mis à jour, 0 nouvellement installés, 0 à enlever et 6 non mis à jour.[/code]
lors d'un apt-get upgrade, ce satané paquet "kernel-image-2.6.8-2-386" apparaît toujours dans la liste des paquets qui seront mis à jour ...  :imp:
Bon, maintenant, je le bloque avec la commande dpkg:

[code]
burp:~# echo "kernel-image-2.6.8-2-386" hold | dpkg --set-selections
burp:~# dpkg --get-selections | grep kernel-image | grep hold
kernel-image-2.6.8-2-386                        hold
burp:~# dpkg --get-selections | grep kernel-image | grep install
kernel-image-2.6.14perso-20-12-05               install
burp:~#
[/code]
Nous y voilà !  :stuck_out_tongue: , pour confirmer que le paquet ne sera pas mis à jour lors du prochain apt-get upgrade:
[code]burp:~# apt-get upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Les paquets suivants ont été conservés :
  ffmpeg kernel-image-2.6.8-2-386 libavcodeccvs libmjpegtools0 mjpegtools mplayer-386 transcode

[size=150]Leçon à retenir de cette démo[/size]
Il semble que les différents outils pour gérer les packages Debian construisent chacun leur propre base d’information sur ce qui est installé, a mettre à jour, a garder etc… Et ça, je ne le savais pas, je croyais que TOUT ces outils étaient de simples front-end aux commandes standard (apt-get, dpkg et cie…)
Donc, il semble qu’il vaudrait mieux eviter de trop mélanger les différents outils de mise à jour du système entre eux.
Si on utilise dpkg et apt en ligne de commande, on fait TOUT avec ces outils.
Si on utilise aptitude, on fait tout avec aptitude … Etc …

Tiens, ca pourrais faire un T&A intéressant, ce post… :wink:

Je viens de vérifier dans Synaptic. Le paquet est toujours marqué comme:

Donc, synaptic non plus ne prends pas en compte le blocage effectué avec dpkg…

PS: Je voulais mettre le screenshot synaptic, à la place de me casser le c… à taper le texte du message synaptic, on fait comment pour mettre un screenshot ou une image ?

tu tranfères ton screenshot sur ton site et tu fais un lien ici sur cette URL

Merci Ricardo, ca marche ! :stuck_out_tongue:
J’avais déjà essayé sur http://imageshack.us mais je faisais l’erreur de mettre l’URL fournie encore une fois entre les balises fournies par le forum… :blush:

[quote=« jabba »]Je viens de vérifier dans Synaptic. Le paquet est toujours marqué comme:

Donc, synaptic non plus ne prends pas en compte le blocage effectué avec dpkg…

PS: Je voulais mettre le screenshot synaptic, à la place de me casser le c… à taper le texte du message synaptic, on fait comment pour mettre un screenshot ou une image ?[/quote]
Donc, voici la capture de Synaptic:

Donc, je suppose que si le statut « hold » fixé par dpkg était pris en compte, la ligne « étati » devrait le mentionner, non ?

Effectivement, comme tu le mentionne jabba, il est préférable d’éviter de mélanger les différents gestionnaires de paquet. Désormais, il est recommandé officiellement par Debian d’utiliser Aptitude.

2.1 Quoi de neuf dans la distribution ?
La version sarge d’aptitude est le programme préférentiel pour la gestion des paquets en console. Il a été démontré qu’il résout mieux les dépendances entre paquets qu’apt-get. Aptitude gère la plupart des opérations en ligne de commande d’apt-get. Si vous utilisez toujours dselect, vous devriez également tester aptitude comme interface de gestion des paquets. Notes de publication pour Debian GNU/Linux 3.1 (« sarge »), Intel x86

Donc, dans ton opération

burp:~# aptitude hold kernel-image-2.6.8-2-386

la suite aurait dû être

burp:~# aptitude upgrade

Oui Jabba, les différents outils de gestion n’utilisent pas les mêmes ressources. C’est une chose que j’ai lu il y a qq mois. Depuis qd je n’installe qu’un pck avec peu ou pas de dépendances, j’ai abandonné les apt-get install pour des aptitude install puisque pour des installation plus amples j’utilise systématiquement l’interface aptitude :mrgreen:

rdc, ta dernière intervention est tout à fait éloquente :laughing:

alors ça !
j’ai toujours effectivement pensé que tout n’etait qu’un frontend pour dpkg…
Je suis déçu :cry: