Programme unter Linux deinstallieren


30

Ich habe in den letzten 5 Jahren Windows und Mac OS verwendet und überlege nun, Linux täglich zu verwenden. Ich habe Ubuntu auf einer virtuellen Maschine installiert und versucht zu verstehen, wie ich Linux für meine tägliche Arbeit nutzen kann (als js-Programmierer / Webdesigner).

Sorry für die Anfänger Frage , aber es fällt mir ein, dass manchmal , wenn ich ein Programm zu installieren , durch make config& make installes mein System in einer Weise verändert , die nicht revertible leicht ist. Wenn Sie ein Programm unter Windows installieren, können Sie es deinstallieren. Wenn es nach dem Buch abgespielt wird, bleiben hoffentlich keine Programmspuren im Dateisystem oder in der Registrierung usw. übrig. Unter Mac OS löschen Sie einfach eine App wie eine Datei.

Aber unter Linux gibt es apt-getund dann gibt es make. Ich habe nicht ganz verstanden, wie ich meine Linux-Installation sauber und aufgeräumt halten kann. Es fühlt sich an, als ob eine neue App-Installation mein System beschädigen könnte. Aber Linux hat den Ruf, sehr robust zu sein. Es muss also etwas geben, das ich nicht verstehe, wie sich die Installation und Deinstallation von Apps auf das System auswirkt. Kann jemand etwas Licht ins Dunkel bringen?


Update: Wenn Sie eine App installieren, können sich ihre Dateien wirklich überall verbreiten (Paketmanager behandeln einen Teil des Problems), aber es gibt einen coolen Hack: Verwenden Sie Docker zum Installieren von Apps und bewahren Sie sie in ihrer Sandbox auf, besonders wenn Sie nicht dabei sind benutze sie zu oft. Es ist auch möglich, GUI-Apps wie Firefox vollständig in einer Docker- "Sandbox" auszuführen .


11
Als einfacher Benutzer sollten Sie Software verwenden, apt-getanstatt sie makezu installieren. make installwird verwendet, wenn Sie die neueste (möglicherweise instabile) Version einer Software aus Quellen erstellen müssen, die noch nicht als Paket verfügbar ist.
Dmitry Grigoryev

@DmitryGrigoryev Die Verwendung aptist einfacher und bietet eine bessere Anleitung als die Verwendung apt-get.
Bakuriu,

3
Bei Verwendung von OS X war das Löschen der *.appDatei häufig unzureichend, da bei der Installation von Anwendungen häufig andere Bereiche (z. B. das Bibliotheksverzeichnis) aus dem Speicher entfernt wurden. Wenn Sie in Ubuntu mit manuell aus dem Quellcode erstellen make install, verwenden Sie checkinstallstattdessen, um ein einfaches Entfernen zu ermöglichen.
Sparhawk

1
Benutze den ./configure ; make ; make installWeg nicht. Alles, was Sie brauchen, ist das fantastische fpm- Tool zu lernen .
Deer Hunter

Was ist das Fpm-Tool?
AlexStack

Antworten:


28

Eine neue Installation wird Ihr System selten beschädigen (es sei denn, Sie machen seltsame Dinge wie das Mischen von Quellcode und Binärcode).

Wenn Sie vorkompilierte Binärdateien in Ubuntu verwenden, können Sie diese entfernen und müssen sich keine Gedanken über das Unterbrechen Ihres Systems machen, da in einer Binärdatei aufgeführt sein sollte, was ausgeführt werden muss, und Ihr Paketmanager listet auf, welche Programme auf dieses Programm angewiesen sind, damit Sie es überprüfen können.

Wenn Sie source verwenden, müssen Sie vorsichtiger sein, damit Sie nichts Kritisches (wie glib) entfernen. Bei der Deinstallation von der Quelle werden keine Warnungen oder sonstige Informationen angezeigt. Dies bedeutet, dass Sie Ihre Maschine komplett kaputt machen können.

Wenn Sie mit deinstallieren möchten, verwenden apt-getSie apt-get remove packagewie zuvor angegeben. Alle Programme, die auf dieses Paket angewiesen sind, werden ebenfalls deinstalliert und Sie haben die Möglichkeit, sie zu überprüfen.

Wenn Sie deinstallieren möchten, ist der Prozess in der Regel make uninstall. Es gibt keine Warnung (wie ich oben sagte).

make configwird Ihr System nicht verändern, wird aber make install.

Als Anfänger empfehle ich die Verwendung von apt-getoder einer beliebigen Distribution, die Sie für Binärpakete verwenden. Es hält die Dinge schön und organisiert und wenn Sie es nicht wirklich wollen, wird es Ihr System nicht kaputt machen.

