Frage Was ist der richtige Weg, um eine Anwendung vollständig zu entfernen?


Ich habe das Internet nach solchen Informationen durchsucht und verschiedene Befehlszeilen gefunden, wie diese:

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*

Also, was ist der richtige Weg? Ist es notwendig, das "*" zu verwenden?

Danach habe ich auch folgende Befehle gefunden:

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

478
2017-09-14 21:54


Ursprung


Einige Ihrer Fragen können in diesem Post beantwortet werden: askubuntu.com/questions/1143/how-can-i-uninstall-software - Glutanimate
application* kann gelegentlich zu unerwarteten Ergebnissen führen - zum Beispiel, wenn Sie eine Datei im aktuellen Verzeichnis namens haben application_informationDie Shell würde sie erweitern, bevor sie an apt-get übergeben wird. Wenn dies der Fall ist und Sie möchten den literalen Stern, können Sie verwenden application\* oder 'application*' - Izkata
application* ist noch gefährlicher, wenn sich im aktuellen Verzeichnis keine Dateien befinden: apt-get verwendet reguläre Ausdrücke, keine Glob-Muster. Die Leute haben fast das ganze System gelöscht, um es zu entfernen wine*. - Andrea Corbellini
Kannst du eine Antwort akzeptieren? Um Menschen zu danken, die Ihnen geantwortet haben. - m-ric
Weder application* Noch application\* ist sicher! Zitieren * mit \ oder '  ' nur erhöht sich das Risiko, sicherzustellen * wird unverändert weitergegeben apt-get (obwohl es normalerweise sowieso ist!), Ursachen apt-get das Argument als Regex interpretieren. In einer Regex * bedeutet "Null oder mehr des vorhergehenden Zeichens". Eine häufige Form des Fehlers ist die Deinstallation wine*, Entfernen aller Pakete mit win (nicht wine, win) irgendwo in ihren Namen und allen Paketen abhängig von irgendwelchen von ihnen. Sehen diese Erklärung und mögliche Korrekturen. @Izkata - Eliah Kagan


Antworten:


  • apt-get remove packagename

    entfernt die Binärdateien, aber nicht die Konfigurations- oder Datendateien des Pakets packagename. Abhängigkeiten, die während der Installation installiert werden, bleiben ebenfalls unberührt.

  • apt-get purge packagename oder apt-get remove --purge packagename

    wird etwa entfernen alles bezüglich des Pakets packagename, aber nicht die damit bei der Installation installierten Abhängigkeiten. Beide Befehle sind gleichwertig.

    Besonders nützlich, wenn Sie mit einer Anwendung "von vorne anfangen" wollen, weil Sie die Konfiguration durcheinander gebracht haben. Es entfernt jedoch nicht die Konfigurations- oder Datendateien, die sich in den Benutzerverzeichnissen befinden, normalerweise in versteckten Ordnern. Es gibt keinen einfachen Weg, diese zu entfernen.

  • apt-get autoremove

    entfernt verwaiste Pakete, d. h. installierte Pakete, die früher als Abhängigkeit installiert wurden, aber nicht mehr sind. Verwenden Sie dies, nachdem Sie ein Paket entfernt haben, in dem Abhängigkeiten installiert wurden, an denen Sie nicht mehr interessiert sind.

  • aptitude remove packagename oder aptitude purge packagename (Gleichfalls)

    wird auch versuchen, andere Pakete zu entfernen, die von benötigt wurden packagename auf, aber sind nicht erforderlich für alle verbleibenden Pakete. Beachten Sie, dass aptitude merkt sich nur Abhängigkeitsinformationen für Pakete, die es installiert hat.

Und viele mehr existieren. Niedrigeres Level dpkg-Befehle können verwendet werden (Fortgeschrittene), oder GUI-Werkzeuge wie Muon, Synaptic, Software Center, etc. Es gibt keinen einzigen "richtigen Weg", um Anwendungen zu entfernen oder andere Aufgaben auszuführen, die mit Ihrer Paketverwaltung interagieren.

Die Liste, die Sie gefunden haben, sind nur Beispiele. Stellen Sie sicher, dass Sie die Bedeutungen verstehen und ausprobieren, was Sie tun möchten, bevor Sie die Aktion akzeptieren (Sie müssen drücken) Y bevor es die vorgeschlagenen Aktionen ausführt).

Die Sternchen-Version in der Frage ist wahrscheinlich falsch; apt-get akzeptiert einen regulären Ausdruck und kein Glob-Muster als Shell. Also, was passiert mit

sudo apt-get remove application*

