rpm本地打包之spec文件(linux)
rpm本地打包的回顾
- 在Linux之rpm本地打包中分析了rpm的常用指令、rpmbuild的常用命令以及参数的配置说明,详细情况请进入链接详细查看。接下来重点是分析spec文件。
spec文件
- 能够熟悉在以上链接中的操作命令以及配置参数的含义,管理日常的rpm软件包也就不成问题了。
- 然而,随着linux操作系统越来越流行于世界各地,越来越多的开发者更喜欢采用RPM格式来发布自己的软件包。那么RPM软件包是怎么样制作的了?对于大多数的开发者来说还是比较陌生的。
其实,制作RPM软件包并不是一件复杂的工作,其中最为关键在于编写
SPEC
软件包描述文件。要想制作一个rpm软件包就必须写一个软件包描述文件(SPEC
)。这个文件中包含了软件包的诸多信息,如软件包的名字、版本、类别、说明摘要、创建时要执行什么指令、安装时要执行什么操作、以及软件包所要包含的文件列表等等。描述文件如下:
文件头:
- 一般的spec文件头包含以下几个域:
Name:
- 软件包的名字,最终RPM软件包是用该名字与版本号,释出号及体系号来命名软件包的。
Name(example):
Name: python-django-horizon
Epoch:
- 软件包的系列,也就是软件包的体系号,表示软件包的系列
Epoch(example):
Epoch: 1
Version:
- 软件包的版本号。仅当软件包比以前有较大改变时才增加版本号。
Version(example):
Version: 4.0.2
Release:
- 软件包释出号。一般我们对该软件包做一些小的补丁的时候就应该释出号出1。
Relase(example):
Release: 4.0.2
注意: 其中
Epoch:Version:Release
表示了rpm包的新旧,优先级依次降低,打出的rpm包也是以${package}-${Version}-${Release}
命名
Summary:
- 一句话概括该软件包尽量多的信息。
Summary(example):
Summary: Django application for talking to Openstack
Group:
- 软件包所属类别,具体类别有:
Amusements/Games
(娱乐/游戏)Amusements/Graphics
(娱乐/图形)Applications/Archiving
(应用/文档)Applications/Communications
(应用/通讯)Applications/Databases
(应用/数据库)Applications/Editors
(应用/编辑器)Applications/Emulators
(应用/仿真器)Applications/Engineering
(应用/工程)Applications/File
(应用/文件)Applications/Internet
(应用/因特网)Applications/Multimedia
(应用/多媒体)Applications/Productivity
(应用/产品)Applications/Publishing
(应用/印刷)Applications/System
(应用/系统)Applications/Text
(应用/文本)Development/Debuggers
(开发/调试器)Development/Languages
(开发/语言)Development/Libraries
(开发/函数库)Development/System
(开发/系统)Development/Tools
(开发/工具)Documentation
(文档)System Environment/Base
(系统环境/基础)System Environment/Daemons
(系统环境/守护)System Environment/Kernel
(系统环境/内核)System Environment/Libraries
(系统环境/函数库)System Environment/Shells
(系统环境/接口)User Interface/Desktops
(用户界面/桌面)User Interface/X
(用户界面/X窗口)User Interface/X Hardware Support
(用户界面/X硬件支持)
Group(example):
Group: Development/Libraries
License:
- 软件包的发行许可证,也就是软件的授权方式,通常是GPL。
License(example)
# Code in horizon/horizon/utils taken from django which is BSD
License: ASL 2.0 and BSD
URL:
- rpm软件包的主页链接地址。
URL(example):
URL: http://horizon.openstack.org/
Source:
- 源程序软件包的名称。例如:
horizon-9.0.1.tar.gz
注意: Source[0-n]是rpm软件包打包时的源代码
Source(example):
Source0: https://ta