我想更新我的 cmake 版本。所以我首先卸载了它,然后尝试按照给出的步骤进行安装这篇文章来自 teocci。
但是,输入 make 时出现一些错误,现在我想卸载它并安装以前版本的 cmake。我试过了sudo apt-get purge cmake
。但是输入 时它仍然留在系统中cmake --version
。
我应该怎么办?
答案1
总结:sudo make uninstall
在之前运行的目录中运行sudo make install
。
您关注了此方法安装不同版本的 CMake。也就是说,你卸载了 Ubuntu 包管理器提供的版本,然后自己从源代码手动下载、编译和安装。
假设您能够成功遵循这些说明,Ubuntu 的包管理器提供的 CMake 版本(通过包cmake
)已卸载。因为你现在安装的版本是不是由 Ubuntu 的包管理器提供,而是你自己编译安装的版本,sudo apt-get purge cmake
再次运行不会删除它。
由于您是cmake
通过编译然后运行来安装的sudo make install
,因此解决方案是:
- 使用
cd
返回到运行该命令的目录。 - 跑步
sudo make uninstall
。
并非所有可以通过运行安装的软件make install
都有相应的uninstall
目标让您运行make uninstall
来删除它。但 CMake 确实支持这一点。1
如果您删除了该文件夹在其中运行了sudo make install
或以其他方式更改了 ,则最好的办法是重建并重新安装它(确保使用完全相同的版本)以重新获得运行 的能力sudo make uninstall
。也就是说,您将遵循相同的安装步骤,从相同的.tar.gz
文件开始,并将您使用的所有相同选项(如果有)传递给./bootstrap
。如果您只是./bootstrap
在运行后不带任何参数,请再次执行此操作。再次运行后sudo make install
,它将(无害地)用其副本覆盖已安装的文件,然后您就可以使用sudo make uninstall
。
另一种可能的方法(我强烈反对您这样做)是尝试找出安装中创建的文件和目录,并尝试仅删除那些文件和目录而不删除其他文件和目录。如果您在编译 CMake 时没有将 传递给 ,--prefix
那么./bootstrap
它会将文件安装在 中/usr/local
,但它不是唯一使用该目录的程序。它会将文件安装在 的各个子目录中/usr/local
,例如bin
和lib
(以及其他),因此除了您不知道 中没有安装任何其他内容的情况外/usr/local
,此选项需要大量工作。
1很容易对是否可以通过运行卸载 CMake 感到困惑,sudo make uninstall
因为,默认情况下,当你使用 CMake 创建构建脚本时自己的软件,uninstall
除非您明确要求,否则不会生成任何目标。 然而,CMake本身易于卸载,以及它的源代码做为自己定义这些卸载目标。在Makefile
运行生成的文件中./bootstrap
,你可以看到:
#=============================================================================
# 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
您还可以搜索卸载支持在其 CMakeLists.txt 文件。
为了确保万无一失,我使用 CMake 3.9.0 进行了测试,结果做工作。目标uninstall
已生成并运行sudo make uninstall
以卸载 CMake。