Paul Carey Asked: 2009-08-16 05:40:29 +0800 CST2009-08-16 05:40:29 +0800 CST 2009-08-16 05:40:29 +0800 CST 使用 make install 升级软件包时,我是否应该先为预先存在的软件包运行 make uninstall? 772 如果我没有先运行 make uninstall,典型的结果会不会比简单地放置未使用的文件更糟糕? 如果给出的是肯定的,答案是否普遍适用,还是取决于包装?automake 文档声明创建了一个卸载目标,但也许有例外。 谢谢 source 2 个回答 Voted David Pashley 2009-08-16T06:05:28+08:002009-08-16T06:05:28+08:00 无法保证新版本的 make 卸载过程会对您已安装的版本执行正确的操作。您还需要确保新旧版本具有相同的配置选项。它会做错事的风险太大了,特别是如果你以 root 身份运行它。 这是为您的系统构建适当的软件包如此有用的众多原因之一。创建 Debian 或 RPM 包并不难,并且有像 dh-make 这样的工具,可以为您提供 90% 的工作,尤其是基于 autotools 的包。使用打包的优点是,当您升级时,您知道没有安装以前版本中的任何文件,并且您知道该包在您的系统上创建了哪些文件。您还可以了解以前的包是如何构建的,并且可以使用更新的版本重复构建。如果您使用“./configure; make; make install”从源代码编译,您可能会失去对使用的选项、使用的过程、应用的补丁的了解。 这些优势绝对值得学习打包自己的软件的小额投资。 Not Now 2009-08-16T07:29:50+08:002009-08-16T07:29:50+08:00 当强制从源代码安装时,尝试使用类似checkinstall的东西。(它也可以构建 rpm/deb 包) 同意 David Pashley 的观点,即构建适当的软件包是最好的方法。
无法保证新版本的 make 卸载过程会对您已安装的版本执行正确的操作。您还需要确保新旧版本具有相同的配置选项。它会做错事的风险太大了,特别是如果你以 root 身份运行它。
这是为您的系统构建适当的软件包如此有用的众多原因之一。创建 Debian 或 RPM 包并不难,并且有像 dh-make 这样的工具,可以为您提供 90% 的工作,尤其是基于 autotools 的包。使用打包的优点是,当您升级时,您知道没有安装以前版本中的任何文件,并且您知道该包在您的系统上创建了哪些文件。您还可以了解以前的包是如何构建的,并且可以使用更新的版本重复构建。如果您使用“./configure; make; make install”从源代码编译,您可能会失去对使用的选项、使用的过程、应用的补丁的了解。
这些优势绝对值得学习打包自己的软件的小额投资。
当强制从源代码安装时,尝试使用类似checkinstall的东西。(它也可以构建 rpm/deb 包)
同意 David Pashley 的观点,即构建适当的软件包是最好的方法。