在Linux上卸载的方法

3

我对在Linux上编译和安装程序很陌生。我了解常见的流程是这样的:

./configure make make install

我想知道如果我犯了错误或者出现问题,是否有一种“回滚”的方法。

4个回答

4
同其他答案一样,我想澄清一下。如果我的理解是正确的,通常./configure是一个脚本,用于确保/设置您的系统,以便编译可以正确进行。然后make运行实际编译的Makefile。然后make install使用install作为参数运行makefile,实际上将二进制文件和配置文件复制到适当(由脚本作者确定)的系统目录中,这就是为什么经常需要使用提升的特权运行make install的原因。
通常,make脚本采用uninstall参数,实际上删除了复制到系统目录的所有内容。根据我的经验,这并不总是一个干净的过程。除非确保所有更改都被完美跟踪并自己编写回滚脚本,否则没有绝对可靠的回滚方法。
简而言之,请尝试make uninstall,如果这不起作用并且您自己无法解决问题,请尝试在与所讨论产品相关的邮件列表或论坛上发布消息。
编辑以获取更多信息: 只需运行make,就可以获得运行程序所需的所有内容,只要您将工作目录保持为运行make的位置即可。也就是说,make将创建所有二进制文件和配置文件等,您可以从该目录使用软件。如果不将东西复制到系统目录中,例如使用make install,则您将没有任何全局可访问的二进制文件或适当的环境变量。因此,如果您只是尝试运行一个不是其他软件依赖的自包含二进制文件,则实际上不需要运行make install,也不必担心回滚。一切都包含在您的原始工作目录中。

2
如果make unistall无法解决问题,那么您就需要自行删除文件(除非有一个卸载脚本)。
一个好的方法是在从源代码安装某个东西后使用checkinstall来避免所有混乱。这样它还会为您的系统创建一个软件包文件,这意味着您将能够从包管理器中卸载软件,如apt-get remove my_software

我曾尝试使用自动适配发行版的软件包(OpenSUSE,Ubuntu),但遭遇了不好的经历。 - taz
正如@che所说,它只适用于Slackware、RPM或Debian兼容的软件包。 - George Karanikas
@che:有些程序的名字我现在想不起来了(不在Linux系统上),它们试图自动创建一个适合你的发行版的软件包,给定一个二进制文件或配置文件。我至少六个月没用过这些程序了,但经常当我尝试使用它们时,它们创建的RPM或DEB无法正确安装,脚本中会出现错误,或者我IRC有时候它们安装的二进制文件无法运行,出现了失败的.so依赖项(应该由软件包管理器捕获)或不兼容的依赖库版本。根据我的记忆,就是这样的事情。 - taz
@taz:这些生成的软件包可能不包含所有正确的依赖信息,因此当它们被转移到另一个系统时很可能会失败。如果这发生在您构建它们的同一系统上,那么这有点奇怪,但我想这种事情可能会发生。 - che
@che:是的,我不记得尝试过转移系统。我曾经有过生成的包能够正常工作的经验,但也遇到了它们无法正常运行的情况。我喜欢这个想法,只是我觉得它们并不是特别可靠。此外,我对这些东西的了解和经验并不多,这只是我的个人看法。 - taz

1

检查 Makefile 脚本是否有

make uninstall

目标。发现这些并不罕见。

否则,您可能需要检查安装位置并编写自己的回退脚本。


0
通常情况下,./configure 命令会接受各种参数。
假设您执行了 makemake install 命令,并意识到需要重新配置软件,那么您需要首先使用该软件提供的 uninstall 脚本卸载软件。 make uninstall 命令也可能生效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接