5

您好,我向超级用户提出了这个问题,但我没有得到很好的问题,我真的需要答案。我知道你们中的一些人可以回答这个问题。

我已经通过 yum 安装了 nginx。现在我想添加一个模块,但我必须再次编译源代码并包含新模块。

但我找不到来源。有人知道我必须做什么来重新编译源代码并获取模块。

更新

我在帕特里克的回答中做了所有事情,结果很好。但是,当我现在运行 yum update 时,它​​想用相同的版本更新已安装的 rpm。

我可以让它更新,还是应该指定它已经是最新的。

4

1 回答 1

6

Redhat 和相关发行版(fedora、centos)将它们的源 rpm 保存在一个高度规则的目录树中。对于您想要的 RHEL5:ftp: //ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/对于其他版本,您可以浏览 ftp 服务器,直到找到您想要的。否则,请搜索您拥有的 nginx 的确切版本(rpm -q nginx

假设您可以找到 srpm,请使用 rpm 安装它:

rpm -ivh nginx-xxxx.src.rpm

这会将源代码和构建文件放在/usr/src/redhat/{BUILD,SPEC,SRC,SOURCES}. 您可以修改.spec文件/usr/src/redhat/SPEC以构建您想要的模块以及 nginx 的其余部分,或者您可以手动构建 nginx。

您要构建哪个模块?在fedora 的 nginx.spec中,运行时指定了几个模块configure。这可能就像在此处添加一行一样简单:

./configure \
[snip...]
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_perl_module \
[snip...]

添加任何更改后,您可以使用以下命令nginx.spec构建最终版本:rpmrpmbuild

rpmbuild -ba nginx.spec

假设包构建没有错误,rpmbuild 将把它留在 /usr/src/redhat/RPMS/

更新:当更新可用时,yum 会想要替换你的 nginx 包。您可能希望使用与上述相同的过程来重建每个可用的新包。但是,如果安全不是问题,您可以通过将以下内容添加到您的 yum 配置(可能/etc/yum.repos.d/${repo}.repo或类似。确保将其与正确的 repo 相关联)简单地从更新列表中排除 nginx:

exclude=nginx*

或者使用 --exclude 选项运行 yum

yum --exclude=nginx*
于 2010-04-02T19:46:50.717 回答