您好我向超级用户提出这个问题,但我没有得到一个好问题,我真的需要答案。我知道你们中的一些人可以回答这个问题。
我已经通过yum安装了nginx。现在我想添加一个模块,但我必须再次编译源代码并包含新模块。
但是我找不到来源。有人知道我要做什么来重新编译源代码并获取模块。
更新
我在帕特里克的答案中做了一切,结果很棒。但是,当我运行yum update时,它想要使用相同的版本更新已安装的rpm。
我可以让它更新,或者我应该指定它已经是最新的。
答案 0 :(得分:6)
Redhat和相关发行版(fedora,centos)将其源代码保存在高度常规的目录树中。对于你想要的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's 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
添加任何更改后,您可以使用rpm
构建最终rpmbuild
:
rpmbuild -ba nginx.spec
假设包构建没有错误,rpmbuild会将其保留在/usr/src/redhat/RPMS/
更新: yum会在更新可用时替换您的nginx软件包。您可能希望使用与上面相同的过程重建每个新包。 但是,如果不考虑安全性,可以通过在yum配置中添加以下内容(可能是/etc/yum.repos.d/${repo}.repo
或类似内容)来简单地从更新列表中排除nginx。确保关联它有正确的回购):
exclude=nginx*
使用--exclude选项
运行yumyum --exclude=nginx*