目的是要修改原rsyslog rpm包的systemd rsyslog.service文件,添加一行“ExecStartPre=/bin/bash -c "/usr/bin/rm -f /var/lib/rsyslog/*"用于每次重启rsyslog都不会重读rsyslog上次挂了以后的断点日志,而是每次都要rsyslog重启后的重传日志。
现在需要通过rsyslog的官方rpm包解压文件并用rpm包里的spec文件重新打一份属于自己的包,也可以在spec文件里加一些自己的东西。
机器环境: centos7一台
打包环境安装:
1. yum install epel-release centos-release -y
2.yum install rpm-build rpmrebuild rpm cpio
打包目录构建:
编辑/etc/yum.repos.d/rsyslog.conf:
[bsc-rsyslog]
name=Adiscon CentOS-$releasever - local packages for $basearch
baseurl=http://rpms.adiscon.com/v8-stable/epel-$releasever/$basearch
enabled=1
gpgcheck=0
protect=1
清除yum缓存: yum clean all
命令: yum provides rsyslog
命令: yumdownloader rsyslog-8.39.0-4.el7.x86_64
rpmrebuild -e -p --notest-install rsyslog-8.39.0-4.el7.x86_64.rpm
这时会打开到该rpm包的spec文件为一个临时文件,用vim打开的,使用vim的另存为功能(shift键+":",输入w 文件名):
就会在当前目录保存一个rsyslog.spec的文件,这个就是rpm包的spec文件
在当前目录创建一个目录用来装源文件:mkdir rsyslog
把rpm移至刚创建的目录: mv rsyslog-8.39.0-4.el7.x86_64.rpm rsyslog/
提取源文件: rpm2cpio rsyslog-8.39.0-4.el7.x86_64.rpm | cpio -div
图中列表就是源文件,已生成在当前目录。
我这里修改了源文件中的./etc/rsyslog.conf以及./usr/lib/systemd/system/rsyslog.service
这里我修改了名称、版本号。
然后把SPEC文件移至打包环境中的SPECS目录: mv rsyslog.spec SPECS/
开始打包:rpmbuild -bb SPECS/rsyslog.spec
发现报错知道咱们还没有把源文件移至BUILDROOT目录下做源文件来打包。
移动咱们刚才的源文件至BUILDROOT目录: mv rsyslog/ BUILDROOT/bsc-rsyslog-1.1.0-1.el7.x86_64/
再使用SPEC进行打包: rpmbuild -bb SPECS/rsyslog.spec
发现已经生成了该文件,打包成功!
本文章关于通过源rpm修改其中的文件并通过原.spec文件重新打包成新rpm文件的分享结束!
本文章属于原创作品,如果有引用,请注明出处,谢谢!