spec文件是整个RPM包建立过程的中心,它的作用就如同编译程序时的Makefile文件。

1.Spec文件參数

spec文件包括建立一个RPM包必需的信息,包括哪些文件是包的一部分以及它们安装在哪个文件夹下。这个文件一般分为例如以下的几节:

(1) Preamle(序言)

序言包括用户请求包的信息时所显示的内容。它能够包括包的功能描写叙述、包的软件版本号、版权信息和所属的包组等。Summary 是一行关于该软件包的描写叙述,Name 是该软件包的基名,Version 是该软件的版本号号,Release 是 RPM 本身的版本号号,假设修复了 spec 文件里的一个错误并公布了该软件同一版本号的新 RPM,就应该添加发行版号。License 应该给出一些许可术语(如:"GPL"、"Commercial"、"Shareware"),Group 标识软件类型。那些试图帮助人们管理 RPM 的程序通常依照组列出 RPM。您能够在usr/share/doc/rpm-4.0.4/GROUPS 文件看到一个 Red Hat 使用的组列表(如果您安装的 RPM 版本号是 4.0.4)。可是您还能够使用那些组名以外的名称。Source0、Source1等等给这些源文件命名(通常为 tar.gz 文件)。%{name} 和 %{version} 是 RPM 宏,它们扩展成为头中定义的 rpm 名称和版本号。

要注意的是,你不要在 Source 语句中包括不论什么路径。缺省情况下,RPM 会在 /usr/src/redhat/SOURCES 中寻找文件,请将您的源文件复制或链接到那里。(要使 spec 文件尽量可移植的话,应当尽量避免嵌入自己开发机器上的假想路径。其它开发者就能够指示 RPM 在别的文件夹下查找源文件,而不用改动您的 spec 文件。)

接下来的部分从 %description 行開始。您应该在这里提供该软件很多其它的描写叙述,这样不论什么人使用 rpm -qi 查询您的软件包时都能够看到它。您能够解释这个软件包做什么,描写叙述不论什么警告或附加的配置指令,等等。

(2) Prep节

Prep 节进行实际的打包准备工作,它是使用节前缀%prep表示的。一般而言,这一节的主要工作是检查标签语法是否正确,删除旧的软件源程序,对包括源程序的 tar文件进行解码。假设包括补丁(patch)文件,将补丁文件应用到解开的源代码中。它一般包括%setup与%patch两个命令。%setup用于将软件源代码包解开,运行%patch可将补丁文件增加解开的源程序中。

%setup
-n newdir---------将压缩的软件源程序在newdir文件夹下解开。
-c ---------------在解开源程序之前先创建文件夹。
-b num------------在包括多个源程序时,将第num个源程序解压缩。
-T----------------不使用缺省的解压缩操作。

比如:

%setup -T -b 0
/*解开第一个源程序文件。*/
%setup -c -n newdir
/*创建文件夹newdir,并在此文件夹之下解开源程序。*/
%patch
%patchN-------这里N是数字,表示使用第N个补丁文件,等价于%patch -P N
-p0-----------指定使用第一个补丁文件,-p1指定使用第二个补丁文件。 -s------------在使用补丁时,不显示不论什么信息。
-b name-------在增加补丁文件之前,将源文件名称上增加name。若为指定此參数,则缺省源文件增加.orig。
-T------------将全部打补丁时产生的输出文件删除。

(3) Build节

这一节主要用于编译源代码,它是使用节前缀%build表示的。这一节一般由多个make命令组成。

(4) Install节

这一节主要用于完毕实际安装软件必须运行的命令,它是使用节前缀%install表示的。这一节通常是由make install指令构成,可是有时也会包括cp、mv、install等指令。

这一节还能指定在用户安装的系统上,包安装时执行的脚本。这种脚本称为安装(卸载)脚本。它能够指定包安装前、包安装后、包除去前、包除去后的系统必须执行的外壳程序段。在用户安装的系统上,为了验证一个包是否已经安装成功的验证脚本也可由这一节指定。

(5) Clean节

