Question Quelle est la bonne façon de supprimer complètement une application?


J'ai cherché sur le net de telles informations et trouvé différentes lignes de commandes, comme celles-ci:

sudo apt-get remove application
sudo apt-get remove application*

sudo apt-get remove --purge application
sudo apt-get remove --purge application*

sudo apt-get purge application
sudo apt-get purge application*

Alors, quelle est la bonne façon? Est-il nécessaire d'utiliser ce "*"?

Après cela, j'ai aussi trouvé ces commandes:

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)

478
2017-09-14 21:54


origine


Certaines de vos questions pourraient recevoir une réponse dans cet article: askubuntu.com/questions/1143/how-can-i-uninstall-software - Glutanimate
application* peut parfois donner des résultats inattendus - par exemple, si vous avez un fichier dans le répertoire en cours nommé application_information, le shell l’élargira avant qu’il ne soit transmis à apt-get. Si cela se produit et que vous voulez l'astérisque littéral, vous pouvez utiliser application\* ou 'application*' - Izkata
application* est encore plus dangereux lorsqu'il n'y a pas de fichiers dans le répertoire actuel: apt-get utilise des expressions régulières, aucun modèle de glob. Les gens ont presque effacé tout le système en essayant de supprimer wine*. - Andrea Corbellini
Pouvez-vous accepter une réponse? Être reconnaissant aux personnes qui vous ont répondu. - m-ric
Ni application* ni application\* est sécurisé! Citant * avec \ ou '  ' seulement augmente le risque, assurant * est passé tel quel à apt-get (bien que ce soit généralement quand même!), cause apt-get interpréter l'argument comme une regex. Dans une regex * signifie "zéro ou plus du caractère précédent." Une forme courante de l'erreur consiste à désinstaller wine*, supprimer tous les paquets avec win (ne pas wine, win) nulle part dans leurs noms et tous les paquets en fonction de l'un d'eux. Voir cette explication et corrections possibles. @Izkata - Eliah Kagan


Réponses:


  • apt-get remove packagename

    va supprimer les binaires, mais pas les fichiers de configuration ou de données du paquet packagename. Il laissera également intactes les dépendances installées avec lui au moment de l'installation.

  • apt-get purge packagename ou apt-get remove --purge packagename

    va supprimer environ tout concernant le paquet packagename, mais pas les dépendances installées avec elle lors de l'installation. Les deux commandes sont équivalentes.

    Particulièrement utile lorsque vous voulez tout recommencer avec une application car vous avez endommagé la configuration. Cependant, il ne supprime pas les fichiers de configuration ou de données résidant dans les répertoires personnels des utilisateurs, généralement dans des dossiers masqués. Il n'y a pas de moyen facile de faire enlever ces éléments.

  • apt-get autoremove

    supprime les packages orphelins, c'est-à-dire les packages installés qui étaient auparavant installés en tant que dépendance, mais qui ne sont plus. Utilisez ceci après avoir supprimé un paquet contenant des dépendances installées qui ne vous intéressent plus.

  • aptitude remove packagename ou aptitude purge packagename (également)

    tentera également de supprimer les autres paquets requis par packagename sur mais ne sont pas requis par les paquets restants. Notez que aptitude ne mémorise que les informations de dépendance pour les packages installés.

Et beaucoup plus existent. Niveau inférieur dpkg-les commandes peuvent être utilisées (avancées), ou des outils graphiques comme Muon, Synaptic, Software Center, etc. Il n'y a pas de «moyen correct» de supprimer des applications ou d'effectuer d'autres tâches en interaction avec la gestion de vos packages.

