使用新版本更新手动编译的 unix 程序?

使用新版本更新手动编译的 unix 程序?

我想更新之前手动编译到 /opt 的程序版本。我是否可以只编译新版本并让其覆盖之前的安装(假设没有兼容性问题)?或者这是不好的做法吗?

我在完全备份的服务器上执行此操作;所以最坏的情况是我可以重新映像。

答案1

我是否可以只编译新版本并让它覆盖以前的安装(假设没有兼容性问题)或者这是不好的做法?

是的,你应该没事。二进制文件被覆盖一直,有时是由于手动编译的包,但更多的时候是因为 yum/apt/等二进制包更新。

答案2

这实际上取决于程序和版本之间的差异,以及安装过程的工作方式。例如,如果您使用不同的设置对其进行配置,从而导致在支持外部动态模块(Apache、heartbeat、ProFTPd 等)的程序中构建了不同的模块集,则目录中可能会残留针对旧版本构建的模块。

配置文件也可能会被覆盖,或者新的配置文件不会被写入,这取决于安装过程。这在 postfix 中经常发生,因为 master.cf 中需要新的服务,但 Postfix 提供了一个工具来修复这些情况。

就我个人而言,在极少数情况下,我会手动安装软件(而不是使用分发包),并尝试将它们放在基于版本命名的目录中,然后创建从通用名称到特定名称的符号链接。这样,我就可以在全新的目录中安装新版本。否则,最好将旧目录移开,例如将其重命名为“.old”,然后重新安装。

答案3

通常情况下是的。makefile 可能会提供“clean”选项来卸载旧二进制文件。

如果您打算经常这样做 - 请了解如何构建正确的软件包并使用 package-install-options 来安装/更新到新版本或发行版。

相关内容