如何从源代码安装软件(在本例中为nginx),以有效覆盖并replace以前在红帽企业版Linux中安装的软件包?

所以我inheritance了一个生产箱子的运行

Linux版本2.6.9-023stab048.6-enterprise(root @ rhel4-32)(gcc版本3.4.520051201(Red Hat 3.4.5-2))#1 SMP Mon Nov 17 19:09:18 MSK 2008

安装了以下过期的nginx包(通过yum list | grep nginx

nginx.i386安装0.6.39-1.el5

我们在使用这个过时的版本时遇到了很多困难,我想升级它,但这显然是通过yum最新的可用版本。

不幸的是,这是在我inheritance的产品框中,所以我不知道这个软件包安装了什么文件,或者随后写了哪些脚本,这些脚本依赖于处于特定位置的nginx文件。 所以这是我的问题给你:

我可以用yum来访问一个不同的版本库吗(0.7。*)吗?

如果没有,那么是否有任何yum命令可以让我准确地查看包中安装了哪些文件?

什么是最好和最干净的方式来删除软件包的版本,并将其replace为nginx 0.7。*从源代码安装?

有没有办法做到这一点,而无需离线服务器很长一段时间(超过15分钟左右)?

谢谢你的帮助!

看看一些其他的RPM存储库,如rpmforge或epel,你可能会发现更新的预build包。 或者,抓住你的版本(快速谷歌searchfind一个0.7.61)的源代码RPM并build立它( rpmbuild --rebuild <foo>.src.rpm

首先,如果你想看看用nginx安装的软件包:

 rpm -ql nginx 

有nginx 0.7和0.8的rpm包,但我不能说他们是可靠的。 相反,我的build议是,你build立自己的基于源代码的rpm包。 第一次很难搞清楚规格,但是所有的升级都很容易做到。 如果您希望获得最小的停机时间,则需要在另一个框中testing迁移。 对于经验,我会告诉升级nginx必须是一个干净的过程,但仍然需要在做这些之前进行testing。