zoukankan      html  css  js  c++  java
  • 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/rpmbuild/BUILDROOT/hpcweb
    install -m 755 %{SOURCE0} $RPM_BUILD_ROOT/hpcweb # %{SOURCE0}等于源码包,就是把源码包解压到/root/rpmbuild/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/中

  • 相关阅读:
    修改input标签输入样式
    CSS3的transform 转换
    前端小知识--区分get和post请求
    JS面向对象--你真的理解闭包了吗?
    px,em,rem的区别
    傻瓜式教程--实现登录页面的验证码以及验证(VUE)
    基于RBAC权限管理的后台管理系统
    在VUE中实现打印
    关于三层架构的好文章
    RabbitMQ常用命令、管理界面
  • 原文地址:https://www.cnblogs.com/baoyiluo/p/2866095.html
Copyright © 2011-2022 走看看