RPM包制作


RPM包制作手册

RPM打包过程概述
    本文档主要描述如何构建自己的RPM软件安装包。

    从软件运行的结构来说,一个软件主要可以分为三个部分:可执行程序、配置文件和依赖库。当然还有可能会有相关文档、手册、供二次开发用的头文件以及一些实例等等。其他部分都是可选的,只有可执行文件是必须

准备RPM打包工具
1. 首先使用yum下载: yum install rpmdevtools –y
  
2. 执行 rpmdev-setuptree 会在当前用户家目录下生成rpmbuild目录  
rpmbuild/  
|-- BUILD  
|-- RPMS  
|-- SOURCES  
|-- SPECS  
`-- SRPMS  
  
制作RPM包  
1. 当rpmbuild目录建好后,将所有用于生成rpm包的源码、shell脚本、配置文件都拷贝到SOURCES目录里,注意通常情况下都压缩为*.tar.gz格式

mv opsware-agent-el6_el7.tar.gz rpmbuild/SOURCES  

2. 然后打包的关键就是SPEC文件的写法,我们可以用 rpmdev-newspec –o name-version.spec 来生成spec文件的模版,然后在模版上修改或添加即可
rpmdev-newspec -o opsware-agent.spec
*生成以下格式       
Name:        opsware-agent
Version:  
Release:     1%{?dist}    
Summary:      
License:          
URL:            
Source0:          
BuildRequires:    
Requires:         
%description  

%prep  
%setup -q  
     
%build  
%configure  
make %{?_smp_mflags}  
     
%install  
rm -rf $RPM_BUILD_ROOT  
%make_install  
       
%files  
%doc  
     
%changelog  
  
3. 编写spec文件  
     
Name:           opsware-agent **#软件包名**    
Version:        el6_el7 **#软件包发布版本**  
Release:        50.0 **#发布序号**  
Summary:        For RedHat Linux 6,7 install SA agent **#软件包的摘要信息**  
Group:          Application/Opsware **#分组**  
License:        wuhao@mbcloud.com **#授权方式**  
URL:            www.mbcloud.com **#邮箱或网站地址**
     
Source0:        %{name}-%{version}.tar.gz **#源码包的名字**  
     
%description **#软件包的详细说明**  
opsware-agent-50.0.49642.3-linux-6SERVER-X86_64  
opsware-agent-50.0.60131.0-linux-7SERVER-X86_64  
       
%prep **#准备阶段**  
cp %{_sourcedir}/opsware-agent-el6_el7.tar.gz %{_builddir}/
         
%files **#制作rpm阶段**    
%defattr(0755,root,root,-) **#给目录赋权**       
/tmp/opsware-agent/opsware-agent-el6_el7.tar.gz    
       
%install **#安装阶段**  
rm -rf %{buildroot} **#清理BUILDROOT虚拟目录**    
mkdir -p %{buildroot}/tmp/opsware-agent/     
mv opsware-agent-el6_el7.tar.gz %{buildroot}/tmp/opsware-agent/  
     
%post **#安装RPM包或升级后需要执行的操作**  
ps -ef|grep /opt/opsware/agent|grep -v grep > /dev/null 2>&1  
if [ $? = 0 ]  
then  
    echo "-----------------------------------"  
    echo "machine exits opsware agent process"  
    echo "-----------------------------------"  
    exit 1  
fi  
     
run_date=$(date +%Y%m%d%H%M%S)  
logfile=/tmp/opsware-agent/install_opsware_$run_date.log  
echo "Start SA agent install..." > $logfile  
cust_user=customeradmin  
cust_pass=customeradmin  
ips=$(ifconfig  | grep -o "addr:[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | cut -d ":" -f 2 | grep -v 127.0.0.1 | awk -F. '{print $1"."$2}' | grep -v 172. | grep -v 169. | head -1)  
if [ ! -n "$ips" ]  
then   
    ips=$(ifconfig | grep -o "inet.*[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | awk '{print $2}' | grep -v 127.0.0.1 | awk -F. '{print $1"."$2}' | grep -v 172. | grep -v 169. | head -1)  
fi  
site_ip=$(echo $ips | awk -F. '{print $1}')  
case $site_ip in  
    99)  
    policy_id=10001  
    customer_id=20001  
    ;;  
    10|12)  
    policy_id=90001  
    customer_id=150007  
    ;;  
    *)  
    echo "IP address error, please check" >> $logfile  
    exit 1  
    ;;  
esac  
case $ips in  
    99.1|99.1[2-3])  
    gw_addr="99.1.xx.xx:xxx"   
    ;;  
    99.3)  
    gw_addr="99.3.xx.xx:xxxx"  
    ;;  
    xx.[0-2]|10.12|12.[0-1])  
    gw_addr="xx.xx.xx.xxx:xx,xx.xx.xx.xxx:xx"  
    ;;  
    xx.[3-4])  
    gw_addr="xx.xx.xx.xx:xxxx,xx.x.xx.xxx:xxx"  
    ;;  
    *)  
    echo "IP address error, please check" >> $logfile  
    exit 1  
    ;;  
esac  
uname -r |grep "el7" >/dev/null && OSVERSION="el7"  
uname -r |grep "el6" >/dev/null && OSVERSION="el6"  
>     
if [ "$OSVERSION" = "el6" ]  
then  
    INSTALLERFILE="opsware-agent-50.0.49642.3-linux-6SERVER-X86_64"  
elif [ "$OSVERSION" = "el7" ]  
then  
    INSTALLERFILE="opsware-agent-50.0.60131.0-linux-7SERVER-X86_64"  
else  
    echo "ERROR: Unkown os version." >> $logfile  
    exit 1  
fi  

cd /tmp/opsware-agent  
tar -xvzf *.gz >> $logfile  
     
/tmp/opsware-agent/$INSTALLERFILE -f --force_new_device --force_full_hw_reg --opsw_gw_addr $gw_addr --software_policy $policy_id --remediate --customer_id $customer_id --username $cust_user --password $cust_pass >> $logfile  
echo "Install SA agent successful" >> $logfile  
     
%preun **#卸载安装包后需要执行的操作**  
echo "--------------------------------------------------------"  
echo "please execute /opt/opsware/agent/bin/agent_uninstall.sh"  
echo "--------------------------------------------------------"  
  
4. spec文件编写完成后,执行:**rpmbuild –bb sftp-1.0.0.spec**打包命令  
 rpmbuild -bb opsware-agent.spec
     
ls -l RPMS/x86_64/  
total 34868  
-rw-r--r-- 1 root root 35703884 Mar 20 16:00 opsware-agent-el6_el7-50.0.x86_64.rpm  


*rpm包制作完成*  
  
##SA agent Linux系统RPM安装方法  

该RPM用作在RedHat Enterprise 6/7系统(包括以RedHat为基础的CentOS)上安装SA agent. 

*安装方法:*     
 rpm -ivh opsware-agent-el6_el7-50.0.x86_64.rpm  


*卸载方法:*     
rpm -e opsware-agent-el6_el7-linux6_7.x86_64  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值