rpm的制作工具rpmbuild,软件包名rpm-build,这里以CentOS6.7系统为例来讲解。如果系统未安装,则配置yum源后安装即可 yum install rpm-build -y 。

wKioL1bxVgOSALiQAAB8Y06ehGA542.png

rpmbuild制作rpm包的目录topdir使用配置文件macrofiles来配置, /usr/lib/rpm/macros,/usr/lib/rpm/macros.* ,~/.rpmacros 文件。

wKioL1bxVsTC4E-xAAAY6LdjcJc476.png

可查询默认topdir路径为各用户家目录下rpmbuild目录

wKiom1bxVteh3IfPAAAgD9ewQag007.png

也可以使用命令查询:

CentOS/RHEL5:rpmbuild --showrc | grep macrofiles

CentOS/RHEL6:rpmbuild --showrc | grep topdir

wKioL1bxWAjgtl7jAAAk8VjOQ_4981.png

也可以自定义topdir目录,比如这里我们定义到 /usr/src/centos/rpmbuild ,创建文件~./rpmmacros,加入 %_topdir    /usr/src/centos/rpmbuild 

wKioL1bxWVOi1zBRAAAMVOF0htM896.png

查看topdir目录已经变成我们自定义的目录了

wKiom1bxWQjwVP_CAAAjQ_K_OiY665.png

创建topdir目录与rpmbuild需要的目录

mkdir -p /usr/src/centos/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

wKioL1bxWoSwQ3twAAAc1058RJ0932.png

按照实际的需求编写相关文件,如这里实现安装monitor的rpm包自动将两个脚本monitorCPU.sh、monitorMEM.sh安装到/opt/monitor/目录下,并添加到root用户的crontab计划任务,每隔20分钟运行一次脚本。

编写/usr/src/centos/rpmbuild/SPECS/monitor.spec文件,内容如下:

%define __spec_pre_post true

%define __spec_pre_pre true

%define __spec_build_post true

%define __spec_build_pre true

%define __spec_install_post true

%define __spec_install_pre true

%define __spec_clean_post true

%define __spec_clean_pre true

%define _binary_filesgigest_algorithm 1

%define _build_binary_file_digest_algo 1

%define _binary_payload wq.gzdio



Name:monitor

Version:1.0

Release:1

Summary:none

AutoReqprov:no

BuildRoot:%buildroot

Prefix:/opt/monitor

Group:default

License:GPLv3+

Vendor:CentOS

URL:none

Packager:monitor

Requires:procps


%description

monitor Cpu and Memory function


%pre


%post

cat >> /var/spool/cron/root << EOF

*/20 * * * * /opt/monitor/monitorCPU.sh

*/20 * * * * /opt/monitor/monitorMEM.sh

EOF


%build


%install


%clean


%files


%defattr(-,root,root,0755)

/opt/monitor/monitorCPU.sh

/opt/monitor/monitorMEM.sh


%changelog

wKioL1bxYsWSs56fAABXN4DChGg285.png

创建目录,拷贝脚本文件并加上执行权限。

mkdir -p /usr/src/centos/rpmbuild/BUILDROOT/monitor-1.0-1.x86_64/opt/monitor/ 

cp monitorCPU.sh /usr/src/centos/rpmbuild/BUILDROOT/monitor-1.0-1.x86_64/opt/monitor/

cp monitorMEM.sh /usr/src/centos/rpmbuild/BUILDROOT/monitor-1.0-1.x86_64/opt/monitor/

chmod +x /usr/src/centos/rpmbuild/BUILDROOT/monitor-1.0-1.x86_64/opt/monitor/*

wKioL1bxX6nBiO8FAABLttpvBIw492.png

目录文件结构如下:

wKiom1bxX4fBRU65AAAn-PRP4gw485.png

执行命令生成rpm包 rpmbuild -bb /usr/src/centos/rpmbuild/SPECS/monitor.spec

wKiom1bxYobjQXuJAAA3eF2POHY797.png

生成的rpm包位于/usr/src/centos/rpmbuild/RPMS/x86_64/目录下

wKioL1bxY1PQ0YTBAAAdedC_s7A813.png

安装测试rpm包前查看系统是否存在

wKioL1bxY6CTRfNwAAAOYn3SQZs808.png

安装rpm包 rpm -ivh /usr/src/centos/rpmbuild/RPMS/x86_64/monitor-1.0-1.x86_64.rpm 

wKioL1bxY-fAIXqfAAAjo3X4Yx0640.png

查看rpm包安装状态,以及脚本部署以crontab任务的添加情况均成功。

wKioL1bxZCzhLLozAAAmK73qmVc493.png