最近,我继承了一组运行 Red Hat Enterprise Linux 5.4 的机器。它们已从 rpm 中安装了 Apache Server v2.2.3。我需要将 Apache 升级到 v2.2.19。出于各种原因,我从源代码构建 Apache。安装新版本的 Apache 没有问题,但我有两个 Apache 实例,v2.2.3 位于 /usr/sbin/httpd,v2.2.19 位于 /usr/local/sbin/httpd。在大多数情况下,我只需使用 rpm -e 删除现有版本的 Apache,但还有大量其他 rpm 依赖 Apache。我似乎找不到 REL 5.4 的 Apache 2.2.19 的 rpm,所以我无法执行 rpm --upgrade。如果我使用现有 Apache 实例 (/usr/sbin/httpd) 的前缀构建 Apache 2.2.19,则安装会失败,因为 /usr/sbin/httpd 已经存在。我尝试使用 yum 来升级软件包,但服务器位于防火墙后面,无法看到外部世界。
此时我倾向于创建自己的 rpm,但这似乎是一项看似很小的任务,需要做很多额外的工作。似乎有些非常基本的东西我没搞懂。
答案1
由于还没有人提出任何建议,我可能会尝试一些我只读过并且我的同事内部使用的东西:
事先安装开发包。
rpmbuild -tb httpd-2.2.xx.tar.gz
在安装所有依赖项之前,它可能会失败几次。
我将在开发环境中构建 rpm,并在克隆的服务器/测试服务器上对其进行测试,如果可能的话,安装与生产服务器完全相同的软件包。
我注意到 RH 和 Centos 正在保留服务的主要版本,在本例中为 httpd-2.2.3,修补发现的漏洞并重建 rpm。
我的建议是尝试构建您自己的 rpm。