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