(从stackoverflow.com迁移)
最近我inheritance了一套运行Red Hat Enterprise Linux 5.4的机器。 它们已经从rpms安装了Apache Server v2.2.3。 我需要将Apache升级到v2.2.19。 由于各种原因,我从源代码构buildApache。 安装我的新版本的Apache是没有问题的,但是我在/ usr / sbin / httpd和v2.2.19 / usr / local / sbin / httpd下有两个Apache的v2.2.3实例。 在大多数情况下,我只是用rpm -e来移除Apache的现有版本,但是还有很多其他的Apache作为依赖项。 我似乎无法findREL 2.2的Apache 2.2.19的rpm,所以我不能做一个rpm – 升级。 如果我使用现有Apache实例(/ usr / sbin / httpd)的前缀构buildApache 2.2.19,则安装会因为/ usr / sbin / httpd已经存在而失败。 我已经探索过使用yum来升级软件包,但服务器在防火墙后面,看不到外面的世界。
在这一点上,我倾向于创造我自己的rpm,但这似乎是一个看起来很小的任务额外的工作很多。 这似乎有一些真正的基本我没有得到。
你真的很想创build一个RPM。 你不应该从头开始。 将有任何数量的现有软件包,您可以使用(或至less用作基地) – 包括现有的RPM软件包。
在软件包pipe理的环境中从源代码安装只是要求任何需要在将来pipe理服务器的人,甚至在3年之内,只要你忘记自己已经造成了什么恐怖。
我倾向于使用发行版提供的软件包,但是如果我出于任何原因需要从源代码编译类似Apache的东西,我确信我
/usr/local/apache2或/opt/apache2 /etc/init.d/apache2_custom ) – 搞乱发行版提供的脚本会迟早地咬你 /etc/motd和其他文档来清楚地说明这个服务器使用自编的软件包FOO的事实 移动旧的httpd二进制文件,然后安装。
mv /usr/sbin/httpd /usr/sbin/httpd.old -v ,为Apache ./configure设置--prefix=/usr/sbin ,然后安装。 确保先备份你的Apacheconfiguration文件。 ( tar czpf /etc/httpd-backup-$(date +%s).tar.gz /etc/httpd/ )
虽然它可能会导致你进入依赖清除的滑坡,你应该检查哪些软件包需要安装httpd。
# rpm -q --whatrequires httpd
如果你可以删除软件包,而不是你可能有的答案,如果你不能删除Apache的依赖关系,你绝对必须运行新版本比我build议closureshttpd的rpm版本,并停止启动启动。
# service httpd stop # chkconfig httpd off
我会build议然后安装您的自定义编译的版本,并运行它的configuration/二进制文件的另一个目录。 如果你走这条路线,复制默认的初始化脚本也是明智的,修改path并将其添加为不同的名称。
# chkconfig --add httpd-custom # chkconfig httpd-custom on
请记住,如果您使用Redhat支持,他们不会帮助您使用httpd的自定义编译版本,如果您与原始二进制文件混淆,他们真的不会支持您。