【问题标题】:uninstalling on linux在 linux 上卸载
【发布时间】:2012-08-03 21:24:35
【问题描述】:

我是在 linux 上编译和安装程序的新手。我理解常见的流程是做 ./configure

make

make install

我想知道如果我在某处出错或出现问题,是否有某种方法可以“回滚”。

【问题讨论】:

    标签: linux installation


    【解决方案1】:

    同意其他答案,我想澄清一下。如果我的理解是正确的,通常./configure 是一个脚本,可以确保/设置您的系统,以便编译能够正确进行。然后make 运行一个实际编译的 Makefile。然后make install 运行带有install 作为参数的makefile,实际上将您的二进制文件和配置文件复制到适当的(由脚本作者确定)系统目录,这就是为什么make install 通常必须以提升的权限运行。

    make 脚本通常采用uninstall 参数,该参数实际上会擦除复制到系统目录的所有内容。根据我的经验,这并不总是一个干净的过程。如果不确保自己完美跟踪所有更改并自己编写回滚脚本,就没有防火的回滚方式。

    简而言之,请尝试make uninstall,如果这不起作用并且您自己无法弄清楚,请尝试在与特定产品相关的邮件列表或论坛上发帖。

    编辑以获取更多信息: 只需运行 make 即可获得运行程序所需的一切,只要您保持工作目录与运行 make 的位置相同。也就是说,make 将创建您所有的二进制文件和配置文件等,您可以从该目录中正常使用该软件。但是,如果您不将内容复制到系统目录(例如使用make install),您将没有任何全局可访问的二进制文件或适当的环境变量。因此,如果您只是想运行一个独立的二进制文件,而不是其他软件所依赖的软件,那么您实际上不需要运行 make install 并且不必担心回滚。一切都将包含在您的原始工作目录中。

    【讨论】:

      【解决方案2】:

      如果make unistall 没有成功,那么您必须自己删除文件(除非有 unistall 脚本。

      避免所有混乱的一个好方法是在从源代码安装后使用checkinstall。这样,它还将为您的系统创建一个包文件,这意味着您将能够从包管理器中卸载软件,例如apt-get remove my_software.

      【讨论】:

      • 我在尝试使用适用于自动发行版的软件包(OpenSUSE、Ubuntu)方面的经历很糟糕
      • 正如@che 所说,是的,它仅适用于 Slackware、RPM 或 Debian 兼容的软件包。
      • @che:目前有些程序的名字让我无法理解[不在 linux 机器上],它们试图自动创建一个适合您的发行版的包,可能是二进制文件或配置文件。我使用这些已经至少六个月了,但是当我尝试使用它们时,它们经常创建无法正确安装并在脚本中出现错误的 RPM 或 DEB,或者 IIRC 有时他们安装的二进制文件无法运行,并带有 failed 。所以依赖项(包管理器应该已经捕获)或不兼容的依赖库版本。根据记忆,是这样的。
      • @taz:那些生成的包可能不包含所有正确的依赖信息,所以当转移到另一个系统时它们很可能会失败。如果这发生在您构建它们的同一个系统上,这有点奇怪,但我想这样的事情可能会发生。
      • @che:是的,我不记得尝试过转移系统。我有过生成的包确实可以工作的经验,但我也有过他们没有的经验。我喜欢这个主意,我只是不认为它们超级可靠。另外我对这些没有太多的知识或经验,只有我的 2 美分。
      【解决方案3】:

      检查Makefile脚本是否有

      make uninstall
      

      目标。找到这些并不罕见。

      否则,您可能需要检查东西的安装位置并拥有自己的退出脚本。

      【讨论】:

        【解决方案4】:

        通常./configure 接受各种参数。

        假设您执行了makemake install,然后意识到您想要重新配置您的软件,您必须首先使用该软件提供的uninstall 脚本卸载它。

        make uninstall 也可以工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-23
          • 1970-01-01
          • 1970-01-01
          • 2018-12-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多