Je comprends que apt-get remove
supprime les packages et que apt-get autoremove
consiste à supprimer tous les packages installés pour répondre à une dépendance pour un package donné. Ainsi, par exemple, si j'ai installé LibreOffice et qu'il avait des dépendances sur say Java et que je l'ai installé lors de l'installation lorsque j'exécute la commande apt-get libreoffice
, pourquoi devrais-je exécuter la commande apt-get remove libreoffice
suivie de apt-get autoremove
? Est-ce que je ne peux pas simplement exécuter la commande apt-get autoremove libreoffice
? Ou bien la combinaison de apt-get remove
et apt-get autoremove
a-t-elle un but différent?
Cela dépend de votre degré de confiance envers le suivi des dépendances. Bien que presque toujours correct, vous voudrez peut-être conserver une dépendance, en particulier lorsque vous êtes un développeur ou un utilisateur privilégié qui installe un logiciel qui ne se trouve pas dans le référentiel.
Si vous installez toujours un logiciel via apt-get, sans exception, et si vous faites en sorte que toutes les dépendances soient correctes (ce qu’elles sont habituellement), vous pouvez alors utiliser apt-get autoremove
et gagner un petit espace disque exposition réduite aux failles de sécurité potentielles en le faisant supprimer les paquets qui n'en ont plus.
Mais si vous installez le logiciel manuellement, ou si vous développez un logiciel, ou si vous ne voulez pas gérer une possible erreur de dépendance, ne pas utiliser le retrait automatique pour effacer les paquets potentiellement inutilisés est probablement le choix le plus sûr. Que vous utilisiez apt-get autoremove
de temps en temps ou non, vous supprimerez toujours les logiciels à l'aide de apt-get remove Package
Par exemple, si j'installe AwesomePackage
name__, il peut dépendre de AwesomeLibrary
et AwesomeLibrary
sera automatiquement installé en tant que dépendance. Lorsque je supprime AwesomePackage
à l'aide de la suppression automatique, tant qu'aucun autre package ne possède AwesomeLibrary
en tant que dépendance, il sera également désinstallé. Mais si SuperPackage
requiert également AwesomeLibrary
ou si j’ai installé explicitement AwesomeLibrary
au lieu de l’avoir automatiquement comme dépendance (apt-get install AwesomeLibrary
), le déplacement automatique ne le supprime pas.
La raison pour laquelle ce n'est pas le défaut est qu'avoir AwesomeLibrary
sur le système, non utilisé, est un problème très mineur. Cela ne posera presque jamais de problèmes et la plupart des dépendances ne prennent pas beaucoup de place. Il existe des exceptions, mais le nombre de fois où la suppression d'une dépendance entraîne des problèmes est supérieur au nombre de fois où cela résout ou évite un problème.
Vous pouvez trouver la description de remove , autoremove , purger , nettoyer et autoclean , ainsi que la syntaxe dans les pages de manuel d'apt-get: man apt-get
.
Si vous n'êtes toujours pas sûr après l'avoir lu, la meilleure façon de le clarifier est de l'essayer.
Vous trouverez ci-dessous un exemple d'arborescence de dépendance complète pour vim:
Vous pouvez l'obtenir avec:
apt-rdepends -d vim > vim.dot
dotty vim.dot
Vous pouvez également obtenir une liste des dépendances immédiates en utilisant apt-cache depends
(voir Déclaration des relations entre les packages pour plus d'informations):
$ apt-cache depends vim
vim
Depends: vim-common
Depends: vim-runtime
Depends: libacl1
Depends: libc6
Depends: libgpm2
Depends: libselinux1
Depends: libtinfo5
Suggests: <ctags>
exuberant-ctags
Suggests: vim-doc
Suggests: vim-scripts
Donc, il semble que vim dépend d'un certain nombre de paquets, essayons de l'installer avec apt-get install
et voyons ce qui se passe:
$ Sudo apt-get install vim
...
The following extra packages will be installed:
vim-common vim-runtime
Suggested packages:
ctags vim-doc vim-scripts
The following NEW packages will be installed:
vim vim-common vim-runtime
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
After this operation, 25.1 MB of additional disk space will be used.
Do you want to continue [Y/n]? n
Pour que vim fonctionne, nous avons besoin de vim-common et vim-runtime, des packages et apt-get
s'en chargeront. Nous pouvons le vérifier avec dpkg -s pkg...
(voir man dpkg
pour plus d'informations sur les statuts):
$ Sudo dpkg -s libc6
Package: libc6
Status: install ok installed // we already have it, no need to install
$ Sudo dpkg -s vim-common
Package: vim-common
Status: deinstall ok config-files // we don't have it, have to install
Tout comme nous avons vérifié ce que vim dépend, nous pouvons également vérifier quelles autres choses dépendent des mêmes packages que vim en utilisant apt-cache rdepends
. Nous devrions voir vim parmi (éventuellement) d'autres choses:
$ apt-cache rdepends vim-common
vim-common
Reverse Depends:
vim-latexsuite
vim-addon-manager
vim-tiny
vim-nox
vim-gtk
vim-gnome
|vim-dbg
vim-athena
vim // there it is
Continuons avec l'installation. Une fois que nous avons installé vim, nous pouvons faire l'expérience de la différence entre remove et autoremove . Essayons de supprimer d'abord:
$ Sudo apt-get remove vim
...
The following packages will be REMOVED:
vim
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 1,922 kB disk space will be freed.
Do you want to continue [Y/n]? n
apt-get remove
supprimerait alors vim mais pas ses dépendances les laissant derrière. Essayons maintenant de supprimer l'une des dépendances de vim:
$ Sudo apt-get remove vim-runtime
...
The following packages will be REMOVED:
vim vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 24.8 MB disk space will be freed.
Do you want to continue [Y/n]? n
Cela supprimerait la dépendance vim-runtimeainsi que le paquet qui en dépend, à savoir vim. Par curiosité, voyons ce qui se passerait si nous supprimions une dépendance inférieure à l'arbre de dépendance de vim:
$ Sudo apt-get remove libgpm2
...
The following packages were automatically installed and are no longer required:
libgtkglext1 libqtassistantclient4 libtiff-tools libtiff5 python-qt4
python-sip python-sqlalchemy python-sqlalchemy-ext
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
anki cheese gimp gimp-gmic gimp-plugin-registry gnome-control-center // !
gnome-media gnome-video-effects gstreamer0.10-plugins-good libaa1 // !
libcheese-gtk21 libcheese3 libgpm2 mplayer quodlibet vim vlc w3m // !
0 upgraded, 0 newly installed, 18 to remove and 0 not upgraded.
After this operation, 63.1 MB disk space will be freed.
Do you want to continue [Y/n]? n
Cela supprimerait vim et beaucoup de friandises!
Continuons avec apt-get remove vim
alors. Une fois que nous l'avons fait, nous devrions avoir quelques restes. Si nous essayons maintenant de supprimer automatiquement , nous pouvons voir:
$ Sudo apt-get autoremove
...
The following packages will be REMOVED:
vim-common vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 23.2 MB disk space will be freed.
Do you want to continue [Y/n]? y
Ce sont les deux paquets apt-get remove
laissés derrière même si rien d'autre n'a besoin d'eux.
Expérimenté avec apt-get 0.9.7.9.
Selon ceci: http://ubuntuforums.org/showthread.php?t=99605 autoremove supprimera tous les paquets dont les autres programmes n'ont pas besoin. Vous feriez 'apt-get autoremove', pas 'apt-get autoremove libreoffice'. En outre, la suppression de packages inutiles ne libère pas simplement un peu d'espace disque, elle réduit également la "surface d'attaque" de votre système.
remove
supprime le programme spécifié alors que autoremove
inclut des dépendances, sinon plus utilisées.
En outre, si vous souhaitez libérer de l’espace disque, une commande utile et sûre est ...
Sudo apt-get clean
Cela supprime le cache d'aptitude dans/var/cache/apt/archives