TL; DR: voer sudo make uninstall
uit in de map waar u eerder sudo make install
hebt uitgevoerd.
u hebt deze methode gevolgd om een andere versie van CMake te installeren. Dit wil zeggen dat u de versie van Ubuntu ‘ s package manager hebt verwijderd en deze handmatig hebt gedownload, gecompileerd en zelf hebt geïnstalleerd vanaf de broncode.
ervan uitgaande dat u in staat was om deze instructies met succes te volgen, is de versie van cmake van Ubuntu ‘ s pakketbeheerder (via het cmake
pakket) al verwijderd. Omdat de versie die u nu hebt geïnstalleerd niet wordt geleverd door Ubuntu ‘ s package manager, maar in plaats daarvan de versie die u zelf hebt gecompileerd en geïnstalleerd, draait sudo apt-get purge cmake
opnieuw verwijdert het niet.
sinds u cmake
installeerde door het te compileren en vervolgens sudo make install
uit te voeren, is de oplossing voor u om:
- gebruik
cd
om terug te gaan naar de map waar je dat commando hebt uitgevoerd. - Run
sudo make uninstall
.
niet alle software die geïnstalleerd kan worden door make install
uit te voeren, heeft een overeenkomstig uninstall
doel waarmee u make uninstall
kunt uitvoeren om het te verwijderen. Maar CMake ondersteunt dit wel.1
Als u de map waarin u sudo make install
liep hebt verwijderd, of deze op een andere manier hebt gewijzigd, dan is het het beste om de map opnieuw op te bouwen en opnieuw te installeren (Zorg ervoor dat u precies dezelfde versie gebruikt) om de mogelijkheid om sudo make uninstall
uit te voeren terug te krijgen. Dat wil zeggen, je zou dezelfde installatie stappen volgen, beginnend vanuit hetzelfde .tar.gz
bestand en alle dezelfde opties die je gebruikt hebt (indien van toepassing) doorgeven aan ./bootstrap
. Als je net ./bootstrap
hebt gedraaid zonder argumenten erna, doe dat dan opnieuw. Na het opnieuw draaien van sudo make install
, wat (onschadelijk) de bestanden die al geà nstalleerd waren zou overschrijven met kopieën van zichzelf, zou u dan sudo make uninstall
kunnen gebruiken.
een andere mogelijke aanpak, die ik je sterk ontmoedig om te doen, zou zijn om te proberen uit te vinden welke bestanden en mappen er in de installatie zijn gemaakt, en om te proberen alleen die bestanden en mappen te verwijderen, maar geen andere. Als u --prefix
niet hebt doorgegeven aan ./bootstrap
toen u cmake compileerde, installeerde het bestanden in /usr/local
, maar het is niet het enige programma dat die map gebruikt. Het zou bestanden hebben geïnstalleerd in de verschillende submappen van /usr/local
, zoals bin
en lib
(en anderen), dus afgezien van de situatie waarin u weet dat er niets anders is geïnstalleerd in /usr/local
, vereist deze optie veel werk.
1 Het is gemakkelijk om verward te raken over het al dan niet verwijderen van CMake door sudo make uninstall
uit te voeren, omdat, standaard, wanneer u CMake gebruikt om build scripts voor uw eigen software te maken, geen uninstall
doel wordt gegenereerd, tenzij u er expliciet om vraagt. Echter, CMake zelf is ontworpen om gemakkelijk te worden verwijderd, en de broncode definieert die doelen verwijderen voor zichzelf. In de Makefile
gegenereerd door het draaien van ./bootstrap
kunt u zien:
#=============================================================================# 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
u kunt ook zoeken naar uninstall ondersteuning in de CMakeLists.txt-bestand.
om zeker te zijn, heb ik dit Getest met CMake 3.9.0, en het werkt. Het uninstall
doel wordt gegenereerd en het draaien van sudo make uninstall
werkt om CMake te verwijderen.