rpm的制作工具rpmbuild,软件包名rpm-build,这里以CentOS6.7系统为例来讲解。如果系统未安装,则配置yum源后安装即可 yum install rpm-build -y 。
rpmbuild制作rpm包的目录topdir使用配置文件macrofiles来配置, /usr/lib/rpm/macros,/usr/lib/rpm/macros.* ,~/.rpmacros 文件。
可查询默认topdir路径为各用户家目录下rpmbuild目录
也可以使用命令查询:
CentOS/RHEL5:rpmbuild --showrc | grep macrofiles
CentOS/RHEL6:rpmbuild --showrc | grep topdir
也可以自定义topdir目录,比如这里我们定义到 /usr/src/centos/rpmbuild ,创建文件~./rpmmacros,加入 %_topdir /usr/src/centos/rpmbuild
查看topdir目录已经变成我们自定义的目录了
创建topdir目录与rpmbuild需要的目录
mkdir -p /usr/src/centos/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
按照实际的需求编写相关文件,如这里实现安装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
创建目录,拷贝脚本文件并加上执行权限。
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/*
目录文件结构如下:
执行命令生成rpm包 rpmbuild -bb /usr/src/centos/rpmbuild/SPECS/monitor.spec
生成的rpm包位于/usr/src/centos/rpmbuild/RPMS/x86_64/目录下
安装测试rpm包前查看系统是否存在
安装rpm包 rpm -ivh /usr/src/centos/rpmbuild/RPMS/x86_64/monitor-1.0-1.x86_64.rpm
查看rpm包安装状态,以及脚本部署以crontab任务的添加情况均成功。