ist das Folgende:

  1. Die Shell versucht zu expandieren application* Betrachten Sie die Dateien im aktuellen Verzeichnis. Wenn (wie es normalerweise der Fall ist) nichts gefunden wird, wird das Glob - Muster unverändert zurückgegeben (angenommen bash mit Standardverhalten hier --- zsh wird Fehler aus).

  2. apt-get Entfernt die Pakete, deren Name enthält eine Zeichenfolge das genügt dem regulären Ausdruck application*, das ist, applicatio gefolgt von einer beliebigen Anzahl von n: applicatio, application, applicationn, libapplicatio, etc.

  3. Um zu sehen, wie das gefährlich sein kann, versuche (ohne Wurzel für doppelte Sicherheit) apt-get -s remove "wine*" (-s wird das Ding simulieren, anstatt es zu tun) --- es wird sagen, wird alle Pakete entfernen, die in ihrem Namen "gewinnen" und das abhängige, fast das gesamte System ...

Wahrscheinlich war der Befehl, der gemeint war, wirklich

 sudo apt-get remove "^application.*"

(Beachten Sie die Anführungszeichen und den Punkt), die alle Pakete entfernen, deren Name mit beginnt application.

Diese Befehle,

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.

liegen völlig außerhalb des Rahmens der Paketverwaltung. Entfernen Sie keine Dateien, die zu Paketen gehören, ohne den Paketmanager zu verwenden! Es wird verwirrt und ist der falsch Möglichkeit Dinge zu tun.

Wenn Sie nicht wissen, zu welchem ​​Paket eine Datei gehört, versuchen Sie Folgendes:

dpkg -S /path/to/file

638
2017-09-14 22:04



Die Option --purge ist auch praktisch, wenn Sie versuchen, alle verbleibenden Abhängigkeiten einschließlich ihrer Konfigurationsdateien vollständig zu entfernen: apt-get-autoremove --purge  Beachten Sie auch, dass Konfigurationsdateien in Ihrem Home-Verzeichnis von der Option --purge nicht betroffen sind. Diese müssen Sie manuell entfernen. - Glutanimate
Es gab hier einen Fehler: apt-get akzeptiert RE, nicht globs; apt-get remove pack * entfernt alle Pakete, die mit pac beginnen, gefolgt von null oder mehr k ... was normalerweise unerwartet ist. Ich habe den Anser bearbeitet. Siehe auch askubuntu.com/questions/210976/ ... - Rmano
Ich denke, diese Antwort ist nicht mehr korrekt. Entweder apt remove -s texlive* oder sein apt-get Gegenzeilen wie z Note, selecting 'texlive-font-utils' for glob 'texlive*' (was impliziert, dass sie tatsächlich Globs akzeptieren), gefolgt von dem Üblichen Package 'texlive-common' is not installed, so not removed, und schlussendlich Remv Linien, wie z Remv texlive-font-utils [2015.20160320-1] [...]. - Jonathan Y.
@ JonathanY. Sie würden auch nicht installierte Pakete auswählen. Wie auch immer, könntest du bitte eine NEUE Frage stellen und ein bisschen genauer erläutern, was deine Situation in der Frage ist. Ich würde mich freuen, es anzuschauen :) - gertvdijk
Ich stelle keine neue Frage. Ich zeige auf eine mögliche Änderung, seit diese Antwort gemacht wurde, die einige der Details falsch macht. Es scheint so zu sein apt-get remove packa* nimmt in der Tat den Glob packa* anstatt es als Regex zu betrachten: es passt package aber nicht pack. - Jonathan Y.


Für Ubuntu 12.04 und vielleicht höher ist die korrekte Methode:

sudo apt-get --purge autoremove packagename

Wie detailliert Hier.

Verwende nicht packagename* Das kann unbeabsichtigte Pakete löschen und mehr Probleme verursachen, als es löst. Oder wenn Sie müssen, führen Sie es zumindest mit einem -s, --simulate, --dry-run flag zuerst, um genau zu sehen, was es tun wird, ohne es zu tun.


92
2017-11-20 20:01



Das ist die richtige Antwort, kurz und prägnant: - Anwar


Sie können diesen Befehl verwenden:

sudo apt-get purge --auto-remove packagename

Es wird erforderliche Pakete zusammen mit Abhängigkeiten, die mit diesen Paketen installiert sind, löschen. Das --auto-remove Option (ist ein Alias ​​von autoremove) funktioniert ähnlich wie sudo apt-get autoremove. Mit diesem Befehl können wir einen einzigen Befehl ausführen:

sudo apt-get purge --auto-remove packagename

Anstatt von:

sudo apt-get purge packagename
sudo apt-get autoremove

17
2017-09-16 20:08



