it-swarm.com.de

Wie deinstalliere ich ein Programm unter Linux?

Ich habe versucht, PCL 1.7.2 zu deinstallieren, das ich manuell installiert hatte (ohne Sudo apt-get), aber als ich versuchte, es mit dem apt-get removeBefehl , Terminal hat mir gezeigt, dass diese Dateien nicht deinstalliert werden können, da sie gar nicht erst installiert wurden.

  1. Wie kann ich überprüfen, ob die Dateien korrekt installiert wurden, wenn ich Dateien mit cmake installiert habe?

  2. Wie kann ich eine Datei deinstallieren, die ich manuell mit cmake installiert habe?

  3. Wie unterscheiden sich die mit apt-get vs cmake installierten Dateien?

Hinweis - ähnliche Frage, aber mit apt-get remove: Wie können Sie ein Paket vollständig entfernen?

3
PallavBakshi

Executive Summary/TL; DR

Führen Sie make uninstall (oder Sudo make uninstall, wenn Sie Sudo make install ausführen mussten) in dem Erstellungsverzeichnis aus, in dem Sie make und make install ausgeführt haben. In mit CMake konfigurierten Builds ist das Build-Verzeichnis normalerweise nicht das Quellverzeichnis der obersten Ebene. Abgesehen davon unterscheidet sich die Deinstallation eines Programms oder einer Bibliothek, deren Build mit CMake konfiguriert wurde, nicht von der Deinstallation anderer Programme oder Bibliotheken, die Sie aus dem Quellcode erstellt haben.

Einige Software unterstützt make install, jedoch nicht make uninstall. In diesem Fall müssen Sie möglicherweise untersuchen, welche Schritte ausgeführt werden, wenn make install ausgeführt wird, oder in der Dokumentation der Software nachlesen, ob angegeben ist, welche Dateien dort abgelegt werden. Allerdings scheint PCL die Deinstallation über make uninstall zu unterstützen .

Installation und Deinstallation mit cmake und make

CMake ist ein System zum Konfigurieren eines Builds. Nach der Konfiguration muss der Build normalerweise mit einem Build-System ausgeführt werden. Auf Unix-ähnlichen Betriebssystemen wie Ubuntu verwenden mit CMake konfigurierte Builds fast immer das Make-Build-System.

Die meiste Software, die CMake verwendet, erfordert, dass Sie ein separates Erstellungsverzeichnis mit dem Namen build erstellen und den Befehl cmake in diesem Verzeichnis ausführen. Das Erstellungsverzeichnis wird mit Dateien gefüllt, die zum Ausführen der Erstellung erforderlich sind. Dann führen Sie make in diesem Verzeichnis aus. Sie sollten das Verzeichnis build dort erstellen, wo die Anweisungen für die von Ihnen erstellte Software es empfehlen. Normalerweise ist es ein Unterverzeichnis des Verzeichnisses der obersten Ebene des Quellbaums (das Verzeichnis der obersten Ebene, das beim Entpacken des Quell-Tarballs oder beim Aufrufen eines Versionskontrollsystems wie git oder bzr zum Herunterladen des Codes erstellt wurde).

Wenn Sie make ausführen, wird ein Makefile - normalerweise Makefile genannt - gefunden und gelesen, das eine Liste von Zielen, Anweisungen zum Erstellen der Ziele und die Abhängigkeit der Ziele voneinander enthält. Normalerweise erstellt das Standardziel, das Sie nicht angeben müssen, die Software, und das install -Ziel, das Sie angeben müssen, installiert sie.

Viele Makefiles enthalten zusätzliche Ziele. Am häufigsten sind:

  • Ein check oder test Ziel, das die erstellte Software testet. make check oder make test kann vor make install ausgeführt werden, und es ist normalerweise ratsam, dies zu tun.
  • Ein uninstall -Ziel, das die Software deinstalliert, indem die durch Ausführen von make install erstellten Dateien entfernt werden. (Gelegentlich hat make uninstall auch ein anderes Verhalten, um Aktionen von make install rückgängig zu machen, außer das Kopieren von Dateien. In der Regel geht es jedoch nur um das Löschen von Dateien.) Nicht jede Software hat ein uninstall -Ziel, aber heutzutage ist das am häufigsten der Fall.
  • Ein clean -Ziel zum Löschen von Dateien aus dem Quell- oder Erstellungsverzeichnis, die während der Erstellung erstellt wurden. Fast alle Makefiles haben dies.

