Quelle est la différence entre les différentes commandes de suppression de package APT?


17

Quelle est la différence entre ces commandes?

  1. sudo apt-get autoremove --purge packagenames
  2. sudo apt-get remove --purge packagenames
  3. sudo apt-get purge purge packagenmaes
  4. sudo apt-get remove packagenames
  5. sudo apt-get autoremove

Réponses:


24

Réponse rapide

  • remove désinstalle les packages qui portent son nom.
  • autoremovedésinstalle tous les packages installés automatiquement qui ne sont plus nécessaires. Il est incorrect de répertorier les noms des packages après autoremove; ils seront ignorés (et tous les packages éligibles seront supprimés), ce qui n'est probablement pas ce que vous envisagez.
  • --purgeentraîne également la suppression des fichiers de configuration à l'échelle du système associés aux packages supprimés. Il doit être accompagné d'une commande, telle que removeou autoremove. Le --purgedrapeau modifie l'action d'une commande; il n'agit pas seul.
  • purgesignifie la même chose que --purge remove(qui est la même chose que remove --purge). Il est incorrect de dire purgedeux fois; le second purgeest interprété comme le nom d'un paquet à être purged, ce qui n'est probablement pas ce que vous voulez.

Réponse complète

Pour comprendre ce que font ces commandes et en quoi elles diffèrent, il est utile (et même probablement essentiel) de comprendre deux concepts:

  1. la distinction entre les packages installés manuellement et automatiquement installés
  2. la distinction entre les fichiers de package d' un package et ses fichiers de configuration

Installé manuellement vs installé automatiquement

Un package installé est installé manuellement ou automatiquement .

Lorsque vous spécifiez un package pour l'installation et qu'il est installé, il est installé manuellement .

Mais d'autres packages peuvent également être installés. La plupart des packages ont des dépendances - d'autres packages qui doivent être installés pour que ces packages fonctionnent comme prévu. Lorsque vous installez un package, ses dépendances (c'est-à-dire les autres packages dont il dépend) sont installées, à l'exception de celles qui ont été installées auparavant.

Lorsqu'un package n'est pas spécifié par vous pour être installé, mais qu'il est plutôt installé en tant que dépendance d'un package que vous avez spécifié d'installer, il est automatiquement installé.

Veuillez noter que lorsque vous avez deux packages installés et que l'un d'eux est une dépendance d'un autre, cela ne signifie pas que la dépendance est automatiquement installée. Il est également possible que la dépendance ait été installée manuellement (c'est-à-dire, spécifiée par vous, par exemple, installée avant ou en même temps que le package qui en dépend).

Finalement:

  • Si vous essayez d'installer manuellement un package déjà installé, il reste installé. Mais s'il a été installé automatiquement, une modification est apportée - essayer de l'installer manuellement le marquera comme installé manuellement.
  • Vous pouvez marquer n'importe quel package comme installé manuellement ou automatiquement (avec la apt-markcommande), peu importe comment ou dans quelles circonstances il a été réellement installé.
  • Les packages qui sont préinstallés avec votre système Ubuntu ne sont pas tous installés automatiquement; certains d'entre eux sont marqués comme installés automatiquement et d'autres sont marqués comme installés manuellement. C'est pour satisfaire la logique derrière la distinction entre les packages installés manuellement et automatiquement - l'idée que certains packages ne sont nécessaires qu'au service d'autres.

En règle générale, pour chaque package installé automatiquement, vous aurez au moins un package installé manuellement qui en dépend (et qui a provoqué son installation automatique). Toutefois, si vous supprimez ensuite tous les packages installés manuellement qui dépendent d'un package installé automatiquement, le package installé automatiquement ne sera plus nécessaire, mais sera toujours installé.

apt-get autoremove supprime les packages installés automatiquement qui n'ont plus de packages installés manuellement en fonction d'eux.

Fichiers de package et fichiers de configuration

Un package fournit des fichiers destinés à être et à rester identiques sur tous les systèmes sur lesquels cette version de ce package est installée. Ces fichiers fournissent des exécutables, des ressources, de la documentation et d'autres «actifs» pour les programmes installés. Nous appelons généralement ces "fichiers" fournis par un package.

Mais un package fournit également d'autres fichiers, qui sont destinés (éventuellement) à être modifiés. Ces fichiers sont appelés fichiers de configuration globaux (ou à l'échelle du système). Ils sont presque toujours installés dans le /etcrépertoire, et ils peuvent être modifiés automatiquement et manuellement pour changer le comportement des programmes installés. Par exemple, sudoa un fichier de configuration /etc/sudoerset un répertoire pour plus de fichiers de configuration /etc/sudoers.d. Ce fichier et tous les fichiers ajoutés à ce répertoire spécifient qui est autorisé à utiliser sudode quelles manières.

En règle générale, il est souhaitable que la désinstallation d'un package, puis sa réinstallation ne modifie pas son comportement (sauf si ses fichiers de package sont corrompus et c'est pourquoi vous l'avez réinstallé, bien sûr). Par conséquent, généralement lorsqu'un package est désinstallé, ses fichiers de package sont supprimés mais ses fichiers de configuration à l'échelle du système ne sont pas modifiés.

Lorsque vous désinstallez un package sans spécifier que ses fichiers de configuration à l'échelle du système sont également censés être supprimés, cela s'appelle "supprimer" le package.

