web-dev-qa-db-fra.com

Comment supprimer CMake après l'avoir installé depuis le source?

Je voulais mettre à jour ma version de cmake. Donc, je l'avais d'abord désinstallé et ensuite essayé d'installer comme indiqué dans ce message de teocci .

Cependant, cela donnait quelques erreurs en entrant make et maintenant je veux le désinstaller et installer la version précédente de cmake. J'ai essayé Sudo apt-get purge cmake. Mais il reste dans le système en entrant cmake --version.

Que devrais-je faire?

1
Surabhi Verma

TL; DR: Exécutez Sudo make uninstall dans le répertoire où vous avez exécuté Sudo make install avant.

Vous avez suivi cette méthode pour installer une version différente de CMake. Cela signifie que vous avez désinstallé la version fournie par le gestionnaire de paquets d'Ubuntu et que vous avez manuellement téléchargé, compilé et installé vous-même à partir du code source.

En supposant que vous ayez réussi à suivre ces instructions, la version de CMake fournie par le gestionnaire de paquets d'Ubuntu (via le paquet cmake) est déjà désinstallée . Comme la version que vous avez installée maintenant n'est pas fournie par le gestionnaire de paquets d'Ubuntu, mais que la version que vous avez compilée et installée vous-même, exécuter à nouveau Sudo apt-get purge cmake ne la supprime pas.

Depuis que vous avez installé cmake en le compilant puis en exécutant Sudo make install, la solution consiste pour vous à:

  1. Utilisez cd pour revenir au répertoire dans lequel vous avez exécuté cette commande.
  2. Exécutez Sudo make uninstall.

Tous les logiciels pouvant être installés en exécutant make install n'ont pas une cible uninstall vous permettant d'exécuter make uninstall pour le supprimer. Mais CMake le supporte. 1

Si vous avez supprimé le dossier dans lequel vous avez exécuté Sudo make install, ou si vous l'avez modifié, le mieux est de le reconstruire et de le réinstaller (veillez à utiliser exactement la même version) pour récupérer la possibilité d’exécuter Sudo make uninstall. C'est-à-dire que vous suivriez les mêmes étapes d'installation, en partant du même fichier .tar.gz et en passant toutes les mêmes options que vous avez utilisées (le cas échéant) à ./bootstrap. Si vous venez d'exécuter ./bootstrap sans arguments après, recommencez. Après avoir exécuté à nouveau Sudo make install, ce qui écraserait (sans danger) les fichiers déjà installés avec des copies d’eux-mêmes, vous pourrez alors utiliser Sudo make uninstall.

Une autre approche possible, que je vous déconseille vivement de faire, serait d'essayer de déterminer exactement quels fichiers et répertoires ont été créés lors de l'installation et d'essayer de supprimer uniquement ces fichiers et répertoires, mais aucun autre. Si vous n'avez pas passé le --prefix à ./bootstrap lors de la compilation de CMake, il a installé les fichiers dans /usr/local, mais ce n'est pas le seul programme qui utilise ce répertoire. Il aurait installé des fichiers dans les divers sous-répertoires de /usr/local, tels que bin et lib (et autres). Ainsi, mis à part le cas où vous savez que rien d'autre n'a été installé dans /usr/local, cette option nécessite beaucoup de travail.


1  Il est facile de ne pas savoir si vous pouvez désinstaller CMake en exécutant Sudo make uninstall car, par défaut , lorsque vous utilisez CMake pour créer des scripts de génération pour votre propre logiciel , aucune cible uninstall n'est générée sauf si vous en demandez explicitement une . Cependant, CMake lui-même est conçu pour être facilement désinstallé et son code source définit ces cibles de désinstallation pour elle-même. Dans le Makefile généré à partir de l'exécution de ./bootstrap, vous pouvez voir:

#=============================================================================
# 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

Vous pouvez également rechercher le support de désinstallation dans son fichier CMakeLists.txt .

Pour être sûr, j'ai testé cela avec CMake 3.9.0, et cela fonctionne . La cible uninstall est générée et l'exécution de Sudo make uninstall permet de désinstaller CMake.

5
Eliah Kagan