URL: https://linuxfr.org/wiki/desinstaller-proprement-ses-paquets-sur-sa-distribution Title: Désinstaller proprement ses paquets sur sa distribution Authors: Oliver Date: 2017年03月22日T17:52:08+01:00 License: CC By-SA Tags: nettoyage, debian, ubuntu, opensuse, administration_système et tutoriel Score: 2 Cette page wiki était à l'origine une dépêche qui avait été rédigée en juin 2016 : https://linuxfr.org/redaction/news/astuces-pour-desinstaller-proprement Les auteurs: Oliver H, Yves Bourguignon, rogo, palm123, BAud, Storm et guitou Tour d'horizon des astuces actuelles (2016) pour supprimer complètement et proprement les applications, et tout autre *paquet* en général. Cette dépêche ne traite pas du nettoyage en profondeur de sa machine, seulement de la désinstallation. |**Avertissement : Vouloir supprimer trop de paquets peut conduire à l'instabilité du système, voire à ne plus pouvoir le redémarrer !**| |------------------------------| Suppression partielle avec `apt remove` ======================================= Sur une distribution Debian et dérivées, pour supprimer un logiciel nous avons le traditionnel : ```bash sudo apt-get remove ``` Sur d'autres distributions nous avons les commandes suivantes (liste non exhaustive) : ```bash sudo yum remove # Jusqu'à Red Hat 7 sudo dnf remove # Remplacement de yum sudo zypper remove # OpenSuse sudo snappy remove # Ubuntu Core ``` La suite de cette dépêche se concentre sur les distributions Debian et ses dérivés (comme Ubuntu). Suppression complète avec `apt purge` ===================================== Mais bien souvent, nous voulons supprimer aussi les fichiers de configuration qui ont également été installés avec le logiciel. Ces fichiers de configuration sont conservés par défaut au cas où ils auraient été personnalisés, bien que la plupart du temps personne ne les modifie. Sauf cas particulier, réinstaller le logiciel va réécrire ces mêmes fichiers de configuration. Donc `purge` à la place de `remove` : ```bash sudo apt-get purge ``` Qui est un raccourci à ```bash sudo apt-get remove --purge ``` Les copains de `apt-get` ======================== Depuis quelques années, nous avons aussi la possibilité d'utiliser la commande `apt` à la place de `apt-get`. Et aussi le bon vieux `dpkg` et l'interface `aptitude`. ```bash sudo apt-get purge sudo apt purge sudo dpkg --purge sudo aptitude purge ``` Mais dans tous ces cas, ces actions `remove` et `purge` n'enlèvent pas les dépendances, et oui toutes les bibliothèques qui ont été nécessaires pour installer tel ou tel logiciel et dont on ne se souvient plus et qui sont mises à jour inutilement pendant des mois, voire des années après la suppression des logiciels. Suppression des dépendances avec `apt --purge autoremove` ========================================================= Donc pour supprimer un logiciel et ses dépendances (du moins, celles qui ne sont pas utilisées par d'autres logiciels) nous avons `apt --purge autoremove` (merci à Morphé de l'équipe Ubuntu-Fr pour avoir partagé cette astuce). ```bash sudo apt-get --purge autoremove ``` ou encore : ```bash sudo apt-get purge --auto-remove sudo apt-get remove --purge --auto-remove ``` Ces options `--purge` et `--autoremove` peuvent aussi être utilisées pour la mise à jour de sa distribution : ``` ( set -x ; sudo apt update && sudo apt list --upgradable && sudo apt full-upgrade --autoremove --purge --yes ) ``` aptitude en mode interactif =========================== `aptitude` peut s'utiliser en ligne de commande, mais cet usage est progressivement supplanté par la commande `apt`. En mode *curses*, il permet par contre de nettoyer de façon optimale ses paquets. Ce chapitre présente la suppression de bibliothèques *(librairies)* inutiles, puis des fichiers de configuration étant toujours présents malgré la suppression des paquets correspondants. 1. Supprimer les bibliothèques inutiles --------------------------------------- - Lancer `aptitude` ; - Ouvrir les "Preferences" dans le menu ; Comme indiqué à l'écran, on peut utiliser `ctrl-t` pour ouvrir le menu, ou passer par la souris ; - Cocher la case "Remove unused packages automatically" sous "Dependency handling" ; - Presser `q` pour quitter la configuration ; - Avec les flèches et *entrée*, déplier "Installed packages" et se placer sur "libs" ; - Appuyer sur `M` (majuscule-m) pour marquer tous les paquets sous "lib" comme étant automatiquement installé. On peut vérifier sur la page d'aide, accessible par `?`, que `m` est l'action réciproque qui marque les paquets *manuellement* installés ; - `aptitude` propose alors de désinstaller les bibliothèques qui ont été installées automatiquement mais ne sont plus nécessaires. En haut à droite de la page s'affiche l'espace qui serait gagné. Appuyer sur `g` (go) pour amorcer cette action ; - Sur cette nouvelle vue "Preview" (noter l'onglet en haut de l"écran), les paquets sont regroupés selon de nouvelles catégories, la première étant ici "Packages being removed because they are no longer used". On peut la déplier et vérifier au cas par, en appuyant sur `+` si on veut annuler la désinstallation ; - Si la liste des désinstallations a été modifiée, mieux vaut fermer et réouvrir ce panneau avec `q` puis `g` ; - Pour *purger* au lieu de conserver les fichiers de configuration, utiliser `_`. On peut bien sûr l'appliquer à tout un groupe ; - Depuis le panneau de "preview", appuyer à nouveau sur `g` pour appliquer les modifications listées. 2. Supprimer les configurations de paquets désinstallés ------------------------------------------------------- - Dans aptitude, taper `l` pour filtrer les paquets selon un motif de recherche. Pour info, la recherche normale est associée à `/` comme d'habitude, mais elle permet seulement de se déplacer dans la liste des paquets ; - Saisir `~c` dans la boîte de dialogue, puis entrée ; - `aptitude` affiche alors une liste de tout les paquets dont il ne reste que la configuration. Appuyer sur `_` demandera une purge de ce qui est surligné ; - Une fois désignées les cibles, `g` passe dans l'onglet `preview` et un second `g` applique les changements. NB : La syntaxe pour filtrer les paquets n'est pas spécifique à `aptitude`, elle est définie par la bibliothèque APT. Il y a aussi d'autres paramètres APT qui influencent `aptitude`, par exemple le fait d'installer automatiquement les paquets recommandés (activé par défaut, désactivable dans la configuration d'aptitude ou en éditant la configuration dans `/etc/apt/`). `aptitude` a encore bien d'autres cordes à son arc, notamment pour gérer les conflits de mises à jour en ajoutant des contraintes (monter la version de A sans désinstaller B ni rétrograder C, etc). Suppression des dépendances avec `debfoster` ============================================ Mais d'autres outils sont disponibles. ```bash sudo apt-get install debfoster sudo debfoster - ``` Notez le signe _« tiret du six »_ `'-'` collé à la fin du nom du paquet. Sans ce caractère _« tiret du six »_, `debfoster` installe le paquet. Personnellement, je trouve cela plus pratique que d'avoir à taper `install` ou `purge`. Un autre truc sympa avec `debfoster` est l'enregistrement en local de tous les paquets à conserver. Lors de la première utilisation, `debfoster` demande quels paquets sont à conserver/supprimer. Les principales réponses : Français | Anglais | Explication --------------|--------------|---------------------- `'o'` |`'y'` |Conserver le paquet (par défaut, appuyer juste sur [Entrée]) `'n'` |`'n'` |Supprimer le paquet (par défaut c'est un `apt-get --purge remove`) `'m'` |`'p'` |Supprimer le paquet et les paquets qu'il maintient installés `'r'` ou `'?'`|`'i'` ou `'?'`|Affiche la description du paquet (très utile) `'d'` |`'u'` |Annuler la précédente réponse (très utile aussi) Les auteurs de cette page wiki ne sont pas sûrs d'avoir bien compris ce que signifie *« Supprimer le paquet et les paquets qu'il maintient installés »*. Voici notre compréhension : * D'abord, les paquets ont plusieurs marquages possibles. Les paquets sont tous marqués comme installés automatiquement ou manuellement (voir les commandes `apt-mark showauto` et `apt-mark showmanual`) ; * D'autres marquages sont possibles. Quand un paquet est installé, d'autres paquets sont recommandés/suggérés. Les paquets installés ne dépendent pas forcément de ces paquets recommandés/suggérés, mais ces derniers peuvent être marqués comme installés avec ; * C'est aussi le cas quand l'installation d'un paquet installe une dépendance par défaut. Mais le paquet peut fonctionner avec une autre dépendance alternative. La suppression de cette dépendance force l'installation d'une dépendance alternative... Bon bref, encore une fois, nous ne sommes pas sûrs d'avoir bien pigé, mais nous avons l'impression que répondre *« Supprimer le paquet et les paquets qu'il maintient installés »* (plutôt que seulement *« Supprimer le paquet »*) permet de virer le maximum de paquets inutiles. Apparemment, il n'y a pas de moyen _élégant_ pour remettre à zéro la base de donnée des paquets _à conserver_. Voici deux façons _moches_ de réinitialiser cette liste des paquets : 1. Supprimer le fichier *(selon votre système, le fichier peut se trouver dans une autre arborescence)* ```bash sudo rm -vi /var/lib/debfoster/keepers ``` 2. Réinstaller `debfoster` ```bash sudo debfoster debfoster- sudo apt install debfoster ``` La commande suivante permet de lister les paquets marqués _« à conserver »_ : ```bash debfoster --show-keepers ``` ou : ```bash debfoster -a ``` Pour finir, notons que la configuration de `debfoster` peut être finement paramétrée : ```bash sudo vim /etc/debfoster.conf ``` Lister les orphelins avec `deborphan` ===================================== À la recherche des paquets orphelins. Généralement ce sont des bibliothèques oubliées dont aucun logiciel ne dépend. ```bash sudo apt install deborphan deborphan # Liste les bibliothèques orphelines (lib) deborphan --guess-all # Liste aussi les autres dépendances orphelines deborphan --all-packages # Liste aussi les exécutables ``` Pour être sûr que certains paquets ne soient pas listés comme orphelins : ```bash sudo deborphan --add-keep libdvdcss2 ubuntu-desktop ubuntu-restricted-extras ubuntu-minimal ubuntu-standard ``` Pour la suppression, trois alternatives : 1. Passer la liste des orphelins à `dpkg` (ou `apt` ou ...). Ici, c'est la philosophie _« chaque petit outil fait son boulot »_ ; ```bash deborphan | xargs sudo dpkg --purge ``` 2. Utiliser l'interface en mode texte fournit avec le paquet `deborphan` ; ```bash sudo orphaner --purge [options deborphan] ``` 3. Utiliser l'interface graphique. ```bash sudo apt install gtkorphan sudo gtkorphan ``` `aptsh` ======= ```bash sudo apt install aptsh sudo aptsh purge ``` Mais comme son suffixe _sh_ le laisse deviner, c'est à utiliser en mode interactif (_shell_). ``` $ sudo aptsh Generating and mapping caches... Reading commands history... aptsh> # Appuyer sur la touche [Tab] pour la liste des commandes add dump policy source autoclean dump-cfg purge stats build-dep dumpavail queue* toupgrade changelog help* quit unmet check install rdepends update clean listfiles remove upgrade depends ls rls whatis dist-upgrade madison search whichpkg dotty news show dpkg* orphans* showpkg dselect-upgrade pkgnames showsrc aptsh> orphans libcdaudio1 libgmp-dev libprocps3 libgstreamer-plugins-bad0.10-0 libboost-dev libwebkit2gtk-3.0-dev ``` `wajig` ======= https://en.wikipedia.org/wiki/Wajig ```bash $ sudo apt install wajig $ sudo wajig orphans libgstreamer-plugins-bad0.10-0:amd64 libcdaudio1:amd64 ``` Mais toute sa puissance se révèle en mode interactif : ``` $ sudo wajig wajig> commnads addcdrom Add a Debian CD/DVD to APT's list of available sources addrepo Add a Launchpad PPA (Personal Package Archive) repository aptlog Display APT log file autoalts Mark the Alternative to be auto-set (using set priorities) autoclean Remove no-longer-downloadable .deb files from the download cache autodownload Do an update followed by a download of all updated packages autoremove Remove unused dependency packages build Get source packages, unpack them, and build binary packages from them. builddeps Install build-dependencies for given packages changelog Display Debian changelog of a package clean Remove all deb files from the download cache contents List the contents of a package file (.deb) dailyupgrade Perform an update then a dist-upgrade dependents Display packages which have some form of dependency on the given package describe Display one-line descriptions for the given packages describenew Display one-line descriptions of newly-available packages distupgrade Comprehensive system upgrade download Download one or more packages without installing them editsources Edit list of Debian repository locations for packages extract Extract the files from a package file to a directory fixconfigure Fix an interrupted install fixinstall Fix an install interrupted by broken dependencies fixmissing Fix and install even though there are missing dependencies force Install packages and ignore file overwrites and depends hold Place packages on hold (so they will not be upgraded) info List the information contained in a package file init Initialise or reset wajig archive files install Package installer installsuggested Install a package and its Suggests dependencies integrity Check the integrity of installed packages (through checksums) large List size of all large (>10MB) installed packages lastupdate Identify when an update was last performed listall List one line descriptions for all packages listalternatives List the objects that can have alternatives configured listcache List the contents of the download cache listcommands Display all wajig commands listdaemons List the daemons that wajig can start, stop, restart, or reload listfiles List the files that are supplied by the named package listhold List packages that are on hold (i.e. those that won't be upgraded) listinstalled List installed packages listlog Display wajig log file listnames List all known packages; optionally filter the list with a pattern listpackages List the status, version, and description of installed packages listscripts List the control scripts of the package of deb file listsection List packages that belong to a specific section listsections List all available sections liststatus Same as list but only prints first two columns, not truncated localupgrade Upgrade using only packages that are already downloaded madison Runs the madison command of apt-cache move Move packages in the download cache to a local Debian mirror new Display newly-available packages newdetail Display detailed descriptions of newly-available packages news Display the NEWS file of a given package nonfree List packages that don't meet the Debian Free Software Guidelines orphans List libraries not required by any installed package policy From preferences file show priorities/policy (available) purge Remove one or more packages and their configuration files purgeorphans Purge orphaned libraries (not required by installed packages) purgeremoved Purge all packages marked as deinstall rbuilddeps Display the packages which build-depend on the given package readme Display the README file(s) of a given package recdownload Download a package and all its dependencies recommended Display packages installed as Recommends and have no dependents reconfigure Reconfigure package reinstall Reinstall the given packages reload Reload system daemons (see LIST-DAEMONS for available daemons) remove Remove packages (see also PURGE command) removeorphans Remove orphaned libraries repackage Generate a .deb file from an installed package reportbug Report a bug in a package using Debian BTS (Bug Tracking System) restart Restart system daemons (see LIST-DAEMONS for available daemons) rpm2deb Convert an .rpm file to a Debian .deb file rpminstall Install an .rpm package file search Search for package names containing the given pattern searchapt Find nearby Debian package repositories show Provide a detailed description of package sizes Display installed sizes of given packages snapshot Generates a list of package=version for all installed packages source Retrieve and unpack sources for the named packages start Start system daemons (see LIST-DAEMONS for available daemons) status Show the version and available versions of packages statusmatch Show the version and available versions of matching packages stop Stop system daemons (see LISTDAEMONS for available daemons) tasksel Run the task selector to install groups of packages todo Display the TODO file of a given package toupgrade List versions of upgradable packages tutorial Display wajig tutorial unhold Remove listed packages from hold so they are again upgradeable unofficial Search for an unofficial Debian package at apt-get.org update Update the list of new and updated packages updatealternatives Update default alternative for things like x-window-manager updatepciids Updates the local list of PCI ids from the internet master list updateusbids Updates the local list of USB ids from the internet master list upgrade Conservative system upgrade upgradesecurity Do a security upgrade verify Check package's md5sum versions List version and distribution of given packages whichpackage Search for files matching a given pattern ``` ubuntu-tweak ============ Pour les heureux possesseurs d'une vieille distribution de type Debian, l’interface graphique [**ubuntu-tweak**](https://doc.ubuntu-fr.org/ubuntu_tweak) est géniale, surtout son onglet _« Nettoyage »_. Mais bon, son auteur est passé depuis sur MacOS. Et personne n'a repris la maintenance de cette application. Cette application bien pratique n'est donc plus officiellement disponible pour les versions récentes de Debian, Ubuntu et autres distributions dérivées. Le [code source python](https://github.com/tualatrix/ubuntu-tweak) ne compile même plus ! Néanmoins, le site [getdeb.net](http://www.getdeb.net/app/Ubuntu%20Tweak) propose un paquet tout prêt pour *Ubuntu 16.04* (non testé). Synaptic ======== Pour ceux qui préfèrent l’interface graphique : ```bash sudo apt install synaptic gksu synaptic ``` Cliquer en bas à gauche sur _« État »_. Voici les sélections qui apparaissent alors en haut à gauche : | Menu | Explication |------------------------------|----------------- |Installés (locaux ou obsolète) |Paquets installés à partir d'un `.deb` ou conservé d'une version précédente du système... |Installés (manuellement) |Paquets installés par l'utilisateur après l'installation du système (voir `apt-mark showmanual`) |Installés (pouvant être supprimés)|Correspond à `sudo apt autoremove` |Non installés (résidus de configuration)|Paquets ayant été supprimés mais pas purgés (différence entre `apt remove` et `apt purge`). Dans les menus de Synaptic, *« Sélectionner pour suppression complète »* correspond à `apt purge`. Synaptic a 14 ans (APT a 17 ans) et utilise les bibliothèques graphiques GTK+, donc pour les environnements Gnome, Unity, XFCE... Dans le monde GTK+, il y avait aussi **GNOME apt** remplacé maintenant par [**GNOME Software**](https://fr.wikipedia.org/wiki/GNOME_Software) qui se base sur [**PackageKit**](https://fr.wikipedia.org/wiki/PackageKit). Ce dernier est une abstraction des différents [gestionnaire de paquets](https://fr.wikipedia.org/wiki/Gestionnaire_de_paquets). Muon ==== Et KDE ? Pour ne pas faire de jaloux, un petit historique des équivalents pour les environnements basés sur Qt : * Il y avait **adept** jusqu'à la fin des années 2010 *(pour les nostalgiques qui n'utilisaient pas la ligne de commande à cette époque)* ; * Puis **apper** ; * Et maintenant, **muon** prend la relève. ```bash sudo apt install muon kdesu muon ``` Il y avait aussi **KPackage** qui semble avoir été remplacé par **Shaman**, à confirmer... Et les autres ============= * [Logithèque Ubuntu](https://fr.wikipedia.org/wiki/Logith%C3%A8que_Ubuntu) (*Ubuntu Software Center* en anglais) ; * [GDebi](https://fr.wikipedia.org/wiki/Gdebi) (deux variantes pour GTK+ et Qt) ; * [Cydia](https://fr.wikipedia.org/wiki/Cydia), APT pour iOS. Voir aussi ========== * [Sondage LinuxFr.org : Qu'utilisez-vous pour l'installation de vos logiciels tiers ?](http://linuxfr.org/sondages/qu-utilisez-vous-pour-l-installation-de-vos-logiciels-tiers) * [Nettoyer Ubuntu (fonctionne aussi pour d'autres distrib. Debian)](https://doc.ubuntu-fr.org/nettoyer_ubuntu) * [Maintenir son système d'exploitation Ubuntu](https://doc.ubuntu-fr.org/maintenir_systeme) * [Garder sa distribution GNU/Linux propre comme un sou neuf](https://alambic.hypotheses.org/2007) * [Script Ubucleaner pour nettoyer Ubuntu](https://github.com/mcandre/ubucleaner/blob/master/lib/ubucleaner) (fonctionne aussi avec d'autres dérivés de Debian) Merci d'apporter votre pierre à l'édifice ========================================= Et vous, quelles sont vos astuces pour désinstaller une application, une bibliothèque ou un paquet quelconque ? Comment faire avec les autres gestionnaires de paquet ? * pip * npm * yum * dnf * zypper * snappy * pacman * portage/emerge * pkgsrc * nix

AltStyle によって変換されたページ (->オリジナル) /