从源代码安装 CMake 后如何删除它?

从源代码安装 CMake 后如何删除它?

我想更新我的 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,因此解决方案是:

  1. 使用cd返回到运行该命令的目录。
  2. 跑步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,例如binlib(以及其他),因此除了您不知道 中没有安装任何其他内容的情况外/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。

相关内容