Obwohl du richtig bist, kann man aber auch verwenden sudo apt-get --purge autoremove packagename. Gleicher 1 Befehl hier - Anwar
Kann der komplette Befehl auch als geschrieben werden? apt-get autoremove --purge Anstatt von apt-get purge --auto-remove ? - felwithe
Kann mich bitte jemand erschießen? - Martin Andersson


Sie können sicher verwenden sudo apt-get remove --purge application oder sudo apt-get remove applications 99% der Zeit. Wenn du das benutzt purge flag, es löscht auch einfach alle Konfigurationsdateien. Welches ist oder was nicht, was Sie wollen, abhängig davon, ob Sie die Anwendung neu installieren möchten. Das application* passt alle Anwendungen an, die mit beginnen application, die normalerweise Plugins, zusätzliche Funktionen usw. der Hauptanwendung sind, die Sie entfernen. d.h.

sudo apt-get remove gedit*

würde entfernen gedit, gedit-plugins und gedit-common. In der Regel ist dies nicht erforderlich, da die meisten Plugins / zugehörigen Programme von der Hauptanwendung abhängig sind und beim Deinstallieren der Hauptanwendung automatisch entfernt (oder zum Entfernen markiert) werden.

Ihr letzter Befehl besteht nur darin, Reste von Anwendungen zu entfernen, von denen bekannt ist, dass sie unordentliche Deinstallationsprogramme enthalten, und dabei werden nur die Reste der Anwendung entfernt.


7
2017-09-14 22:05





Ich habe einige Fehlermeldungen bekommen, die ein Paket entfernen.

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

Ich habe festgestellt, dass obwohl nur verwendet

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

entfernt das Paket nicht Es zeigt mir den richtigen Pfad zu der Datei, mit der verschoben werden soll:

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

Ersetzen Sie das Paket mit Ihrem Anwendungsnamen. Benutze Sudo in Ubuntu, werde Root in Debian.


5
2018-02-26 09:26





Ich habe diesen Befehl im Internet gefunden.

dpkg --purge --force-depends application

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


3
2017-09-14 22:10





Dies hängt von der Anwendung ab, die Sie entfernen möchten. Überprüfen Sie immer die Abhängigkeiten, bevor Sie den Befehl yes ausführen. Wenn Sie etwas über die Befehlszeile entfernen, werden manchmal eine Handvoll Bibliotheken angezeigt, die nicht mehr benötigt werden. Diese können mit apt-get autoremove entfernt werden.

Beachten Sie, dass durch Verwendung von Befehlen wie sudo apt-get remove --purge Anwendungsname einige Abhängigkeiten entfernen kann, die von anderen Anwendungen benötigt werden und somit Ihr System beschädigen können.

Wenn Sie es auf sicherere Weise tun möchten, können Sie es immer nur mit dem Software Center oder apt-get remove Anwendungsname entfernen. Wenn die Abhängigkeiten nicht mehr benötigt werden, geben Sie apt-get später automatisch zurück.


1
2017-09-14 22:10



Ich denke, das ganze Debian-Paketsystem wurde speziell dafür entwickelt nicht Entfernen Sie ein Paket, wenn andere Pakete davon abhängig sind. Sie können (hilfreich) gefragt werden, ob Sie alle abhängigen Pakete auch entfernen möchten, und das ist, wo Sie eigentlich sollten lesen die Liste der Pakete, die entfernt werden sollen Ich denke was du versuchst zu sagen. - Xen2050


Ich wollte nur etwas klarstellen, das hier eine Quelle der Verwirrung zu sein scheint. Das dpkgDas Dienstprogramm kennt keine Paketabhängigkeiten in Bezug aufeinander oder verfolgt sie nicht, was ein wichtiger Grund dafür ist apt wurde entwickelt, glaube ich. Sie können darüber in Abschnitt 8.6 auf dieser Seite nachlesen Die Debian GNU / Linux FAQ - Die Debian-Paketverwaltungstools

  • Mit apt: Wenn ich Paket A löschen wollte, und es eine Abhängigkeit hat Paket B genannt, und Paket B hatte dann keine anderen abhängigen Pakete Paket A und B werden gelöscht. Wenn Paket B DID andere abhängig haben Pakete, dann wird nur Paket A gelöscht.

  • Mit dpkg: Welche Abhängigkeit? Du hast mir gerade gesagt, dass ich den Verdammten säubern soll
    Paket, das ist was ich getan habe! Schlechte Planung von Ihrer Seite nicht
    einen Notfall für mich darstellen.

Mit diesem gesagt, hier sind zwei Einzeiler, die für jede Reinigungsmethode verwendet werden können:

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}')

Entferne das --dry-run um die eigentliche Bereinigungsoperation auszuführen, anstatt zu berichten, welche Aktionen ausgeführt worden wären.


1
2017-08-23 23:32