RPM包修訂,重新打包

2021-10-01 10:59:35 字數 2525 閱讀 5427

專案有需求,需要自己重新編譯nginx,新增一些模組,需要生成rpm包,這網上二進位制的nginx rpm包,可以根據該rpm包,修改一下spec檔案,再重新打包即可。具體步驟如下所示:

1.安裝相關工具,主要是rpmbuild等相關工具

wget

tar -zxvf rpmrebuild-2.14.tar.gz

make && make install

yum install -y rpm-build rpmdevtools

wget
3.提取rpm包的spec檔案,具體命令為:

rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm

./rpmrebuild.sh -s /root/rpmbuild/specs/nginx.spec nginx-release-centos-7-0.el7.ngx.noarch

4.解壓原版rpm包,具體命令如下所示:

cd /root/rpmbuild/buildroot/

mkdir -p nginx-1.16.2-1.el7_4.ngx.x86_64 -- 後面要生成的rpm包

cd nginx-1.16.2-1.el7_4.ngx.x86_64

cp -rf xx/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm .

rpm2cpio *.rpm | cpio -idv -- 解壓原版rpm包,執行完後會在當前目錄生成原版rpm包包含的檔案

5.根據需求替換修改rpm解壓出來的檔案及修改對應的spec檔案,修改完成後,到 /root/rpmbuild/specs/執行命令:

rpmbuild -ba nginx.spec
6.到對應的rpm目錄下就可以看到重新生成的rpm包,如/root/rpmbuild/rpms/x86_64/

7.把對應的rpm包安裝到centos 7裝置上,然後執行service nginx start就可啟動,我這邊啟動過程中有遇到乙個問題,導致nginx無法啟動,具體日誌如下所示:

[root@localhost ~]# systemctl status nginx.service

● nginx.service - nginx - high performance est proxy server

loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)

active: failed (result: exit-code) since 五 2019-12-13 17:42:03 cst; 7s ago

docs:

process: 5838 execstart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=1/failure)

12月 13 17:42:03 localhost.localdomain systemd[1]: starting nginx - high performance est proxy server...

12月 13 17:42:03 localhost.localdomain nginx[5838]: nginx: [emerg] bind() to 0.0.0.0:5900 failed (13: permission denied)

12月 13 17:42:03 localhost.localdomain systemd[1]: nginx.service: control process exited, code=exited status=1

12月 13 17:42:03 localhost.localdomain systemd[1]: failed to start nginx - high performance est proxy server.

12月 13 17:42:03 localhost.localdomain systemd[1]: unit nginx.service entered failed state.

12月 13 17:42:03 localhost.localdomain systemd[1]: nginx.service failed.

該問題主要是我這有偵聽udp 5900,而systemctl 會走selinux,而selinux會限制udp 5900,導致nginx無許可權,關閉selinux即可,具體命令為:

臨時關閉selinux

setenforce 0

永久關閉selinux

[root@localhost ~]# vim /etc/sysconfig/selinux

selinux=enforcing 改為 selinux=disabled

重啟服務reboot

至此nginx可正常啟動了,另外也通過systemctl list-unit-files檢視所有的啟動項,是否開機啟動

修改RPM重新打包

一 安裝軟體包 1.安裝rpmbuild yum install rpm build 2.安裝gcc yum install gcc yum utils 3.配置rpm編譯目錄 vi rpmmacros topdir data rpmbuild 二 建立檔案 1.建立目錄並解壓rpmrebuild檔...

修改rpm中的檔案重新打包

1.安裝rpmrebuild 和安裝rpmbuild rpmbuild直接用yum安裝 yum install rpm build 2.配置rpm編譯目錄 vi rpmmacros topdir data rpmbuild 儲存。3.建立目錄解壓rpmrebuild檔案到 data rpmbuild...

Linux修改RPM包內容,重新打包

記錄下步驟 1.解壓rpm 可以用工具軟體直接解壓。或者是用rpm2cpio rpm2cpio rpm cpio div 2.修改內容 按自己需求修改內容 3.提取spec檔案 這倆使用rpmrebuild 提供的rpmrebuild.sh 提取出rpm包裡的 spec檔案 對於需要修改安裝後 檔案...