La liste que vous avez trouvée ne sont que des exemples. Assurez-vous de comprendre les significations et essayez ce qu’il veut faire avant d’accepter l’action (vous devez appuyer sur Y avant qu'il effectue réellement les actions proposées).

La version astérisque de la question est probablement faux; apt-get accepte une expression régulière et non un motif glob comme shell. Alors qu'est-ce qui se passe avec

sudo apt-get remove application*

est le suivant:

  1. Le shell tente de se développer application* regarder les fichiers dans le répertoire en cours. Si (comme c’est normalement le cas) il ne trouve rien, le modèle de globes reste inchangé (en supposant bash avec comportement par défaut ici --- zsh erreur de sortie).

  2. apt-get va supprimer les paquets dont le nom contient une chaîne qui satisfait l'expression régulière application*, C'est, applicatio suivi d'un nombre arbitraire de n: applicatio, application, applicationn, libapplicatio, etc.

  3. Pour voir comment cela peut être dangereux, essayez (sans racine pour une double sécurité) apt-get -s remove "wine*" (-s va simuler la chose au lieu de le faire) --- il sera dit va supprimer tous les paquets qui ont "gagner" dans leur nom et la dépendance, presque tout le système ...

Probablement, la commande qui était destinée est vraiment

 sudo apt-get remove "^application.*"

(notez les guillemets et le point) qui va supprimer tous les paquets dont le nom commence par application.

Ces commandes,

sudo updatedb                  # <-- updates the locate database (index). harmless
sudo locate application        # <-- locates the file 'application'. harmless
sudo rm -rf (file/folder name) # <-- removes files/dirs recursively. dangerous.

sont complètement hors du champ de la gestion des paquets. Ne supprimez pas les fichiers appartenant aux packages sans utiliser le gestionnaire de paquets! Il sera confus et est le faux façon de faire les choses.

Si vous ne savez pas à quel paquet appartient un fichier, essayez ceci:

dpkg -S /path/to/file

638
2017-09-14 22:04



L'option --purge est également pratique lorsque vous tentez de supprimer complètement les dépendances restantes, y compris leurs fichiers de configuration: apt-get-autoremove --purge  Il est également important de noter que les fichiers de configuration de votre répertoire personnel ne sont pas affectés par l'option --purge. Ceux-ci vous devrez supprimer manuellement. - Glutanimate
Il y avait une erreur ici: apt-get accepte RE, pas les globs; Donc, apt-get remove pack * supprimera tous les paquets commençant par pac suivi de zéro ou plus k ... ce qui est normalement inattendu. J'ai édité le anser. Voir également askubuntu.com/questions/210976/… - Rmano
Je pense que cette réponse n'est plus exacte. Non plus apt remove -s texlive* ou sa apt-get lignes de retour de contrepartie telles que Note, selecting 'texlive-font-utils' for glob 'texlive*' (impliquant qu'ils acceptent effectivement les globes), suivi de l'habituel Package 'texlive-common' is not installed, so not removed, et enfin Remv des lignes, telles que Remv texlive-font-utils [2015.20160320-1] [...]. - Jonathan Y.
@JonathanY. Vous devez également sélectionner les packages non installés. De toute façon, pourriez-vous s'il vous plaît poser une nouvelle question et élaborer un peu plus en détail votre situation dans la question. Je serais heureux de le regarder :) - gertvdijk
Je ne pose pas une nouvelle question. Je pointe un changement possible depuis que cette réponse a été faite, ce qui rend certains détails incorrects. A savoir, il semblerait que apt-get remove packa* prend effectivement la glob packa* au lieu de le regarder comme regex: il correspond package mais non pack. - Jonathan Y.


Pour Ubuntu 12.04 et peut-être plus, la méthode correcte est la suivante:

sudo apt-get --purge autoremove packagename

Comme détaillé ici.

Ne pas utiliser packagename* comme cela peut supprimer des paquets involontaires et causer plus de problèmes qu'il n'en résout. Ou si vous devez, au moins le lancer avec un -s, --simulate, --dry-run marquez d'abord pour voir exactement ce qu'il fera sans le faire.


92
2017-11-20 20:01



c'est la bonne réponse, courte et concise: - Anwar


Vous pouvez utiliser cette commande:

sudo apt-get purge --auto-remove packagename

Il va purger les packages requis avec les dépendances installées avec ces packages. le --auto-remove option (étant un alias de autoremove) fonctionne de manière similaire à sudo apt-get autoremove. En utilisant cette commande, nous pouvons exécuter une seule commande:

sudo apt-get purge --auto-remove packagename

Au lieu de:

sudo apt-get purge packagename
sudo apt-get autoremove

17
2017-09-16 20:08



Bien que vous soyez correct, mais on peut aussi utiliser sudo apt-get --purge autoremove packagename. Même 1 commande ici - Anwar
La commande complète peut-elle aussi être écrite comme apt-get autoremove --purge au lieu de apt-get purge --auto-remove ? - felwithe
Quelqu'un peut-il s'il vous plaît me tirer dessus? - Martin Andersson