Si vous souhaitez également supprimer les fichiers de configuration à l'échelle du système d'un package lorsque vous désinstallez le package, cela s'appelle «purger» le package.

apt-get removesupprimera un paquet; c'est-à-dire qu'il désinstallera le package mais conservera ses fichiers de configuration à l'échelle du système.

apt-get purgepurgera un paquet; c'est-à-dire qu'il désinstallera le package et s'assurera également de supprimer ses fichiers de configuration à l'échelle du système.

Une autre façon de purger les packages consiste à utiliser l' --purgeindicateur. Cela ne dit pas apt-getquoi faire; au lieu de cela, il modifie ce que les termes (ou "commandes") comme lui removedisent de faire. L' --purgeindicateur provoque les désinstallations de packages accompagnées de la suppression des fichiers de configuration à l'échelle du système pour les packages à désinstaller. En d'autres termes, le --purgedrapeau transforme les suppressions en purges.

Pourquoi avons-nous le --purgedrapeau quand nous avons la purgecommande? Après tout, ce n'est pas sudo apt-get --purge remove packagenameéquivalent à sudo apt-get purge packagename. Ils sont équivalents. Lorsque cela --purgeest utile, c'est lorsque vous souhaitez modifier le comportement des commandes autres que remove.

Par exemple, supposons que vous souhaitiez désinstaller les packages installés automatiquement qui ne sont plus nécessaires (car il n'y a plus de packages installés manuellement en fonction d'eux), mais que vous ne souhaitez pas simplement supprimer ces packages installés automatiquement, vous souhaitez également supprimer leurs fichiers de configuration à l'échelle du système. Ensuite, vous pouvez exécuter:

sudo apt-get --purge autoremove

Prenons une autre utilisation de --purge. Il existe un indicateur appelé --reinstall, qui transforme les installations en réinstallations. Cela signifie que, normalement, lorsque vous essayez d'installer un package qui est déjà installé, rien ne se passera ou (si le package est marqué comme installé automatiquement), le package sera marqué comme installé manuellement. Mais avec l' --reinstallindicateur, l'installation d'un package déjà installé entraîne sa suppression puis sa réinstallation :

sudo apt-get --reinstall install packagename

Mais supposons que vous souhaitiez supprimer les fichiers de configuration à l'échelle du système du package que vous réinstallez. C'est quelque peu courant; lorsqu'un package ne fonctionne pas et que vous ne savez pas pourquoi, vous pouvez essayer de le réinstaller et également supprimer ses fichiers de configuration afin que sa configuration soit réinitialisée à sa valeur par défaut. Pour ce faire, vous pouvez exécuter:

sudo apt-get --purge --reinstall install packagename

Les --reinstalltransformations transforment l'installation en réinstallation (c.-à-d. L'enlèvement suivi de l'installation) et les --purgetransformations la partie d'enlèvement de la réinstallation en purge.

Le comportement de vos exemples

Maintenant, il devrait être clair exactement ce que font chacune de vos exemples de apt-getcommandes:

  • sudo apt-get autoremove --purge packagenames

    Cela purge les packages installés automatiquement qui n'ont plus de packages installés manuellement qui en dépendent. Autrement dit, il désinstalle ces packages (ce qui implique la suppression de leurs fichiers de package), et il supprime également leurs fichiers de configuration à l'échelle du système.

    Ici, packagenamesne fait rien. En particulier, si vous aviez l'intention de supprimer uniquement les packages dont les noms y sont répertoriés, cela ne se comportera pas comme vous le souhaitez.

  • sudo apt-get remove --purge packagenames

    Cela purge packagenames; en supposant qu'il packagenamess'agit d'une liste de noms de packages séparés par des espaces, il les purgera tous. Autrement dit, il les désinstallera (ce qui implique la suppression de leurs fichiers de package) et supprimera également leurs fichiers de configuration à l'échelle du système.

    Si l'un des packages répertoriés dans packagenamesn'est pas installé, sa présence dans la liste n'aura aucun effet (sauf que vous serez informé qu'il n'a pas été installé). Si vous répertoriez des noms de package qui ne sont pas le nom d'un package réel, la commande échouera avec une erreur.unable to locate packagename

  • sudo apt-get purge purge packagenmaes

    Si vous supprimiez l'une des occurrences de purgedans cette commande, elle serait équivalente à la précédente. En l'état, il essaie de purger un package appelé purgeet également de purger les packages répertoriés dans packagenames. Comme ce purgen'est pas le nom d'un package, il échouera avec un message d'erreur.

  • sudo apt-get remove packagenames

    Cela supprime les packages répertoriés dans packagenames, ce qui implique la suppression de leurs fichiers de packages. Cela ne supprime pas leurs fichiers de configuration à l'échelle du système (car il s'agit simplement d'une suppression, pas d'une purge).

  • sudo apt-get autoremove

    Cela désinstalle les packages installés automatiquement qui n'ont plus de packages installés manuellement qui en dépendent. Cela implique la suppression de leurs fichiers de package, mais pas de leurs fichiers de configuration à l'échelle du système (c'est-à-dire qu'il s'agit d'une suppression mais pas d'une purge).

Pour plus d'informations sur l'utilisation apt-get, je recommande sa page de manuel . Pour plus d'informations générales, consultez ce guide .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.