一、概要
目的是要修改原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
打包目录构建:
三、获取源rsyslog rpm包的文件及.spec
添加rsyslog yum源:
编辑/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
查看你可以下载rsyslog安装包:
命令: yum provides rsyslog
下载rsyslog rpm包:
命令: yumdownloader rsyslog-8.39.0-4.el7.x86_64
获取rpm包中的.spec文件:
rpmrebuild -e -p --notest-install rsyslog-8.39.0-4.el7.x86_64.rpm
这时会打开到该rpm包的spec文件为一个临时文件,用vim打开的,使用vim的另存为功能(shift键+":",输入w 文件名):
就会在当前目录保存一个rsyslog.spec的文件,这个就是rpm包的spec文件
获取rpm中的源文件
在当前目录创建一个目录用来装源文件: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文件进行打包:
这里我修改了名称、版本号。
然后把SPEC文件移至打包环境中的SPECS目录: mv rsyslog.spec SPECS/
通过SPEC文件打包:
开始打包: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
现在流程跑完了,查看RPMS目录是否有咱们的新rpm文件:
发现已经生成了该文件,打包成功!
本文章关于通过源rpm修改其中的文件并通过原.spec文件重新打包成新rpm文件的分享结束!
本文章属于原创作品,如果有引用,请注明出处,谢谢!