Vous pouvez utiliser en toute sécurité sudo apt-get remove --purge application ou sudo apt-get remove applications 99% du temps Lorsque vous utilisez le purge flag, il supprime simplement tous les fichiers de configuration. Ce qui peut ou peut ne pas être ce que vous voulez, selon que vous voulez réinstaller cette application. le application* correspondra à toutes les applications qui commencent par application, qui sont généralement des plugins, des fonctionnalités supplémentaires, etc. de l'application principale que vous supprimez. c'est à dire.

sudo apt-get remove gedit*

enlèverait gedit, gedit-plugins et gedit-common. Cela n'est généralement pas nécessaire car la plupart des plug-ins / programmes associés dépendent de l'application principale et seront automatiquement supprimés (ou marqués pour suppression) lorsque vous désinstallez l'application principale.

Votre dernière commande consiste simplement à supprimer les restes d'applications connues pour avoir des programmes de désinstallation en désordre, et il ne fait que supprimer les restes de l'application.


7
2017-09-14 22:05





J'ai reçu des messages d'erreur lors de la suppression d'un paquet, la seule façon de fonctionner était la suivante:

mv /var/lib/dpkg/info/package.* /tmp/
dpkg --remove --force-remove-reinstreq package

J'ai trouvé que bien que n'utilisant que

dpkg --remove --force-remove-reinstreq package

ne supprime pas le paquet, il me montre le chemin correct vers le fichier à déplacer avec:

mv /var/lib/dpkg/info/package.* /tmp/

Remplacez le package par le nom de votre application. Utilisez sudo dans Ubuntu, devenez root dans Debian.


5
2018-02-26 09:26





J'ai trouvé cette commande sur internet.

dpkg --purge --force-depends application

http://www.debian-administration.org/article/Reinstalling_packages_to_fix_problems.


3
2017-09-14 22:10





Cela dépend de l'application que vous souhaitez supprimer. Veillez toujours à vérifier ses dépendances avant de lancer la commande yes. Lorsque vous supprimez quelque chose en ligne de commande, il affiche parfois une poignée de bibliothèques inutiles. Ceux-ci peuvent être supprimés avec apt-get autoremove.

Attention, l'utilisation de commandes telles que sudo apt-get remove --purge nom_application peut supprimer certaines dépendances nécessaires à d'autres applications et, en tant que telles, peut endommager votre système.

Si vous voulez le faire de manière plus sûre, vous pouvez toujours le supprimer en utilisant simplement le centre logiciel ou apt-get remove nom_application. Si les dépendances ne sont plus nécessaires, lancez apt-get autoremove plus tard.


1
2017-09-14 22:10



Je pense que l'ensemble du système de paquets Debian a été conçu spécifiquement pour ne pas supprimer un paquet si d'autres paquetages en dépendent. Vous pouvez être (utilement) demandé si vous souhaitez supprimer tous les paquets dépendants, et c'est là que vous devriez réellement lis la liste des paquets à supprimer, qui est je pense ce que vous essayez de dire - Xen2050


Je voulais juste clarifier une chose qui semble être une source de confusion ici. le dpkgutilitaire ne sait pas ou suivre les dépendances des paquets les uns par rapport aux autres, ce qui était une grande raison pour laquelle apt a été développé je crois. Vous pouvez lire à ce sujet dans la section 8.6 sur cette page La FAQ Debian GNU / Linux - Les outils de gestion des paquets Debian

  • Avec apt: si je voulais purger le paquet A et qu'il a une dépendance appelé package B, et le paquet B n’a pas d’autres paquets dépendants, alors les colis A et B seront purgés. Si le package B DID a d'autres dépendants les paquets, alors seul le paquet A sera purgé.

  • Avec dpkg: quelle dépendance? Tu viens de me dire de purger le foutu
    paquet donc c'est ce que j'ai fait! Une mauvaise planification de votre part ne
    constituer une urgence de ma part.

Cela dit, voici deux one-liners qui peuvent être utilisés pour chaque méthode de purge:

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --dry-run --purge

apt-get autoremove -y; apt-get --dry-run purge -y $(dpkg --list |grep '^rc' |awk '{print $2}')

Retirer le --dry-run pour effectuer l'opération de purge réelle au lieu de signaler les actions à effectuer.


1
2017-08-23 23:32