这一节所描写叙述的内容表示在完毕包建立的工作之后,自己主动运行此节下的脚本进行附加的清除工作,它是使用节前缀%clean表示的。一般而言,这一节的内容是简单地使用rm -rf $RPM_BUILD_ROOT命令,不须要指定此节的其他内容。

(6) 文件列表

这一节指定构成包的文件的列表,它是使用节前缀%files表示的。此外,它还包括一系列宏控制安装后的文件属性和配置信息。

%files 列出应该捆绑到 RPM 中的文件,并可以可选地设置许可权和其他信息。在 %files 中,您可以使用 %defattr 来定义缺省的许可权、全部者和组;%defattr(-,root,root) 会安装 root 用户拥有的全部文件,使用当 RPM 从构建系统捆绑它们时它们所具有的不论什么许可权。

能够用 %attr(permissions,user,group) 覆盖个别文件的全部者和许可权。能够在 %files 中用一行包含多个文件。能够通过在行中加入 %doc 或 %config 来标记文件。%doc 告诉 RPM 这是一个文档文件,因此假设用户安装软件包时使用 --excludedocs,将不安装该文件。您也能够在 %doc 下不带路径列出文件名称,RPM 会在构建文件夹下查找这些文件并在 RPM 文件里包含它们,并把它们安装到 /usr/share/doc/%{name}-%{version}。以 %doc 的形式包含 README 和 ChangeLog 这种文件是个好主意。

%config 告诉 RPM 这是一个配置文件。在升级时,RPM 将会试图避免用 RPM 打包的缺省配置文件覆盖用户细致改动过的配置。

注意:假设在 %files 下列出一个文件夹名,RPM 会包含该文件夹下的全部文件。通常这不是您想要的,特别对于 /bin 这种文件夹。

(7) 修改日志

这一节主要描写叙述软件的开发记录,它是使用节前缀%changlog表示的。这个段的内容是为了开发者能具体的了解该软件的开发过程,对于包的维护极有优点。

2.Spec文件演示样例与解说