Hoffentlich klärt das alles auf.


3
Für eine spurlose Deinstallation nutzen Sie natürlich die --purgeOption mitapt-get
Hagen von Eitzen

16

Theoretisch make uninstallsollte entfernt werden, was make installhinzugefügt wurde und Ihr System keine Kruft ansammelt. Das Problem ist natürlich, dass nicht alle Makefiles gleich sind.

Einige lassen die uninstallRegel möglicherweise weg und überlassen es Ihnen, herauszufinden, was die installRegel bewirkt hat. Schlimmer noch, wenn die Installationsregel eine verknüpfte Bibliothek überschreibt, kann eine dumme uninstallRoutine die Abhängigkeiten für ein anderes Programm zerstören.

Die beste Lösung für Quellinstallationen ist die Verwendung eines anderen Präfixes als die vom Paket-Manager des Systems installierten Pakete. Apt installiert Dateien, /usr/um die /usr/local/Hierarchie für Ihre Quellinstallationen zu verwenden. Das macht es viel einfacher zu verfolgen, welche Dateien zu welchen Paketen gehören und welche Deinstallationen das System nicht beschädigen.

./configure --prefix=/usr/localfunktioniert für viele configure-Skripte. Wenn nicht, können Sie Makefile manuell bearbeiten. Oder kopieren Sie die Dateien einfach manuell.

Apt und andere Verpackungsmanager behalten den Überblick über die von ihnen installierten Dateien und deren umgekehrte Abhängigkeiten, damit ihre Deinstallationsfunktionen sicher verwendet werden können.


15

Ich würde empfehlen, dass Sie apt-get installjedes Paket unter Linux und apt-get remove(Paketname) oder apt-get purge(Paketname) installieren , mit dem nicht nur das zu deinstallierende Hauptpaket, sondern auch alle zugehörigen Pakete oder Abhängigkeiten, die während der Installation installiert wurden, entfernt werden.

Damit Ihr System sauberer bleibt, empfehlen wir Ihnen die Verwendung von apt-get clean https://askubuntu.com/questions/144222/how-do-apt-get-clean-and-apt-get-clean-all-differ#144224 ( Interessant ist dieser Beitrag, der alle Dateien entfernt, die während der Installation heruntergeladen wurden, aber nicht mehr benötigt werden.

Ein weiterer Befehl, der nützlich wäre, wenn Sie alle Abhängigkeiten entfernen möchten, die auf Ihrem System installiert sind, aber bei der Deinstallation nicht entfernt wurden, ist apt-get autoremove.

Wenn Sie ein Paket über make and make install installieren, müssen Sie es selbst deinstallieren (möglicherweise enthält das heruntergeladene Paket eine README-Datei, in der Sie erfahren, wie es funktioniert) und alle damit verbundenen Abhängigkeiten deinstallieren . Aus diesem Grund wird immer empfohlen, Pakete unter Linux zu installieren, die vom Paketmanager der Distribution angeboten werden. Wenn Sie dies auf diese Weise tun, können Sie sicher sein, dass Ihr Paket ausreichend getestet wurde, um mit der von Ihnen verwendeten Distribution (Linux-Version) zu funktionieren und es ist sehr unwahrscheinlich, dass Ihr System beschädigt wird. Außerdem können Sie sicher sein, dass Ihr Paket bei Bedarf aktualisiert wird. Wenn Sie es jedoch selbst installieren, sind Sie dafür verantwortlich.

Ich hoffe das hilft :)


11

Die normale Art, installierte Anwendungen unter Linux zu verwalten, ist ein Paketmanager. Die Auswahl der Paketmanager ist eines der Hauptmerkmale, die Distributionen unterscheiden. Ubuntu verwendet, wie Debian (auf dem es basiert), dpkg und APT ; In den meisten Fällen müssen Sie nur mit einer der Schnittstellen zu APT interagieren, z. B. apt-get(Befehlszeile), Aptitude (Befehlszeile oder Textmodus) oder Synaptic (GUI).

Ein Paketmanager verfolgt, welche Dateien zu welchem ​​installierten Programm gehören. Wie unter Windows können Programme bei der Installation oder Deinstallation beliebigen Code ausführen, verhalten sich jedoch normalerweise gut und können andere Programme nicht beschädigen. Außerdem wird der (Un-) Installationscode vom Paketbetreuer geschrieben, nicht vom Autor des Upstreams (für Pakete in der Hauptdistribution). Im Gegensatz zu Windows gibt es eine einheitliche Oberfläche für die Installation, Aktualisierung und Deinstallation: den Paketmanager. Sie müssen nicht nach dem Deinstallationsprogramm suchen (sofern vorhanden), sondern klicken einfach im grafischen Paket-Manager auf das Symbol "Deinstallieren" oder führen es aus apt-get remove PACKAGENAME.

