我是新手在linux上编译和安装程序。我理解常见的过程就是这样做
./configure
make
make install
我想知道如果我在某处犯错或者出现问题,我是否可以“回滚”。
答案 0 :(得分:3)
同意其他答案,我想稍微澄清一下。如果我的理解是正确的,通常./configure
是一个脚本,用于确保/设置您的系统,以便编译正确。然后make
运行实际编译的Makefile。然后make install
运行带有install
的makefile作为参数,实际上将二进制文件和配置文件复制到适当的(由脚本作者确定)系统目录,这就是为什么make install
必须经常以提升的特权运行。
make脚本通常采用uninstall
参数来实际删除复制到系统目录的所有内容。根据我的经验,这并不总是一个干净的过程。没有防火方法可以回滚而不确保自己完全跟踪所有更改并自行编写回滚脚本。
简而言之,请尝试make uninstall
如果这不起作用且您无法自己解决,请尝试在与相关特定产品相关的邮件列表或论坛上发帖。
编辑以获取更多信息:
只要你将工作目录保存在make
的任何地方,只需运行make
就可以获得运行程序所需的一切。也就是说,make
将创建所有二进制文件和配置文件等,您可以使用该目录中的软件。但是,如果不将内容复制到系统目录(例如make install
),则不会有任何全局可访问的二进制文件或适当的环境变量。因此,如果您只是尝试运行一个不包含其他东西所依赖的软件的自包含二进制文件,那么您实际上不需要运行make install
并且不必担心回滚。一切都将包含在您的原始工作目录中。
答案 1 :(得分:2)
如果make unistall
没有成功,那么你必须自己删除这些文件(除非有一个unistall脚本。
避免所有混乱的一个好方法是在从源代码安装内容后使用checkinstall
。这样它就会为你的系统创建一个包文件,这意味着你将能够从包管理器中取消软件,例如apt-get remove my_software
。
答案 2 :(得分:1)
检查Makefile脚本是否有
make uninstall
目标。找到这些并不罕见。
否则,您可能需要检查安装内容的位置并拥有自己的退出脚本。
答案 3 :(得分:0)
通常./configure
会收集各种参数。
因此,假设您执行了make
和make install
,然后意识到您要重新配置软件,则必须先使用软件提供的uninstall
脚本将其卸载。
make uninstall
也可能有用。