你好我向超级用户问了这个问题,但我没有得到一个好问题,我真的需要答案.我知道你们中的一些人可以回答这个问题.
我已经通过yum安装了nginx.现在我想添加一个模块,但我必须再次编译源代码并包含新模块.
但我找不到来源.有人知道我要做什么来重新编译源代码并获取模块.
更新
我在帕特里克的答案中做了一切,效果很好.但是,当我运行yum update时,它想要使用相同的版本更新已安装的rpm.
我可以让它更新,或者我应该指定它已经是最新的.
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的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从更新列表中简单排除.确保将其与正确的repo相关联:
exclude=nginx*
或者使用--exclude选项运行yum
yum --exclude=nginx*