Sur*_*rma 7 cmake software-uninstall
我想更新我的 cmake 版本。所以我首先卸载了它,然后尝试按照teocci在这篇文章中给出的方法进行安装。
但是,它在输入 make 时出现了一些错误,现在我想卸载它并安装以前版本的 cmake。我试过了sudo apt-get purge cmake。但它在进入时仍留在系统中cmake --version。
我该怎么办?
Eli*_*gan 11
TL;DR:在您之前运行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
Run Code Online (Sandbox Code Playgroud)
您还可以在其 CMakeLists.txt 文件中搜索卸载支持。
可以肯定的是,我使用 CMake 3.9.0 对此进行了测试,并且确实有效。该uninstall目标是生成和运行sudo make uninstall工作卸载CMake的。