Wenn Sie "exotische" Software benötigen, müssen Sie diese möglicherweise manuell installieren, indem Sie ein Archiv entpacken oder aus dem Quellcode kompilieren. Installer, die in Form eines ausführbaren Programms vorliegen, sind in der Linux-Welt selten. Laufen make installneigt jedes Programm über mehrere Verzeichnisse zu verbreiten ( /usr/local/bin, /usr/local/man, /usr/local/lib, etc.). Um die Dinge in Ordnung zu halten, empfehle ich die Verwendung eines "Packagemanagers für Arme", wie zum Beispiel " Stow" . Mit stow wird jedes Paket in einem eigenen Verzeichnis installiert, und das stowDienstprogramm erstellt symbolische Links, sodass die vom Paket installierten Befehle im Befehlssuchpfad usw. enthalten sind. Siehe Den Überblick über Programme für weitere Details.


Diese "exotische Software" kann von jedem geschrieben werden, oder? Wie wird diese "exotische Software" offiziell in den Distributionen verfügbar? Überprüft jemand seinen Quellcode Zeile für Zeile? Wie entscheidet sich Ubuntu zum Beispiel, eine Software in seinen APT-GET-Befehl aufzunehmen und eine andere zu ignorieren?
AlexStack

1
@AlexStack Die meisten Verteilungen werden von Freiwilligen durchgeführt. Ubuntu wird von Canonical gesponsert, das ein paar Leute bezahlt, aber der Großteil der Paketwartung wird von Freiwilligen durchgeführt. Die genaueste Antwort ist, dass Ubuntu die Software enthält, für die sich ein Freiwilliger entschieden hat. Genauer gesagt, die meiste Software in Ubuntu stammt von Debian, daher musste ein Debian-Entwickler entscheiden, an welchem ​​Paket es sich zu arbeiten lohnt, und die Software muss den Richtlinien entsprechen (akzeptable Lizenz, nicht zu fehlerhaft).
Gilles 'SO- hör auf böse zu sein'

@AlexStack Es gibt keine Garantie dafür, dass jemand eine bestimmte Software Zeile für Zeile überprüft hat, selbst wenn diese Software in den Ubuntu-Repositories verfügbar ist (z. B. durch eine Standardinstallation von apt-getoder ähnlichem). Aber sie haben nur einigermaßen beliebte Programme in die Repositories aufgenommen, die genügend Benutzer haben, um zuversichtlich zu sein, dass sie im Grunde das tun, was sie tun sollen.
David Z


8

Sie sollten nach Möglichkeit versuchen, Ihren Paketmanager (apt-get, aptitude, synaptic oder aptdcon, software-center, mintinstall usw.) zu verwenden. Die Verwendung einer make-Task für die Installation ist sehr rau, es kann nicht garantiert werden, dass sie ein uninstallGegenstück hat, und es kann nicht garantiert werden, dass sie gut mit dem Rest des Systems zusammenarbeitet ausführbaren Code, möglicherweise Malware).

Wenn Sie keine gepackte Version der von Ihnen benötigten Software finden, könnte checkinstall( checkinstall make install) hilfreich sein.


3

Ich bin kein Experte und weiß nicht viel über die Installation von Software aus dem Quellcode, aber mithilfe von apt-getkönnen Sie installierte Software mit entfernen apt-get remove package-name. Um auch alle Konfigurationsdateien zu entfernen, verwenden Sie apt-get purge package-name. Der sicherste Weg, um Ihre Linux-Installation in Ordnung zu halten, besteht darin, nur Pakete in den offiziellen Repositorys zu verwenden. Wenn ein Paket benötigt wird, das nicht in den offiziellen Repositories enthalten ist, kann es häufig in einem PPA gefunden werden (da Sie Ubuntu verwenden) .


apt-getDer OP, der configureandmake install
roaima

3

Wie die anderen Antworten sagen, ist es heutzutage üblich, den größten Teil Ihrer Software mit dem Paketmanager Ihrer Wahl zu installieren. Dies ist so praktisch, dass Sie es wahrscheinlich verpassen werden, wenn Sie zu Windows zurückkehren! In gewisser Weise gehen die verschiedenen "Märkte" und "Geschäfte" auch für kommerzielle Betriebssysteme in diese Richtung.