Es gibt einige andere relativ häufige Ziele wie distclean und realclean, die für CMake weniger relevant sind. Es ist jedoch hilfreich zu wissen, dass, wenn Sie einen Build durch Ausführen eines Konfigurationsskripts (./configure) anstelle von CMake konfigurieren, die Konfiguration normalerweise durch Ausführen von make distclean gelöscht werden kann.

Ein Entwickler, der CMake verwendet, muss Code schreiben, um ein uninstall -Ziel zu generieren - CMake tut dies nicht automatisch . Wie bei vielen Entwicklern sollte jedoch die Entwickler von PCL haben dies getan und make uninstall funktionieren. Weitere Informationen finden Sie im nächsten Abschnitt ("Ein schrittweises Beispiel").

So deinstallieren Sie Software, deren Makefile ein uninstall -Ziel unterstützt:

  • Das Verzeichnis, in dem Sie make install (oder Sudo make install) ausgeführt haben, ist das Verzeichnis, in das Sie zurückkehren müssen, um make uninstall (oder Sudo make uninstall) auszuführen. Bei Software, die CMake nicht verwendet, ist dies normalerweise das oberste Verzeichnis des Quellbaums. Bei Software, die CMake verwendet , ist dies normalerweise nicht der Fall - stattdessen handelt es sich normalerweise um ein separates Erstellungsverzeichnis.
  • Wenn Sie Software manuell von der Quelle installieren, ist es am besten, den Quellcode und alle während des Builds erstellten Dateien beizubehalten, damit Sie die Software leicht deinstallieren können. Wenn Sie make install einmal ausgeführt haben, ist es daher am besten, make clean nicht mehr auszuführen (und keine Dateien manuell zu löschen).
  • Wenn Sie jedoch make clean ausgeführt oder den Quellcode oder das Erstellungsverzeichnis der Software gelöscht haben , ist es normalerweise immer noch möglich, erfolgreich zu deinstallieren. Folgen Sie einfach denselben Erstellungsschritten mit genau derselben Version der Software, die mit denselben Optionen konfiguriert und erstellt wurde (oder keiner, wenn Sie sie nicht angepasst haben), um zu dem Punkt zu gelangen, an dem Sie make uninstall (oder Sudo make uninstall) ausführen können. Bei einigen Programmen müssen Sie möglicherweise sogar zuerst make install erneut ausführen, wodurch normalerweise die Dateien aus dem vorherigen Build überschrieben werden. Führen Sie dann wie gewohnt make uninstall (oder Sudo make uninstall) aus.

Wenn es kein uninstall Ziel gibt und Sie die Software deinstallieren müssen, müssen Sie überprüfen, welche Dateien sie erstellt. Sie können make -n install ausführen, um anzuzeigen, welche Aktionen von make install ausgeführt werden. Sie müssen nicht make -n install mit Sudo ausführen (vorausgesetzt, das anfängliche make erforderte Sudo nicht). Wenn make das Flag -n übergeben wird, wird ein Probelauf ausgeführt, der normalerweise nichts ändern sollte und daher nichts tun muss, das erhöhte Berechtigungen erfordert.

Ein schrittweises Beispiel: PCL 1.7.2

Es ist nützlich, ein Beispiel anzugeben, und ich könnte genauso gut die Software verwenden, die Sie tatsächlich deinstallieren möchten, wie dieses Beispiel. PCL 1.7.2 verwendet anscheinend cmake, um ein uninstall -Ziel in seinem Makefile zu generieren und sollte daher make uninstall unterstützen. .

Zusätzlich zur Überprüfung von uninstall_target.cmake.in habe ich überprüft, dass das generierte Makefile ein uninstall -Ziel auf einem 64-Bit-Ubuntu 16.04-Testsystem enthält. Ich habe jedoch die Erstellung von PCL noch nicht abgeschlossen, sodass ich es installieren und dann Sudo make uninstall testen kann. (Mein Testcomputer ist sehr langsam und PCL ist groß.) Ich plane, dies mit zusätzlichen Informationen zu aktualisieren, wenn ich die Möglichkeit dazu bekomme, irgendwann nach Abschluss des Builds.

Bei der Installation von PCL 1.7.2 haben Sie wahrscheinlich Folgendes getan:

cd /usr/local/src
wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.7.2.tar.gz
tar xf pcl-1.7.2.tar.gz
cd pcl-pcl-1.7.2
mkdir build
cd build
cmake ..
make -j2
Sudo make -j2 install

