web-dev-qa-db-fra.com

En quoi les différentes commandes de suppression de paquets APT diffèrent-elles?

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
17
sajjad

Réponse rapide

  • remove désinstalle les paquets qui portent son nom.
  • autoremove désinstalle tous les packages installés automatiquement qui ne sont plus nécessaires. Il est incorrect de lister les noms de paquetages après autoremove; ils seront ignorés (et tous les paquets éligibles seront supprimés), ce qui n'est probablement pas ce que vous souhaitez.
  • _--purge_ entraîne également la suppression des fichiers de configuration système associés aux packages en cours de suppression. Il doit être accompagné d'une commande, telle que remove ou autoremove. L'indicateur _--purge_ modifie l'action d'une commande; il n'agit pas seul.
  • purge signifie la même chose que _--purge remove_ (qui est identique à _remove --purge_). Il est incorrect de dire purge deux fois; le second purge est interprété comme le nom d'un package comme étant purged, ce qui n'est probablement pas ce que vous souhaitez.

Réponse complète

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

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

Installé manuellement ou automatiquement installé

Un package installé est manuellement ou automatiquement installé.

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

Mais d'autres paquets peuvent aussi être installés. La plupart des packages ont des dépendances - d'autres packages à installer - 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 précédemment installées.

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

Veuillez noter que lorsque deux packages sont 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 que vous l'avez spécifiée, par exemple avant ou au même moment que le paquet qui en dépend).

Finalement:

  • Si vous essayez d'installer manuellement un package déjà installé, celui-ci 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 paquet comme manuellement ou automatiquement installé (avec la commande apt-mark ), quelles que soient la manière ou les circonstances dans lesquelles ils ont été réellement installés.
  • Les paquetages 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. Ceci vise à satisfaire la logique qui sous-tend la distinction entre les packages installés manuellement et automatiquement - l'idée selon laquelle 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 l'a causé automatiquement). 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 et qui ne contiennent plus de packages installés manuellement.

Fichiers de package et fichiers de configuration

Un package fournit des fichiers destinés à rester 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 habituellement ces "fichiers" fournis par un paquet.

Mais un paquet fournit également d’autres fichiers qui sont (éventuellement) modifiés. Ces fichiers sont appelés fichiers de configuration globaux (ou globaux). Ils sont presque toujours installés dans le répertoire _/etc_ et peuvent être modifiés automatiquement et manuellement pour modifier le comportement des programmes installés. Par exemple, Sudo a un fichier de configuration _/etc/sudoers_ et un répertoire pour plusieurs fichiers de configuration _/etc/sudoers.d_. Ce fichier, et tous les fichiers ajoutés à ce répertoire, spécifient qui est autorisé à utiliser Sudo de quelle manière.

Généralement, il est souhaitable que désinstaller un paquet puis l'installer ne change pas son comportement (à moins que ses fichiers de paquet soient corrompus et c'est pourquoi vous avez réinstallé ça, 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 système ne sont pas modifiés.

Lorsque vous désinstallez un package sans indiquer que ses fichiers de configuration système doivent également être supprimés, cela s'appelle "supprimer" le package.

Si vous souhaitez également supprimer les fichiers de configuration système d'un package lors de la désinstallation du package, cela s'appelle "purger" le package.

_apt-get remove_ va supprimer un paquet; c'est-à-dire qu'il désinstallera le paquet mais laissera ses fichiers de configuration à l'échelle du système.

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

Un autre moyen de purger les packages consiste à utiliser l'indicateur _--purge_. Cela ne dit pas _apt-get_ quoi faire; au lieu de cela, il modifie quels termes (ou "commandes") comme remove lui disent de le faire. L'indicateur _--purge_ entraîne que toute désinstallation de package s'accompagne de la suppression de fichiers de configuration à l'échelle du système pour le (s) package (s) en cours de désinstallation. En d'autres termes, le drapeau _--purge_ transforme les retraits en purges.

Pourquoi avons-nous le drapeau _--purge_ lorsque nous avons la commande purge? Après tout, _Sudo apt-get --purge remove packagename_ n’est-il pas équivalent à _Sudo apt-get purge packagename_. Ils sont équivalents. _--purge_ est utile lorsque vous souhaitez modifier le comportement des commandes autres que que remove.

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

_Sudo apt-get --purge autoremove
_

Considérons une autre utilisation de _--purge_. Un indicateur appelé _--reinstall_ transforme les installations en réinstallations. En d'autres termes, normalement, lorsque vous essayez d'installer un package déjà installé, rien ne se passera ou (si le package est marqué comme automatiquement installé), le package sera marqué comme étant installé manuellement. Mais avec l'indicateur _--reinstall_, l'installation d'un package déjà installé entraîne sa suppression , puis . ) installé en arrière :

_Sudo apt-get --reinstall install packagename
_

Mais supposons que vous vouliez supprimer les fichiers de configuration à l'échelle du système du paquet que vous réinstallez. C'est un peu commun. Si un paquet ne fonctionne pas et que vous ne savez pas pourquoi, vous pouvez essayer de le réinstaller et de supprimer ses fichiers de configuration afin que sa configuration soit réinitialisée. Pour ce faire, vous pouvez exécuter:

_Sudo apt-get --purge --reinstall install packagename
_

Le _--reinstall_ transforme l’installation en réinstallation (c’est-à-dire la suppression suivie de l’installation) et le _--purge_ transforme la partie de la réinstallation supprimée en purge.

Le comportement de vos exemples

Vous devez maintenant savoir exactement ce que chacune de vos exemples de commandes _apt-get_ fait:

  • _Sudo apt-get autoremove --purge packagenames_

    Cela purge les packages installés automatiquement qui ne possèdent plus aucun package installé manuellement qui en dépend. En d’autres termes, il désinstalle ces packages (ce qui implique la suppression de leurs fichiers), ainsi que leurs fichiers de configuration à l’échelle du système.

    Ici, packagenames ne fait rien. En particulier, si vous vouliez simplement supprimer les paquets dont les noms sont répertoriés ici, cela ne se comportera pas comme vous le souhaitez.

  • _Sudo apt-get remove --purge packagenames_

    Ceci purge packagenames; en supposant que packagenames est une liste de noms de paquetages séparés par des espaces, elle les purgera tous. C'est-à-dire qu'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 packagenames n'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 purge dans cette commande, cela équivaudrait à la précédente. Dans l'état actuel des choses, il essaie de purger un paquet nommé purge, et également de purger les paquets listés dans packagenames. Puisque purge n'est pas le nom d'un paquet, 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 package. 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_

    Cette opération désinstalle les packages installés automatiquement qui ne possèdent plus aucun package installé manuellement qui en dépend. 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 de _apt-get_, je recommande sa page de manuel . Pour plus d'informations générales, voir ce guide .

24
Eliah Kagan