Wie entferne ich CMake nach der Installation von der Quelle?

TL; DR: Führen Sie sudo make uninstall in dem Verzeichnis aus, in dem Sie zuvor sudo make install ausgeführt haben.

Sie haben diese Methode zum Installieren einer anderen Version von CMake befolgt. Dies bedeutet, dass Sie die vom Paketmanager von Ubuntu bereitgestellte Version deinstalliert und manuell heruntergeladen, kompiliert und selbst aus dem Quellcode installiert haben.

Angenommen, Sie konnten diese Anweisungen erfolgreich befolgen, ist die vom Paketmanager von Ubuntu (über das Paket cmake) bereitgestellte Version von CMake bereits deinstalliert. Da die Version, die Sie jetzt installiert haben, nicht vom Paketmanager von Ubuntu bereitgestellt wird, sondern von der Version, die Sie selbst kompiliert und installiert haben, wird sie durch erneutes Ausführen von sudo apt-get purge cmake nicht entfernt.

Da Sie cmake installiert haben, indem Sie es kompilieren und dann sudo make install ausführen, ist die Lösung für Sie:

  1. Verwenden Sie cd , um zu dem Verzeichnis zurückzukehren, in dem Sie diesen Befehl ausgeführt haben.
  2. Lauf sudo make uninstall.

Nicht jede Software, die durch Ausführen von make install installiert werden kann, hat ein entsprechendes uninstall -Ziel, sodass Sie make uninstall ausführen können, um es zu entfernen. Aber CMake unterstützt dies.1

Wenn Sie den Ordner, in dem Sie sudo make install ausgeführt haben, gelöscht oder anderweitig geändert haben, ist es am besten, ihn neu zu erstellen und neu zu installieren (stellen Sie sicher, dass Sie genau dieselbe Version verwenden), um die Fähigkeit zum Ausführen von sudo make uninstall . Das heißt, Sie würden die gleichen Installationsschritte ausführen, beginnend mit derselben .tar.gz -Datei und alle von Ihnen verwendeten Optionen (falls vorhanden) an ./bootstrap übergeben. Wenn Sie gerade ./bootstrap ohne Argumente ausgeführt haben, wiederholen Sie dies. Nachdem Sie sudo make install erneut ausgeführt haben, wodurch die bereits installierten Dateien (harmlos) mit Kopien von sich selbst überschrieben würden, können Sie sudo make uninstall .

Ein anderer möglicher Ansatz, von dem ich Sie dringend abrate, wäre, genau herauszufinden, welche Dateien und Verzeichnisse in der Installation erstellt wurden, und zu versuchen, nur diese Dateien und Verzeichnisse, aber keine anderen zu entfernen. Wenn Sie beim Kompilieren von CMake --prefix nicht an ./bootstrap übergeben haben, wurden Dateien in /usr/local installiert, aber es ist nicht das einzige Programm, das dieses Verzeichnis verwendet. Es hätte Dateien in den verschiedenen Unterverzeichnissen von /usr/local installiert, z. B. bin und lib (und andere). Abgesehen von der Situation, in der Sie wissen, dass nichts anderes in /usr/local installiert wurde, erfordert diese Option viel Arbeit.

1 Es ist leicht, verwirrt darüber zu werden, ob Sie CMake deinstallieren können, indem Sie sudo make uninstall ausführen, da standardmäßig kein uninstall -Ziel generiert wird, wenn Sie CMake zum Erstellen von Build-Skripten für Ihre eigene Software verwenden, es sei denn, Sie fragen ausdrücklich danach. CMake selbst ist jedoch so konzipiert, dass es leicht deinstalliert werden kann, und sein Quellcode definiert diese Deinstallationsziele für sich. In dem Makefile, das beim Ausführen von ./bootstrap generiert wurde, können Sie sehen:

#=============================================================================# Target rules for targets named uninstall# Build rule for target.uninstall: cmake_check_build_system $(MAKE) -f CMakeFiles/Makefile2 uninstall.PHONY : uninstall# fast build rule for target.uninstall/fast: $(MAKE) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/build.PHONY : uninstall/fast

Sie können auch in den CMakeLists nach Deinstallationsunterstützung suchen.txt-Datei.

Um sicherzugehen, habe ich dies mit CMake 3.9 getestet.0, und es funktioniert. Das uninstall -Ziel wird generiert und das Ausführen von sudo make uninstall funktioniert, um CMake zu deinstallieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.