您当前的位置:首页 > 计算机 > 系统应用 > Linux

Linux rpm包制作

时间:09-29来源:作者:点击数:

普通用户情况下,rpm制作步骤如下:

配置

创建所需目录

$ mkdir ~/rpmbuild
$ cd ~/rpmbuild
$ mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
mkdir: 已创建目录 "BUILD"
mkdir: 已创建目录 "BUILDROOT"
mkdir: 已创建目录 "RPMS"
mkdir: 已创建目录 "SOURCES"
mkdir: 已创建目录 "SPECS"
mkdir: 已创建目录 "SRPMS

拷贝要打包的源码到SOURCES目录

$ cp orange.tar.gz ~/rmpbuild/SOURCES/

创建spec文件

$ cd SPECS/
$ vim orange-agent.spec

spec文件内容如下:

Name:       orange      
Version:    0.2.1
Release:    1%{?dist}
Summary:    orange agent rpm    

Group:      System Environment/Daemons
License:    GPL
Source0:    %{name}.tar.gz


%description
It is a rpm package of orange-agent.

#编译之前执行的操作(执行时当前目录是BUILD),例如解压源码,创建所需目录等,一般会直接使用%setup -q ,但特殊需要,可以自己编写,如下:
%prep
/bin/rm -rf orange
mkdir -p orange
cd orange
tar zxf %{_topdir}/SOURCES/%{name}.tar.gz -C ./


# 编译时执行的操作(执行时当前目录是BUILDROOT)
%build
cd orange/%{name}
make %{?_smp_mflags}

# 将编译后的文件放到打包目录BUILDROOT
%install

mkdir -p %{buildroot}/data/servers/orange/agent/bin
mkdir -p %{buildroot}/data/servers/orange/agent/config
mkdir -p %{buildroot}/data/servers/orange/agent/logs

cp ${RPM_BUILD_DIR}/%{name}/bin/agent/orange-agent %{buildroot}/data/servers/orange/agent/bin

cp ${RPM_BUILD_DIR}/%{name}/config/agent.json %{buildroot}/data/servers/orange/agent/config/cfg.json

cp ${RPM_BUILD_DIR}/%{name}/open-orange %{buildroot}/data/servers/orange/

# rpm包安装后执行的操作,例如拉起应用等等
%post
/data/servers/orange/open-orange start


# 卸载前执行的操作
%preun
if [ "$1" == 0 ];then
    /data/servers/orange/open-orange stop agent > /dev/null 2>&1
fi

# 卸载后执行的操作
%postun
if [ "$1" == 0 ];then
    /bin/rm -rf /data/servers/orange/agent
fi


%clean
rm -rf $RPM_BUILD_ROOT

# 指定哪些文件打包的rpm中
%files
%defattr(-,admin,admin,-)
/data/servers/orange/*

%changelog

其中,几个宏定义如下:

$ rpmbuild --showrc | grep topdir
-14: _builddir  %{_topdir}/BUILD
-14: _buildrootdir  %{_topdir}/BUILDROOT
-14: _rpmdir    %{_topdir}/RPMS
-14: _sourcedir %{_topdir}/SOURCES
-14: _specdir   %{_topdir}/SPECS
-14: _srcrpmdir %{_topdir}/SRPMS
-14: _topdir    %{getenv:HOME}/rpmbuild

另外,

RPM_BUILD_DIR等同于_builddir;

而buildroot不等同于_buildrootdir::

%{_buildrootdir}

~/rpmbuild/BUILDROOT

%{buildroot}

~/rpmbuild/BUILDROOT/orange-0.2.1-1.el6.x86_64

制作rpm

cd /home/admin/rpmbuild
$ rpmbuild -ba SPECS/orange-agent.spec

打包的rpm文件在RPMS目录下

rpm包的名称为:

name-version-release.dist.arch.rpm

例如

orange-0.2.1-1.el6.x86_64.rpm

测试

安装

$ rpm -ivh   orange-agent.rpm

卸载

$ rpm –e  orange-agent
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