====== Gérer un meta-paquet sans supprimer ses dépendances ======
* Objet : Éviter de tout bousiller votre Debian en supprimant un simple logiciel
* Niveau requis : Intermédiare {{tag>intermédiaire avisé}}
* Commentaires : //Suite à quelques mauvaises expériences et poussé par un désir d'alléger mon installation afin d'accélerer une vieille machine, j'ai compris qu'il fallait retirer des paquets imbriqués.. //
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
* Suivi : {{tag>en-chantier à-tester à-placer}} - FIXME Pour choisir, voir les autres Tags possibles dans [[:atelier:#tags|l'Atelier]].
* Création par [[user>Patriboom]] 13/01/2016
* Testé par <...> le <...> FIXME
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=157652 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
**Nota :**
Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
===== Introduction =====
Nous verrons ici comment supprimer un paquet sans tout supprimer de nos logiciels préférés qui lui sont associés par un meta-paquet. Pour y arriver, nous verrons d'abord qu'est-ce qu'un meta-paquet, puis nous verrons ensemble les étapes de suppression de notre paquet.
==== Qu'est-ce qu'un meta-paquet ? ====
Un meta-paquet est une série de commandes informatiques qui associe plusieurs paquets pour former un ensemble cohérent et complet. Dans l'exemple ci-bas, nous parlerons du meta-paquet « gnome » tandis que nous verrons comment supprimer le paquet « tracker » et ses dépendances.
Un meta-paquet peut contenir des paquets, des meta-paquets ou les deux. Le meta-paquet, c'est un peu comme un emballage cadeau qui enveloppe un produit. L'emballage cadeau peut contenir plusieurs boites, lesquelles peuvent contenir plusieurs appareils. Prenons l'exemple d'une cargaison de crayons. Le camion (meta-paquet) transporte plusieurs boites (meta-paquets) de crayons (produits). Le camionneur, lui, a un crayon (produit) libre dans son camion (meta-paquet) sans que son crayon soit dans une boîte.
Nous avons donc
La route (système)
-meta-paquet : camion
-qui contient : des boîtes (meta-paquets)
*qui contiennent des crayons (produits)
*qui contiennent des cartouches de remplissage
*bla bla bla
-qui contient des crayons non-emballés (produits)
-meta-paquet : auto
-qui contient des passagers
De la même façon, nos paquets Linux peuvent être dans des meta-paquets à plusieurs niveaux. Dans le cas qui nous intéresse, gnome, nous avons cette structure
Linux (système)
-meta-paquet : gnome (meta-paquet)
-gnome-about (meta-paquet)
-gnome-applets (meta-paquet)
-gnome-control-center (meta-paquet)
-gnome-disk-utility (meta-paquet)
-gnome-icon-theme (meta-paquet)
-gnome-keyring (meta-paquet)
-gnome-menus (meta-paquet)
-gnome-panel (meta-paquet)
-gnome-power-manager (meta-paquet)
-gnome-screensaver (meta-paquet)
-bla bla bla
Pour en connaître la liste complète :
apt show gnome-core
===== Étapes de suppression de notre paquet =====
Étapes de suppression de notre paquet
Selon une logique simple, il suffirait d'isoler notre paquet pour le supprimer (sortir la boite du camion, sortir le crayon de la boite et s'en servir).
{{https://debian-facile.org/images/file-R5a7d25c21e769232777542eb4bb7cabd.png}}
Les carrés représentent des meta-paquets
Les losanges représentent des paquets complémentaires ou nécessaires à l'application.
Le bonhomme sourire ici représente l'application que nous voulons supprimer.
Pourtant, penser ainsi c'est oublier la sécurité et la cohérence de l'ensemble.
En effet, tous les programmes, paquets et meta-paquets qui sont installés par un meta-paquet sont aussi munis d'une attache qui les garde liés à leur meta-paquet installateur (en alimentation, on appelle ça la « traçabilité » des produits).
Dans notre analogie du transport d'un crayon par camion, il faut se rappeler que nous ne voulons pas utiliser le crayon, mais bien le retourner à l'expéditeur (supprimer un paquet). Ce que nous devrons donc faire, ce sera de vider la cargaison au complet – sauf le crayon – et retourner le camion à l'expéditeur. Nous devrons donc sortir toutes les boites du camion, sortir tous les crayons des boites et retourner le camion contenant le seul crayon que nous ne voulons pas.
Nous ferons donc ainsi :
{{https://debian-facile.org/images/file-Rfca3e8e13dc9c713835a72f3a066bc9d.png}}
Dans un premier temps vider notre meta-paquet de tout sauf des éléments que nous voulons supprimer et même vider le meta-paquet qui contient notre logiciel de ses autres composantes.
Comme avec l'analogie du camionnage, on ne détruit rien. On ne fait que casser les liens, ouvrir les cartons.
Détruire les liens, dans notre cas, ça s'appelle « ôter la marque //Installer automatiquement// »
==== Première étape: étudier le cas ====
Il est important de connaître la chaîne des dépendances à laquelle est fixé notre logiciel.
//Il faut repérer le bon emballage, la bonne boîte, le bon camion auxquels est attaché notre crayon.//
=== Liste des liens ascendants ===
apt-cache rdepends -i --no-pre-depends nom_du_logiciel
Notre exemple ( tracker ) nous donnera ceci:
apt-cache rdepends -i --no-pre-depends tracker
tracker
Reverse Depends:
rygel-tracker
tracker-utils
tracker-miner-fs
tracker-gui
tracker-extract
tracker-dbg
gnome-photos *
gnome-music *
gnome-documents *
gnome-boxes *
bijiben *
Si vous aviez fait
**apt-cache rdepends -i --no-pre-depends nom_du_logiciel > NomDeFichier** le résultat aurait été conservé dans un fichier du nom de //NomDeFichier//. Ceci pourrait être utile avec la prochaine commande qui générera une plus longue liste.
Nous avons ici les paquets sur lesquels compte tracker pour fonctionner (dont tracker dépend).
Voyons maintenant quelles sont les dépendances des paquet « mère » de ceux-ci (quels autres produits sont dans la boite de notre crayon). Sont ci-haut marqués d'un astérisque (*) les paquets qui ne contiennent pas le mot //tracker//, les paquets - donc - qui sont susceptibles d'être bons et qui devraient par conséquent rester installés.
Notons au passage que trois de ces paquets sont de la forme : « //gnome-quelque chose// ». Afin de simplifier les démarches, nous remonterons de ce pas à la source (la paquet-mère) : « gnome ».
=== Liste des liens descendants ===
Faisons donc:
apt-cache depends -i gnome
apt-cache dpends -i bijiben
Nous obtiendrons de belles longues listes:
Dépend: gnome-core
Dépend: desktop-base
Dépend: network-manager-gnome
Dépend: bijiben
Dépend: brasero
Dépend: cheese
Dépend: evolution
Dépend: evolution-plugins
Dépend: file-roller
Dépend: gedit
Dépend: gnome-clocks
Dépend: gnome-color-manager
Dépend: gnome-documents
Dépend: gnome-games
Dépend: gnome-getting-started-docs
Dépend: gnome-logs
Dépend: gnome-maps
Dépend: gnome-music
Dépend: gnome-nettool
Dépend: gnome-photos
Dépend: gnome-sound-recorder
Dépend: gnome-tweak-tool
Dépend: nautilus-sendto
Dépend: gnome-orca
Dépend: polari
Dépend: rygel-playbin
Dépend: rygel-tracker
Dépend: seahorse
Dépend: vinagre
Dépend: alacarte
Dépend: avahi-daemon
Dépend: gimp
Dépend: hamster-applet
Dépend: inkscape
Dépend: libreoffice-evolution
Dépend: libreoffice-gnome
Dépend: libreoffice-writer
Dépend: libreoffice-calc
Dépend: libreoffice-impress
Dépend: rhythmbox
Dépend: simple-scan
|Dépend: goobox
Dépend: sound-juicer
Dépend: transmission-gtk
Dépend: xdg-user-dirs-gtk
Dépend: cups-pk-helper
Dépend: gedit-plugins
Dépend: gnome-shell-extension-weather
Dépend: gstreamer1.0-libav
Dépend: gstreamer1.0-plugins-ugly
Dépend: rhythmbox-plugins
Dépend: rhythmbox-plugin-cdrecorder
Dépend: telepathy-gabble
Dépend: telepathy-rakia
Dépend: telepathy-salut
Dépend: totem-plugins
Dépend: libgtk2-perl
|Dépend: dconf-gsettings-backend
Dépend:
gconf-gsettings-backend
dconf-gsettings-backend
Dépend: libc6
Dépend: libcairo-gobject2
Dépend: libcairo2
Dépend: libecal-1.2-16
Dépend: libedataserver-1.2-18
Dépend: libgdk-pixbuf2.0-0
Dépend: libglib2.0-0
Dépend: libgoa-1.0-0b
Dépend: libgtk-3-0
Dépend: libical1a
Dépend: libpango-1.0-0
Dépend: libpangocairo-1.0-0
Dépend: libtracker-sparql-1.0-0
Dépend: libuuid1
Dépend: libwebkitgtk-3.0-0
Dépend: libxml2
Dépend: libzeitgeist-2.0-0
==== Deuxième étape: casser les liens (les bons) ====
La liste ci-haut nous sera très utile. C'est la liste des paquets que nous devrons délier du meta-paquet //gnome//.
Nous le ferons en deux étapes:
1) vider le camion de toutes les boites à conserver;
2) vider la boite contenant notre crayon de tout ce qui n'est pas notre crayon.
=== Cassage des liens descendants ===
De notre camion, nous sortons toutes les boîtes qui ne contiennent pas les crayons similaires à celui que nous cherchons.
{{https://debian-facile.org/images/file-R70fb53c895d7d833418aac6d1a3565a5.png}}
apt-mark manual nom_du_paquet
pour CHACUN des paquets listés ci-haut et que nous souhaitons conserver.
Notre exemple de désinstallation du paquet //Tracker// donne donc ceci: apt-mark manual gnome-core
apt-mark manual desktop-base
apt-mark manual network-manager-gnome
apt-mark manual bijiben
apt-mark manual brasero
apt-mark manual cheese
apt-mark manual evolution
apt-mark manual evolution-plugins
apt-mark manual file-roller
apt-mark manual gedit
apt-mark manual gnome-clocks
apt-mark manual gnome-color-manager
apt-mark manual gnome-documents
apt-mark manual gnome-games
apt-mark manual gnome-getting-started-docs
apt-mark manual gnome-logs
apt-mark manual gnome-maps
apt-mark manual gnome-music
apt-mark manual gnome-nettool
apt-mark manual gnome-photos
apt-mark manual gnome-sound-recorder
apt-mark manual gnome-tweak-tool
apt-mark manual nautilus-sendto
apt-mark manual gnome-orca
apt-mark manual polari
apt-mark manual rygel-playbin
apt-mark manual rygel-tracker
apt-mark manual seahorse
apt-mark manual vinagre
apt-mark manual alacarte
apt-mark manual avahi-daemon
apt-mark manual gimp
apt-mark manual hamster-applet
apt-mark manual inkscape
apt-mark manual libreoffice-evolution
apt-mark manual libreoffice-gnome
apt-mark manual libreoffice-writer
apt-mark manual libreoffice-calc
apt-mark manual libreoffice-impress
apt-mark manual rhythmbox
apt-mark manual simple-scan
apt-mark manual goobox
apt-mark manual sound-juicer
apt-mark manual transmission-gtk
apt-mark manual xdg-user-dirs-gtk
apt-mark manual cups-pk-helper
apt-mark manual gedit-plugins
apt-mark manual gnome-shell-extension-weather
apt-mark manual gstreamer1.0-libav
apt-mark manual gstreamer1.0-plugins-ugly
apt-mark manual rhythmbox-plugins
apt-mark manual rhythmbox-plugin-cdrecorder
apt-mark manual telepathy-gabble
apt-mark manual telepathy-rakia
apt-mark manual telepathy-salut
apt-mark manual totem-plugins
apt-mark manual libgtk2-perl
apt-mark manual gnome
Si vous travaillez comme moi, vous copiez la liste obtenue par la recherche inverse des dépendances et vous copiez cette liste dans un traitement de texte (gnome, mousepad).
Sans oublier ...apt-mark manual dconf-gsettings-backend
apt-mark manual
gconf-gsettings-backend
dconf-gsettings-backend
apt-mark manual libc6
apt-mark manual libcairo-gobject2
apt-mark manual libcairo2
apt-mark manual libecal-1.2-16
apt-mark manual libedataserver-1.2-18
apt-mark manual libgdk-pixbuf2.0-0
apt-mark manual libglib2.0-0
apt-mark manual libgoa-1.0-0b
apt-mark manual libgtk-3-0
apt-mark manual libical1a
apt-mark manual libpango-1.0-0
apt-mark manual libpangocairo-1.0-0
apt-mark manual libtracker-sparql-1.0-0
apt-mark manual libuuid1
apt-mark manual libwebkitgtk-3.0-0
apt-mark manual libxml2
apt-mark manual libzeitgeist-2.0-0
Oui, il faut passer ainsi toutes les listes de dépendance descendante obtenues lors de la deuxième étape.
Rappelez-vous: sortir toutes les boîtes du camion, sortir tous les emballages qui ne sont pas ceux du crayon que nous cherchons à retourner à l'expéditeur! Parfois, ce sont de gros camions; parfois ce sont des camions bien chargés; parfois ce sont de gros camions bien chargés. Gnome ainsi ainsi: gros et chargé!
=== Cassage des liens ascendants ===
Revenons ici à notre première liste, celle des dépendances inverses, celle qui contenait plusieurs mentions de « tracker ».
Vous vous rappelez que nous n'avions conservé de cette liste que les paquets non-tracker, soit gnome et bijiben.
{{https://debian-facile.org/images/file-Ra45176438198e9a4044f1b49137f2ed2.png}}
De notre boite, donc, nous sortons tous les paquets qui ne sont pas liés à notre crayon.
apt-mark manual gnome-photos
apt-mark manual gnome-music
apt-mark manual gnome-documents
apt-mark manual gnome-boxes
apt-mark manual bijiben
Votre commande, transformée dans le-dit traitement de texte pourra s'écrire en une seule ligne de comme ceci:
**apt-mark manual gnome-photos gnome-music gnome-documents gnome-boxes bijiben**
==== Troisième étape: supprimer le paquet ====
apt-get remove tracker
==== Quatrième étape: reconstruire les références du meta-paquet (facultatif) ====
Voilà le temps que nous remettions les choses dans l'ordre et refassions les liens.
C'est beau le libre ... mais quand le camion est parti, c'est encore plus beau un entrepôt bien classé!
apt-mark auto gnome-photos
apt-mark auto gnome-music
apt-mark auto gnome-documents
apt-mark auto gnome-boxes
apt-mark auto bijiben