Ich erinnere mich jedoch, dass ich, als ich anfing, etwas über Linux zu lernen, erstaunt war, wie Software normalerweise installiert wird. Während unter Windows alle Dateien in einem einzigen Verzeichnis abgelegt sind c:\Programs, besteht der traditionelle "Unix-Weg" darin, sie an "Standard-Speicherorten" zu verteilen (die Details sind nicht so standardisiert, siehe LSB für weitere Informationen). ), z. B. /usr/local/binfür ausführbare Dateien, /usr/local/doczur Dokumentation usw.

In gewisser Weise "weiß" Windows nicht, wo sich Ihre ausführbaren Dateien befinden. Es weiß, dass sie "irgendwo unter c:\Program Files" sind, aber nicht viel mehr. Das Durchsuchen all dieser Verzeichnisse nach ihnen ist oder war zu teuer. Ein Link auf die ausführbare Datei wird also explizit an einem bekannten Ort (dem Startmenü) platziert, und Sie würden ihn verwenden, um sie zu starten.

Unter Unix / Linux suchen Ihre Shell und die meisten anderen Programme automatisch an bekannten Orten nach ausführbaren Dateien oder anderen Ressourcen. Wenn Sie also Ihre Dateien in die entsprechenden Verzeichnisse kopieren, werden sie automatisch "angezeigt", ohne dass Sie sie irgendwo "registrieren" müssen, damit die Benutzer über sie informiert werden.

Beide Mechanismen haben ihre Vor- und Nachteile, aber Sie werden feststellen, dass der Unix-Ansatz in der Regel flexibler ist.

Bitte beachten Sie, dass es viele Ausnahmen und Details gibt, die das Bild nicht so deutlich machen, wie ich es beschrieben habe, aber ich denke, diese Art der Einführung kann für Neulinge nützlich sein, um zumindest die grundlegende Logik dahinter zu verstehen.


danke @unclezeif. Dieses Problem mit "überall verstreuten Dateien" nervt mich wirklich, weil ich es nicht verstehe. Sie sagten, der Unix-Ansatz sei in der Regel flexibler. Können Sie bitte näher darauf eingehen?
AlexStack

Zum Beispiel befindet sich die Dokumentation an einem Ort, die Symbole befinden sich an einem Ort usw., was in einigen Fällen sehr schön ist! Flexibler bedeutet, dass Sie als Pfadbasierter Folgendes tun können: Eine neue Shell erstellen, in der die Umgebungsvariablen so geändert werden, dass nur die ausführbaren Dateien in einem bestimmten Verzeichnis angezeigt werden. Auf diese Weise können Sie Ihre Auswahl einschränken (oder erweitern). Es ist alles sehr "einfach", da Sie nur Dateien und Umgebungsvariablen verwenden, um einen hohen Grad an Anpassung zu erreichen.
UncleZeiv

Ein weiteres Beispiel ist: Im Prinzip können Sie ein Programm in Ihrem Home-Verzeichnis installieren, z. B. / home / foo / bin, und einfach / home / foo / bin zu Ihren Pfadumgebungen hinzufügen, ohne das gemeinsam genutzte System zu berühren.
UncleZeiv

3

Ich denke der beste Rat ist nur in diesem Forumbeitrag . Hier sind Ihre Optionen (2 und 3 sind in Bezug auf die Wirkung mehr oder weniger gleich):

  1. Verwenden Sie einen Paketmanager und ein Repository. Das heißt, Sie erhalten Updates, Sie erhalten offizielle Releases, signierte Releases usw. usw. usw.
  2. Wenn Sie ein Paket aus einem Repository nicht verwenden können oder wollen, erstellen Sie ein Paket für die Software und installieren Sie dieses mit Ihrem Paketmanager. Detaillierte Anweisungen dazu auf Debian-basierten Systemen finden Sie in dem oben verlinkten Beitrag. Auf den ersten Blick sieht es beängstigend aus, aber es ist wirklich recht einfach, und besonders im Falle von Debian gibt es viele Skripte, die die ganze harte Arbeit für Sie erledigen.
  3. Wenn Sie diese Methode nicht zum Laufen bringen können, verwenden Sie sie checkinstallwie von anderen empfohlen. Es ist ein sehr einfacher Ersatz für die Installation:

    $ ./configure
    $ make
    $ sudo checkinstall
    

    Dadurch sollte die Software wie gewohnt erstellt und dann make installin einer begrenzten Umgebung ausgeführt werden, in der verfolgt wird, was sie tut, und ein Paket erstellt wird, das genau diese Aufgaben ausführt. Dann installiert es das Paket mit Ihrem Paketmanager. Das Entfernen von then ist wie das Entfernen jedes anderen Pakets, genau wie in (2).

  4. Wenn Sie keinen Paketmanager verwenden können oder wollen, dann verwenden Sie make install, denke ich. Und ich hoffe, der Software-Betreuer unterhält eine Deinstallationsroutine.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.