Quand utiliseriez-vous apt-get remove sur apt-get autoremove?

16

Je comprends que apt-get removesupprime les packages et apt-get autoremoveconsiste à supprimer tous les packages qui ont été 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, par exemple, Java et que je l'ai installé dans le cadre de l'installation lorsque j'exécute la commande apt-get libreoffice, pourquoi exécuter la commande apt-get remove libreofficesuivie de apt-get autoremove? Suis-je incapable d'exécuter simplement la commande apt-get autoremove libreoffice? Ou la combinaison de apt-get removeet apt-get autoremovedans un but différent?

PeanutsMonkey
la source

Réponses:

11

Cela dépend de la confiance que vous accordez au traqueur de dépendance. Bien que presque toujours correct, il y a des moments où vous souhaitez qu'une dépendance reste, en particulier lorsque vous êtes un développeur ou un utilisateur expérimenté installant un logiciel qui n'est pas dans le référentiel.

Si vous installez toujours le logiciel via apt-get, sans exception, et que toutes les dépendances sont correctes (ce qu'elles sont généralement), vous pouvez utiliser apt-get autoremoveet gagner une petite quantité d'espace disque et une exposition réduite aux failles de sécurité potentielles en ayant il supprime les packages qui n'en ont plus.

Mais si vous installez un logiciel manuellement, ou développez un logiciel, ou si vous ne voulez pas faire face à une éventuelle erreur de dépendance, ne pas utiliser la suppression automatique pour supprimer les packages potentiellement inutilisés est probablement le choix le plus sûr. Que vous apt-get autoremoveutilisiez de temps en temps ou non, vous supprimerez toujours les logiciels en utilisantapt-get remove Package

Par exemple, si j'installe AwesomePackage, cela peut dépendre AwesomeLibraryet AwesomeLibrarysera donc automatiquement installé en tant que dépendance . Lorsque je supprime l' AwesomePackageaide de la suppression automatique, tant qu'aucun autre package n'a AwesomeLibraryde dépendance, il sera également désinstallé. Mais si l' SuperPackageexige également AwesomeLibrary, ou si je m'étais installé AwesomeLibraryexplicitement plutôt que de le faire entrer automatiquement en tant que dépendance ( apt-get install AwesomeLibrary), alors le retrait automatique ne s'en débarrasserait pas.

La raison pour laquelle ce n'est pas la valeur par défaut est que le fait d'avoir AwesomeLibrarysur le système, inutilisé, est un problème très mineur. Cela ne causera presque jamais de problèmes et la plupart des dépendances ne prennent pas beaucoup de place. Il existe des exceptions, mais les moments où la suppression d'une dépendance entraînera des problèmes seront plus nombreux que les moments où cela résoudra ou préviendra un problème.

Myrddin Emrys
la source
Désolé Myrddin Emrys. Tu m'as perdu là-bas. Alors laissez-moi essayer de comprendre ce que vous avez dit. Ainsi, par exemple, si j'installe libreoffice à l'aide d'apt-get, il installe tout un tas de dépendances en supposant que je ne les ai pas déjà installées. Maintenant, si je décide de me débarrasser de libreoffice, je suppose que je apt-get remove libreoffice
courrais
Si je voulais que les dépendances installées restent, n'est-ce pas? Si je voulais me débarrasser à la fois de libreoffice et de ses dépendances associées en supposant qu'il n'était pas utilisé par un autre programme, je suppose que j'exécuterais la commande apt-get autoremovelibreoffice? Est-ce exact?
PeanutsMonkey
C'est tout à fait correct @PeanutsMonkey. Autoremove supprimera également les autres packages dont dépend le package nommé, s'ils ne sont plus requis par quoi que ce soit et n'ont pas été installés séparément à dessein.
Myrddin Emrys
En fait, ce n'est pas absolument correct; J'avais une syntaxe incorrecte dans ma réponse (comme l'a souligné @cooper). J'ai corrigé cela dans la réponse ci-dessus. apt-get autoremoveest une commande distincte de apt-get remove Package, je m'excuse pour la désinformation initiale.
Myrddin Emrys
Merci Myrddin Emrys. Désolé si je suis un n00b. Quand tu dis ça There are exceptions, but the times when removing a dependancy will cause problems outnumber the times when it will solve or prevent a problem. Que voulez-vous dire exactement?
PeanutsMonkey
12

Vous trouverez la description de supprimer , autoremove , purge , propre et autoclean , ainsi que la syntaxe dans les pages de manuel apt-get: man apt-get.

Si vous n'êtes toujours pas sûr après l'avoir lu, (j'étais) le meilleur moyen de le clarifier est de l'essayer.

Voici un exemple d'arbre de dépendance complet pour vim :

arbre de dépendance 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

Il semble donc que vim dépend d'un certain nombre de packages, essayons de l'installer avec apt-get installet 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 packages vim-common et vim-runtime et apt-getnous nous en occuperons. Nous pouvons le vérifier avec dpkg -s pkg...(voir man dpkgpour 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é de quoi dépend vim , nous pouvons également vérifier quelles autres choses dépendent des mêmes packages que vim 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 l'installation. Une fois que nous avons installé vim, nous pouvons faire la différence entre supprimer et supprimer automatiquement . 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 removesupprimerait alors vim mais pas ses dépendances en 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-runtime ainsi que le package qui en dépend , à savoir vim . Par curiosité, voyons ce qui se passerait si nous supprimions une dépendance plus basse sur 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 goodies!

Continuons apt-get remove vimalors. Une fois que nous l'avons fait, nous devrions avoir des 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 removelaissés derrière, même si rien d'autre n'en avait besoin.

Expérimenté avec apt-get 0.9.7.9.

Johnny Baloney
la source
4

Selon ceci: http://ubuntuforums.org/showthread.php?t=996053 autoremove supprimera tous les packages dont les autres programmes n'ont pas besoin. Vous feriez 'apt-get autoremove', pas 'apt-get autoremove libreoffice'. La suppression de packages inutiles ne libère pas seulement un peu d'espace disque, elle réduit également la «surface d'attaque» de votre système.

conspiritech
la source
Je peux voir que les bibliothèques inutilisées peuvent être un vecteur d'attaque, mais cela semble être un problème très mineur pour moi, par rapport à la douleur importante d'une suppression incorrecte (ce que j'ai vu se produire plus d'une fois). Merci pour les informations sur l'utilisation cependant ... J'ai en fait décrit la suppression automatique de manière incorrecte (je ne l'utilise pas moi-même, donc je ne m'en suis pas rendu compte), merci pour la correction.
Myrddin Emrys
3

removesupprimera le programme spécifié alors autoremovequ'il inclura des dépendances qui ne sont plus utilisées autrement.

De plus, 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

kobaltz
la source
Désolé d'être un tel n00b mais je ne suis pas tout à fait d'accord. Donc, si apt-get remove libreofficej'exécute la commande , je suppose qu'elle supprimera simplement libreoffice. Est-ce correct? Cependant, si apt-get autoremove libreofficej'exécute la commande , cela supprimerait non seulement libreoffice mais aussi ses dépendances?
PeanutsMonkey
C'est correct. Disons donc que j'installe neverballet neverballdépend d'un package appelé libisfun. Si je apt-get remove neverballpuis il supprimera juste le neverballpaquet. Si je apt-get autoremove neverballpuis supprimerons neverballet libisfunsi libisfunn'est pas une personne à charge sur toute autre application.
kobaltz