Name: ao_redpacket(CPM名称)
Version: 1(CPM版本号)
Release: 5(RPM 本身的版本号号)
License: Commercial(授权)
Group: commodity(软件类型)
Summary: the main AO  module of commodity on basic platform(描写叙述)
Vendor: Tencent(公司)
Packager: timmyye(公布人)
Prefix: /usr/local(前缀路径)
Provides: ao_redpacket(提供)
Requires: platform.framework public_scripts(需求)
Buildroot: /data/htdocs/rpm.paipaioa.com/rpm/data_32/rpm_build/commodity/ao_redpacket_1/build_directory(编译路径)%description(描写叙述)
the main AO  module of commodity on basic platform%files(安装后的文件属性和配置信息)
%defattr (-,appadmin,users)(缺省的许可权、全部者和组)
%config /usr/local/c2csvc/svc/ao_redpacket/etc/*
%dir /usr/local/c2csvc/svc/ao_redpacket
%dir /usr/local/c2csvc/svc/ao_redpacket/etc
/usr/local/c2csvc/svc/ao_redpacket/bin
/usr/local/c2csvc/svc/ao_redpacket/no_itil
/usr/local/c2csvc/svc/ao_redpacket/so
/usr/local/c2csvc/so/ao_redpacket.so
/data/applog/ao_redpacket
/usr/local/c2csvc/svc/ao_redpacket/restart_itilid%pre

转载于:https://www.cnblogs.com/mfrbuaa/p/4175219.html

RPM安装包-Spec文件參数具体解释与演示样例分析相关推荐

  1. 制作 mysql的rpm文件_自制mysql.rpm安装包

    RPM安装比源码更快更方便,更利于统一版本,省去了繁琐的编译过程,下面以制作mysql的rpm安装包为例. 编译环境 1. 安装rpm-build: 检查是否配置rpm环境 1 # sudo yum ...

  2. mysql rpm包_自制mysql.rpm安装包

    RPM安装比源码更快更方便,更利于统一版本,省去了繁琐的编译过程,下面以制作mysql的rpm安装包为例. 编译环境 1. 安装rpm-build: 检查是否配置rpm环境 1 # sudo yum ...

  3. RPM包rpmbuild SPEC文件深度说明

    关键字 spec脚本包括很多关键字,主要有: 引用 Name: 软件包的名称,后面可使用%{name}的方式引用 Summary: 软件包的内容概要 Version: 软件的实际版本号,例如:1.0. ...

  4. rpmbuild 制作 rpm 安装包 (一)

    1.安装 rpmbuild sudo yum install -y rpm-build rpmdevtools 2.创建工作目录 rpmdev-setuptree (假设当前用户名为 rpmtt) 该 ...

  5. 教你学会制作rpm安装包

    一.RPM制作步骤 我们在企业中有的软件基本都是编译的,我们每次安装都得编译,那怎么办呢?那就根据我们的需求制作RPM安装包吧.先来说说基本布骤: 1.Planning what you want   ...

  6. cmake 版本 arm_在 ARM 架构服务器上编译 Greenplum6并制作rpm安装包

    Greenplum 是一款开源MPP数据分析平台,提供包括数据分析.机器学习和人工智能等特色功能.目前 Greenplum 的二进制发行版本只能运行在 X86 服务器.github上的Greenplu ...

  7. zstd安装_在ARM架构服务器上编译Greenplum6并制作rpm安装包

    刘雪柏 诺基亚东软通信有限公司 高级软件工程师从事数据库相关工作aiden.liu@qq.com Greenplum 是一款开源MPP数据分析平台,提供包括数据分析.机器学习和人工智能等特色功能.目前 ...

  8. linux qt make文件或目录,rpm,linux_为Qt程序制作rpm包的spec文件里的路径问题,rpm,linux,qt,rpmbuild,spec - phpStudy...

    为Qt程序制作rpm包的spec文件里的路径问题 我对Qt和rpm都不怎么熟悉,所以在为Qt程序制作rpm包的时候被路径问题纠结到了. Qt的.pro文件的相关部分是这么写的,其中AppName是我的 ...

  9. Elasticsearch:使用 RPM 安装包来安装 Elastic Stack 8.x

    在我之前的文章 "Elasticsearch: 使用 Debian 安装包来安装 Elasticsearch 8.x",我详述了如何使用 RPM 安装包来安装 Elasticsea ...

最新文章

  1. SketchUp Pro 2021基础入门学习视频教程
  2. 智能车竞赛技术报告 | 智能车视觉 - 温州大学- 春华秋实
  3. 【操作】Nuxt.js安装
  4. IDEA中常用快捷键整理及重置快捷键
  5. 第三次学JAVA再学不好就吃翔(part104)--flush和close
  6. android 注解点击事件,android click事件注解
  7. 在 Delphi 下使用 DirectSound (14): 测试镶边效果器 IDirectSoundFXFlanger8
  8. Error starting userland proxy: listen tcp 0.0.0.0:8080: bind: address already in use.
  9. Vue 自定义按键修饰符对应表
  10. 【Flink】Flink 周期性 watermark 的 传播 AssignerWithPeriodicWatermarks
  11. python画蜡烛致敬烈士_Python量化交易-绘制蜡烛图 !这个图不像你的钱哦!
  12. vue+ 高德地图 热力图
  13. 企业版微信公众号从零开始之二(申请认证流程)
  14. 模式识别与智能系统和计算机视觉,模式识别与智能系统(论文).docx
  15. UI 手势 点击
  16. 解决ListView显示不全、滑动冲突问题
  17. Tungsten Fabric知识库丨关于OpenStack、K8s、CentOS安装问题的补充
  18. 如何利用阿里云市场购买并使用短信服务
  19. CAD图纸无法复制粘贴该怎么办?
  20. esp8266连接mqtt服务器

热门文章

  1. Laravel学习笔记(四)数据库 数据库迁移案例
  2. ArcGIS Desktop开发基础(转)
  3. 五种成功创业模式让你轻松赚到钱
  4. USB 2.0高速和全速的区别
  5. cadence 添加自己设计的pad方法
  6. 同方自主可控系统服务器,自主可控 同方超强TR1210服务器!
  7. 不分大小写的Strstr
  8. AI圈内卷?天池团聚请来专家集体“问诊”
  9. 5G给边缘计算带来了什么?
  10. 资深美术师:3A转手游研发需要注意的方法