2025年3月26日 星期三 甲辰(龙)年 月廿五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 系统应用 > Linux

Linux rpm包制作

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

普通用户情况下,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
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