![当使用 make install 升级软件包时,我应该先对预先存在的软件包运行 make uninstall 吗?](https://linux22.com/image/491062/%E5%BD%93%E4%BD%BF%E7%94%A8%20make%20install%20%E5%8D%87%E7%BA%A7%E8%BD%AF%E4%BB%B6%E5%8C%85%E6%97%B6%EF%BC%8C%E6%88%91%E5%BA%94%E8%AF%A5%E5%85%88%E5%AF%B9%E9%A2%84%E5%85%88%E5%AD%98%E5%9C%A8%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%8C%85%E8%BF%90%E8%A1%8C%20make%20uninstall%20%E5%90%97%EF%BC%9F.png)
如果我无法先运行 make uninstall,那么典型的结果是否不会比简单地将未使用的文件放在周围更糟糕?
如果答案是肯定的,那么答案是否普遍适用,还是取决于软件包? automake 文档指出已创建卸载目标,但也许存在例外。
谢谢
答案1
无法保证新版本的 make uninstall 过程会对您安装的版本执行正确的操作。您还需要确保新旧版本的配置选项相同。它执行错误操作的风险实在太大,尤其是当您以 root 身份运行时。
这是为您的系统构建合适的软件包如此有用的众多原因之一。创建 Debian 或 RPM 软件包并不难,而且有像 dh-make 这样的工具,它们可以为您完成 90% 的工作,尤其是对于基于自动工具的软件包。使用打包的优点是,当您升级时,您知道以前版本中的任何文件都没有安装,并且您知道软件包在您的系统上创建了哪些文件。您还可以保留以前软件包的构建方式的知识,并可以使用较新的版本重复构建。如果您使用“./configure; make; make install”从源代码进行编译,则可能会忘记使用了哪些选项、使用了哪些过程、应用了哪些补丁。
这些优势绝对值得您花一点小钱去学习打包自己的软件。
答案2
尝试使用类似检查安装当强制从源代码安装时。(它也可以构建 rpm/deb 包)
同意 David Pashley 的观点,构建适当的包是最好的方法。