Das basiert (lose) auf den offiziellen Anweisungen , ist aber möglicherweise nicht genau das, was Sie getan haben. Insbesondere habe ich pcl-1.7.2.tar.gz in /usr/local/src heruntergeladen und entpackt. Wenn Sie es an einer anderen Stelle ablegen, müssen Sie /usr/local/src an der Stelle ersetzen, an der Sie es abgelegt haben.

Wenn Sie /usr/local/src ändern, sollten Sie in der Lage sein, die Software zu deinstallieren, indem Sie Folgendes ausführen:

cd /usr/local/src/pcl-pcl-1.7.2/build
Sudo make uninstall

Selbst wenn Sie make -j2 install ausgeführt haben, damit mehrere Vorgänge gleichzeitig ausgeführt werden können, muss beim Ausführen von -j2 nicht das Flag make uninstall übergeben werden.

1
Eliah Kagan

In den Installationsanweisungen werden cmake und make verwendet. Zum Deinstallieren sollten Sie in der Lage sein:

In terminal...

  • cd folder_of_original_source_code # Ordner, in dem Sie den Cmake gemacht haben
  • Sudo make uninstall # zum Deinstallieren
2
heynnema

Bei der Installation von PCL haben Sie tatsächlich zwei Schritte ausgeführt:

  • Sie haben die Software kompiliert, die jeder Benutzer in seinem eigenen Homeverzeichnis ausführen kann
  • Sie haben die Software systemweit installiert, was nur root kann

Die Installation selbst (in Ihrem Fall der Sudo make -j 2 install) ist ein Skript, das von den Autoren von PCL geschrieben wurde. Es ist nicht zu sagen, was dieses Skript Ihrem System angetan hat abgesehen vom Lesen des Skript-Quellcodes. Hier gibt es keine Standardisierung, das Skript kann alles tun, was es auf Ihrem Computer will, einschließlich des Löschens wichtiger Dateien oder des Änderns der Konfiguration auf eine Weise, die die Ubuntu-Standardsoftware nicht erwartet.

Da nicht bekannt ist, was das Installationsskript auf Ihrem System getan hat, kann kein anderes Programm (wie APT) die vorgenommenen Änderungen rückgängig machen. Ihr bester Tipp In diesem Fall müssen Sie entweder die Ausgabe des Installationsskripts speichern (um sie später zu lesen und die Änderungen von Hand rückgängig zu machen) oder eine Systemsicherung wiederherstellen.

Ein deb -Paket ist anders. Der Autor des Pakets hat die Kompilierungsphase auf seinem eigenen Computer durchgeführt, die erstellten Dateien überprüft und alle in die richtige Reihenfolge gebracht, wie sie auf einem ordnungsgemäßen Ubuntu-System sein sollten. Er oder sie hat sie dann in einer Art Zip-Datei abgelegt, die das Paket deb ist. Der Autor hat auch Installations- und Deinstallationsskripte geschrieben, falls die Software zum Zeitpunkt der Installation einige andere Änderungen benötigt. Der Autor hat auch alle erforderlichen Metadaten geschrieben, insbesondere, von welchen anderen Paketen (wie z. B. gemeinsam genutzten Bibliotheken) dieses abhängt, um ausgeführt zu werden.

Wenn APT ein Paket installiert, verfolgt es, welche Dateien extrahiert wurden, und kann sie später entfernen.

Um nun Ihre Fragen zu beantworten:

Q1. Es sei denn, Sie haben die Ausgabe des PCL-Installationsskripts gespeichert (vorausgesetzt, diese Ausgabe enthält ein vollständiges und wahrheitsgemäßes Detail aller durchgeführten Vorgänge) oder Sie vergleichen den Inhalt Ihrer Festplatte mit einer Sicherung, die Sie vor der Installation von PCL durchgeführt haben So können Sie feststellen, ob die Dateien korrekt installiert wurden. Das Beste, was Sie tun können, ist, die Software auszuführen und zu prüfen, ob sie einwandfrei funktioniert.

Q2. Es besteht die Möglichkeit, dass die Ersteller von PCL ein Deinstallationsskript geschrieben haben. Möglicherweise kann die Ausführung von Sudo make uninstall etwas Nützliches bewirken. Sie müssten dazu die Dokumentation von PCL konsultieren. Andernfalls müssen Sie die Dateien einzeln von Hand entfernen.

