当使用 make install 升级软件包时,我应该先对预先存在的软件包运行 make uninstall 吗?

当使用 make install 升级软件包时,我应该先对预先存在的软件包运行 make uninstall 吗?

如果我无法先运行 make uninstall,那么典型的结果是否不会比简单地将未使用的文件放在周围更糟糕?

如果答案是肯定的,那么答案是否普遍适用,还是取决于软件包? automake 文档指出已创建卸载目标,但也许存在例外。

谢谢

答案1

无法保证新版本的 make uninstall 过程会对您安装的版本执行正确的操作。您还需要确保新旧版本的配置选项相同。它执行错误操作的风险实在太大,尤其是当您以 root 身份运行时。

这是为您的系统构建合适的软件包如此有用的众多原因之一。创建 Debian 或 RPM 软件包并不难,而且有像 dh-make 这样的工具,它们可以为您完成 90% 的工作,尤其是对于基于自动工具的软件包。使用打包的优点是,当您升级时,您知道以前版本中的任何文件都没有安装,并且您知道软件包在您的系统上创建了哪些文件。您还可以保留以前软件包的构建方式的知识,并可以使用较新的版本重复构建。如果您使用“./configure; make; make install”从源代码进行编译,则可能会忘记使用了哪些选项、使用了哪些过程、应用了哪些补丁。

这些优势绝对值得您花一点小钱去学习打包自己的软件。

答案2

尝试使用类似检查安装当强制从源代码安装时。(它也可以构建 rpm/deb 包)

同意 David Pashley 的观点,构建适当的包是最好的方法。

相关内容