RPM打包过程及spec文件解释

随着Linux风靡全球,越来越多的开发者喜欢采用RPM格式来发布自己的软件包,大多数的公司文件服务器会要求项目的资材作成rpm包。那么RPM软件包是怎样制作的呢?
这篇文章就带大家了解一下RPM包作成的方法。

RPM概述

RPM全称是 Red Hat Package Manager(Red Hat包管理器)。几乎所有的 Linux 发行版本都使用这种形式的软件包管理安装、更新和卸载软件。

RPM功能

安装
rpm -i ( or --install) options file1.rpm … fileN.rpm 通过rpm -ivh可以把rpm软件包安装到系统中。
删除
rpm -e ( or --erase) options pkg1 … pkgN 如果某个软件包你再也不想使用了,那就用以上这个命令彻底的把你指定的rpm软件包清除。
升级
rpm -U ( or --upgrade) options file1.rpm … fileN.rpm 建议用-Uvh。
查询
rpm -q ( or --query) options 参数选项是-qpi。
校验
rpm -V ( or --verify, or -y) options 一般我们可用通过该命令来验证已安装软件包。
制作RPM软件包并不是一件复杂的工作,其中的关键在于编写SPEC软件包描述文件。要想制作一个rpm软件包就必须写一个软件包描述文件(SPEC)。

SPEC文件详解

#软件包的名字
Name:app_script
#软件包的版本
Version:rpmVer
#软件包release号,一般spec文件有改动的时候会改release no
Release:app_script_releaseNumber
#Summary用一句话概括该软件包尽量多的信息
Summary:shell script app server
License:Proprietary
#软件开发者名字
Vendor:xxx Co.,Ltd.
#源文件tar包
Source:app_script.tar.gz
BuildRoot:%{name}-%{version}-%{release}-root
%define userpath /opt
%define apppath /opt/app
%define binpath /opt/app/bin
%description
GitCommitID
# prep这个段是预处理段,通常用来执行一些解开源程序包的命令,为下一步的编译安装作准备。%prep和下面的%build,%install段一样,除了可以执行RPM所定义的宏命令(以%开头)以外,还可以执行SHELL命令
%prep
# 保留编译阶段生成的二进制文件
%define __strip /bin/true
%define __os_install_post %{nil}
%setup -c 
# 建立段,所要执行的命令为生成软件包服务,如make 命令
%build
echo "build exec"
#安装阶段,其中的命令在安装软件包时执行,如make install命令
%install
echo "make install"
#install -p -d -m 0755 %{buildroot}%{logpath} 
install -d %{buildroot}%{userpath}
cp -r app %{buildroot}%{userpath}
%clean
rm -rf %{buildroot}
%pre
echo "Start to install app scripts."
%post
chown app:app %{apppath}
chown -R app:app %{binpath}
chmod -R 770 %{binpath}
echo "Finish to install app scripts."
%preun
echo "Start to uninstall app scripts."
%postun
echo "Finish to uninstall app scripts."
#package file to rpm
#文件段,用于定义软件包所包含的文件,分为三类--说明文档(doc),配置文件(config)及执行程序,还可定义文件存取权限,拥有者及组别
%files
%defattr(0664,root,root,0770)
%{binpath}

rpmbuild 目录结构

使用rpmbuild工具需要建立如下目录树结构

rpmbuild
--------BUILD 用来存放打包过程中的源文件
--------BUILDROOT   
--------RPMS 生成rpm包二进制文件存放目录
--------SOURCES 存放打包时要用到的源文件和patch
--------SPECS spec文件存放目录
--------SRPMS 生成rpm格式的源文件存放目录

命令

  1. 只生成二进制格式的rpm包,生成的文件会在之前建立的RPM目录
  rpmbuild -bb xxx.spec
  1. 只生成src格式的rpm包,生成的文件会在之前建立的SRPM目录下
  rpmbuild -bs xxx.spec
  1. 只需要生成完整的源文件, 源文件存在目录BUILD下,这个命令的作用就是把tar包解开然后把所有的补丁文件合并而生成一个?MN BV?完整的具最新功能的源文件。
   rpmbuild -bp xxx.spec
  1. 完全打包, 产生以上3个过程分别生成的包。存放在相应的目录下
   rpmbuild -ba xxx.spec

软件包制作完成后可用rpm命令查询。如果不满意可以再次修改SPEC文件,重新运行以上命令产生新的RPM软件包。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 中,RPM(Red Hat Package Manager)是一种常见的软件包管理工具,可以方便地安装、升级、卸载软件包。下面是使用 RPM 打包的基本步骤: 1. 准备打包文件 将需要打包文件放在同一个目录下,并确保目录结构正确。 2. 创建 spec 文件 spec 文件RPM 打包的核心文件,它包含了软件包的相关信息,如软件名称、版本号、依赖关系等。可以使用文本编辑器创建 spec 文件,命名为 software.spec,其中 software 为软件包名称。 3. 编写 spec 文件 spec 文件格式比较复杂,需要按照规范编写。以下是一个简单的示例: ``` Name: software Version: 1.0 Release: 1 Summary: A brief summary of the software License: GPL Group: Applications/Tools Source0: software.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-root %description A detailed description of the software. %prep %setup -q %build ./configure make %install make install DESTDIR=%{buildroot} %clean rm -rf %{buildroot} %files %defattr(-,root,root,-) /usr/local/bin/software %doc README %changelog ``` 其中,Name、Version、Release、Summary、License、Group、Source0 等字段需要根据实际情况填写,%description、%files、%doc、%changelog 等字段可以根据需求添加或删除。 4. 执行 rpmbuild 命令 执行以下命令进行打包: ``` $ rpmbuild -bb software.spec ``` 其中,-bb 表示打包并构建二进制 RPM 包。如果一切顺利,RPM 包将生成在 /usr/src/redhat/RPMS 目录下。 以上是 RPM 打包的基本步骤,更多细节请参考 RPM 手册。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值