Q3. Die installierten Dateien selbst unterscheiden sich nicht. Was anders ist, ist das Programm, mit dem sie in die Systemverzeichnisse kopiert werden. apt-get verfolgt, was aus deb Dateien installiert wurde, und kann es entfernen. cmake macht es auf seine eigene Art und Weise, die APT nicht kennt.

1
Adrien Beau

Kurzer Überblick über apt-get

apt-get installiert speziell gepackte Programme. Die apt-Konfiguration enthielt detaillierte Informationen darüber, wo alle Komponenten des Pakets installiert werden. Außerdem werden auf dem System genau die Informationen gespeichert, die zum System hinzugefügt wurden. Die Informationen enthalten die Entfernungsschritte für die Dateien.

Wenn Sie sich zum Entfernen der Dateien für apt-get entscheiden, werden diese Informationen verwendet, um die Dateien, die dem Computer hinzugefügt wurden, sicher zu entfernen.

CMake

Cmake ist ein Dienstprogramm zum Kompilieren und Installieren von Programmen. Eine Person, einschließlich Sie, kann eine so einfache Anwendung wie "Hello World" erstellen und Cmake verwenden, um das Programm zu kompilieren und dort abzulegen, wo Sie es ablegen möchten.

Dem Dienstprogramm apt-get sind nicht alle Programme bekannt, die Sie an einer beliebigen Stelle auf Ihrem Computer ablegen möchten. Wenn der Autor wollte, dass das Programm über apt-get installiert wird, würde er es dafür konfigurieren und ein .deb-Paket für das Installationsprogramm bereitstellen.

Programme entfernen, die nicht mit apt-get installiert wurden

Um manuell installierte Programme zu entfernen, müssen Sie die Bestimmungen des Autors für das Entfernen befolgen. Der Befehl cmake sowie der Befehl make enthalten Konfigurationsdateien, mit denen Sie beispielsweise build, install, install with special conditions und uninstall angeben können. Diese Funktionen sind Sache des Programmentwicklers.

Viele Programme enthalten Schritte (eine readme.txt-Datei) zum Installieren und Deinstallieren. Sie müssen sich den Paketinhalt ansehen, um zu sehen, was der Autor bereitgestellt hat. Wenn keine Deinstallationsschritte angegeben wurden, müssen Sie sie manuell entfernen, indem Sie nach den tatsächlichen Dateien suchen, die das Programm Ihrem Computer hinzugefügt hat.

Überprüfen Sie, ob der Entwickler ein uninstall-Ziel angegeben hat:

$ cmake uninstall

Finden der Dateien aus dem Programm:

Suchen Sie nach einer install_manifest.txt-Datei, die nach der Installation erstellt werden kann. Dies sollte Ihnen zeigen, wo sich die Dateien befinden.

Eine andere Möglichkeit, die Dateien aus dem Programm zu finden, besteht darin, die Datei CMakeList.txt zu studieren. Suchen Sie nach den Verzeichnissen, die auf output verweisen. In der Regel wird angegeben, wo die Binärdateien und die Bibliotheken abgelegt werden.

Sie können auch mit find herausfinden, welche Dateien zu Ihrem System hinzugefügt wurden. Wenn Sie während der Installation ein Fenster angeben, wird eine Liste der Dateien angezeigt. Es gibt einige Variationen dieses Befehls.

Mit diesen Schritten können Sie nach Dateien suchen, die zwischen 18. Januar um Mitternacht und 19. Januar um Mitternacht in einem Fenster erstellt wurden. Anstatt Nullen zu verwenden, können Sie auch eine bestimmte Stunde und Minute angeben.

Erstellen Sie eine Zeitstempeldatei für den Beginn des Zeitrahmens:

 $ touch -t 201701180000 starttime

Erstellen Sie eine Zeitstempeldatei für das Ende des Zeitrahmens:

 $ touch -t 201701190000 starttime

Das ist im Format: JJJJMMTTHHMM

Dann renne:

$ find ~/ -mount -newer starttime ! -newer endtime > find.out

Untersuchen Sie nun die Textdatei find.out und Sie werden alle Dateien sehen, die in diesem Zeitfenster erstellt wurden. Sie können viele Dateien wie die in Ihrem Ausgangsverzeichnis automatisch entfernen. So können Sie sich hauptsächlich die Binärdateien ansehen.

1
L. D. James