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

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,因此解决方案是:

  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
Run Code Online (Sandbox Code Playgroud)

您还可以在其 CMakeLists.txt 文件中搜索卸载支持

可以肯定的是,我使用 CMake 3.9.0 对此进行了测试,并且确实有效。uninstall目标是生成和运行sudo make uninstall工作卸载CMake的。

  • 我通过[this](https://www.claudiokuenzler.com/blog/611/installing-cmake-3.4.1-ubuntu-14.04-trusty-using-alternatives#.WYQ-aCfhU8p)安装了cmake,并且现在可以工作了。 。 谢谢您的帮助 :) (2认同)