RPM打包

经常需要把一些脚本打包到rpm包中去,安装rpm后能把脚本复制到指定位置。

这个东西写完就忘了,在这里记一下
在rhel5里SPECS和SOURCES目录在/usr/src/redhat/下,rhel6里需要自己创建。

yum -y install rpm-build

mkdir -p /root/rpmbuilder/{SPECS,SOURCES}

把源码包放到SOURCES目录里,在SPECS里建立一个.spec文件。
例如:



Name:   hpcweb

Version:        1.0

Release:        1

Summary:this is a hpcweb test rpm!          #这些是这个rpm包的信息,rpm -qi hpcweb 可以查看到



Group:  CSVT

License:GPL

URL:    http://www.csvt.net

Source0: %{name}-%{version}.tar.gz          #这里必须要源码包名字匹配,例如:hpcweb-1.0.tar.gz

BuildRoot:      /var/tmp/%{name}-buildroot  #安装或编译的临时目录



%description                                #rpm包描述信息

Installs /etc/init.d/

Installs /usr/sbin/



%prep                                       #预处理脚本,建立软件所需要的目录

%setup -q -n %{name}-%{version}



%build                                      #开始构建一个包

echo OK!



%install                                    #类似make install的意思

rm -rf $RPM_BUILD_ROOT

mkdir -p $RPM_BUILD_ROOT/hpcweb             #建立/root//BUILDROOT/hpcweb

install -m 755 %{SOURCE0} $RPM_BUILD_ROOT/hpcweb # %{SOURCE0}等于源码包,就是把源码包解压到/root//BUILDROOT/hpcweb/下。



%clean                                      #清理临时文件

[ "$PRM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT



%post                                       #定义安装完包所执行的命令

cd /hpcweb

tar zxvf hpcweb-1.0.tar.gz

cp hpcweb-1.0/init.d/* /etc/init.d/

cp hpcweb-1.0/sbin/* /usr/sbin/

mkdir /etc/hpcweb/

cp hpcweb-1.0/conf/* /etc/hpcweb/

for i in nodedatacollect  nodedataredis  pym_client  pym_server  webredis; do mkdir /var/run/$i > /dev/null 2>&1; mkdir /var/lock/$i > /dev/null 2>&1; done



%preun                                      #卸载rpm包后相应的操作



for i in nodedatacollect  nodedataredis  pym_client  pym_server  webredis; do rm -fr /var/run/$i; rm -fr /var/lock/$i; rm -f /etc/init.d/$i; rm -f /usr/sbin/$i; rm -fr /etc/hpcweb/;done



%files                                      #定义哪些文件或目录会放入rpm包中

%defattr(-,root,root,-)

%dir /hpcweb/*                              #把/hpcweb/放入到了rpm中

%doc



%changelog

生成rpm包

rpmbuild -ba /root/rpmbuild/SPECS/hpcweb.spec

生成的rpm包在/root/rpmbuild/RPMS/中

你可能感兴趣的:(rpm)