Linux rpm包制作

普通用户情况下,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

参考

rpm 制作参数说明
https://my.oschina.net/guol/blog/182310

步骤
http://laoguang.blog.51cto.com/6013350/1103628

http://changfei.blog.51cto.com/4848258/1703824

https://fedoraproject.org/wiki/How_to_create_an_RPM_package/zh-cn

mysql spec
https://www.58jb.com/html/149.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值