1.安装软件包
yum install rpm-build rpmrebuild
2.解包
2.1 创建打包目录
https://repo.huaweicloud.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.5-1.el7.x86_64.rpm
cd /root [root@local ~]# rpmrebuild -p zabbix-agent-4.0.5-1.el7.x86_64.rpm 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY result: /root/rpmbuild/RPMS/x86_64/zabbix-agent-4.0.5-1.el7.x86_64.rpm
# 目录说明: [root@local ~]# tree /root/rpmbuild/ /root/rpmbuild/ ├── BUILD ├── BUILDROOT ├── RPMS │ └── x86_64 │ └── zabbix-agent-4.0.5-1.el7.x86_64.rpm ├── SOURCES ├── SPECS └── SRPMS BUILDROOT #编译后生成的软件临时安装目录 SPECS #存放SPEC文件的目录 BUILD #编译rpm包的临时目录 RPM #最终生成的可安装rpm包的所在目录 SRPM #软件最终的rpm源码格式存放路径
2.2 提取SPEC文件
[root@local ~]# rpmrebuild -s /root/rpmbuild/SPECS/zabbix-agent.spec -p zabbix-agent-4.0.5-1.el7.x86_64.rpm 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 警告:zabbix-agent-4.0.5-1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
2.3 提取rpm文件
# 创建编译文件夹: mkdir -p /root/rpmbuild/BUILDROOT/zabbix-agent-4.0.5-1.el7.x86_64 # 提取rpm cd /root/rpmbuild/BUILDROOT/zabbix-agent-4.0.5-1.el7.x86_64 rpm2cpio /root/zabbix-agent-4.0.5-1.el7.x86_64.rpm |cpio -div cd /root/rpmbuild [root@local rpmbuild]# tree -F . ├── BUILD/ ├── BUILDROOT/ │ └── zabbix-agent-4.0.5-1.el7.x86_64.rpm/ │ ├── etc/ │ │ ├── logrotate.d/ │ │ │ └── zabbix-agent │ │ └── zabbix/ │ │ ├── zabbix_agentd.conf │ │ └── zabbix_agentd.d/ │ │ └── userparameter_mysql.conf │ ├── usr/ │ │ ├── lib/ │ │ │ ├── systemd/ │ │ │ │ └── system/ │ │ │ │ └── zabbix-agent.service │ │ │ └── tmpfiles.d/ │ │ │ └── zabbix-agent.conf │ │ ├── sbin/ │ │ │ └── zabbix_agentd* │ │ └── share/ │ │ ├── doc/ │ │ │ └── zabbix-agent-4.0.5/ │ │ │ ├── AUTHORS │ │ │ ├── ChangeLog │ │ │ ├── COPYING │ │ │ ├── NEWS │ │ │ └── README │ │ └── man/ │ │ └── man8/ │ │ └── zabbix_agentd.8.gz │ └── var/ │ ├── log/ │ │ └── zabbix/ │ └── run/ │ └── zabbix/ ├── RPMS/ │ └── x86_64/ │ └── zabbix-agent-4.0.5-1.el7.x86_64.rpm ├── SOURCES/ ├── SPECS/ │ └── zabbix-agent.spec └── SRPMS/
2.4自定义zabbix_agentd.conf
[root@local rpmbuild]# grep -v ^# /root/rpmbuild/BUILDROOT/zabbix-agent-4.0.5-1.el7.x86_64/etc/zabbix/zabbix_agentd.conf |sed '/^$/d' PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=200 DebugLevel=3 EnableRemoteCommands=1 Server=Zabbix Server ListenIP=0.0.0.0 ServerActive=Zabbix Server Hostname=Zabbix Server RefreshActiveChecks=60 Include=/etc/zabbix/zabbix_agentd.d/*.conf UnsafeUserParameters=1
2.5修改spec文件
# 创建目录,上传文件 cd /root/rpmbuild/BUILDROOT/zabbix-agent-4.0.5-1.el7.x86_64/etc/zabbix mkdir {scripts,templates} # 上传conf文件到/root/rpmbuild/BUILDROOT/zabbix-agent-4.0.5-1.el7.x86_64/etc/zabbix/zabbix_agentd.d目录下 # 上传脚本文件到/root/rpmbuild/BUILDROOT/zabbix-agent-4.0.5-1.el7.x86_64/etc/zabbix/scripts目录下 # 上传模板文件到/root/rpmbuild/BUILDROOT/zabbix-agent-4.0.5-1.el7.x86_64/etc/zabbix/templates目录下 [root@local rpmbuild]# cd /root/rpmbuild/SPECS/ [root@local SPECS]# vim zabbix-agent.spec # 增加自定义脚本的路径及文件权限, 其中一部分内容 %files %config(noreplace) %attr(0644, root, root) "/etc/logrotate.d/zabbix-agent" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/zabbix_agentd.conf" %dir %attr(0755, root, root) "/etc/zabbix/zabbix_agentd.d" # ----- start 新增内容 ------ %config(noreplace) %attr(0644, root, root) "/etc/zabbix/zabbix_agentd.d/clickhouse.conf" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/zabbix_agentd.d/mysql.conf" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/zabbix_agentd.d/osBase.conf" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/zabbix_agentd.d/zookeeper.conf" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/zabbix_agentd.d/serviceStatus.conf" # %dir %attr(0755, root, root) "/etc/zabbix/scripts" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/scripts/clickhouse.sh" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/scripts/mysql.sh" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/scripts/procCheck.sh" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/scripts/tcpStatus.sh" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/scripts/zookeeper.sh" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/scripts/serviceStatus.sh" %dir %attr(0755, root, root) "/etc/zabbix/templates" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/templates/zbx_templates_mysql_master3306.xml" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/templates/zbx_templates_clickhouse18100.xml" %config(noreplace) %attr(0644, root, root) "/etc/zabbix/templates/zbx_templates_zookeeper18127.xml" # ----- start 新增内容 ------ * Tue Sep 29 2015 Kodai Terashima <kodai.terashima@zabbix.com> - 3.0.0alpha2-3 - add IfModule for mod_php5 in apache configuration file %doc %attr(0644, root, root) "/usr/share/doc/zabbix-agent-4.0.5/NEWS" %doc %attr(0644, root, root) "/usr/share/doc/zabbix-agent-4.0.5/README" %doc %attr(0644, root, root) "/usr/share/man/man8/zabbix_agentd.8.gz" %dir %attr(0755, zabbix, zabbix) "/var/log/zabbix" %dir %attr(0755, zabbix, zabbix) "/var/run/zabbix" %pre -p /bin/sh getent group zabbix > /dev/null || groupadd -r zabbix getent passwd zabbix > /dev/null || \ useradd -r -g zabbix -d /var/lib/zabbix -s /sbin/nologin \ -c "Zabbix Monitoring System" zabbix : %post -p /bin/sh if [ $1 -eq 1 ] ; then # Initial installation /usr/bin/systemctl preset zabbix-agent.service >/dev/null 2>&1 || : # 新增内容 sed -i "/^Hostname=/cHostname=`hostname`" /etc/zabbix/zabbix_agentd.conf >/dev/null fi
3.打包
rpmbuild常用参数: -bb 只编译二进制rpm包 -bs 只编译源码rpm包 -ba 同时编译二进制和源码rpm包 cd /root/rpmbuild/SPECS/ [root@local SPECS]# rpmbuild -ba /root/rpmbuild/SPECS/zabbix-agent.spec 处理文件:zabbix-agent-4.0.5-1.el7.x86_64 Provides: config(zabbix-agent) = 4.0.5-1.el7 zabbix-agent = 4.0.5-1.el7 zabbix-agent(x86-64) = 4.0.5-1.el7 Requires(interp): /bin/sh /bin/sh /bin/sh /bin/sh Requires(rpmlib): rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 Requires(pre): /bin/sh Requires(post): /bin/sh Requires(preun): /bin/sh Requires(postun): /bin/sh Obsoletes: zabbix 写道:/root/rpmbuild/SRPMS/zabbix-agent-4.0.5-1.el7.src.rpm 写道:/root/rpmbuild/RPMS/x86_64/zabbix-agent-4.0.5-1.el7.x86_64.rpm 执行(%clean): /bin/sh -e /var/tmp/rpm-tmp.OSE0ta + umask 022 + cd /root/rpmbuild/BUILD + /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/zabbix-agent-4.0.5-1.el7.x86_64 + exit 0 # 新生成的rpm包:/root/rpmbuild/RPMS/x86_64/zabbix-agent-4.0.5-1.el7.x86_64.rpm