Centos RPM Build Shell SPEC FILE INSTRUCTIONS
一、概述
Rpm包制作最重要的就是编写.spec脚本。rpm建包的原理其实并不复杂,可以理解为按照标准的格式整理一些信息,包括:软件基础信息,以及安装、卸载前后执行的脚本,对源码包解压、打补丁、编译,安装路径和文件等。
实际过程中,最关键的地方,是要清楚虚拟路径的位置,以及宏的定义。
我自己的编写示例,可以单击下载:http://download.csdn.net/detail/skdkjxy/8237031
二、关键字
spec脚本包括很多关键字,主要有:
Name:
软件包的名称,后面可使用%{name}的方式引用
Summary:
软件包的内容概要
Version:
软件的实际版本号,例如:1.0.1等,后面可使用%{version}引用
Release:
发布序列号,例如:1 linuxing等,标明第几次打包,后面可使用%{release}引用
Group:
软件分组,建议使用标准分组
License:
软件授权方式,通常就是GPL或者MIT
Source:
源代码包,可以带多个用Source1、Source2等源,后面也可以用%{source1}、%{source2}引用
BuildRoot:
这个是安装或编译时使用的“虚拟目录”,考虑到多用户的环境,一般定义为:
%{_tmppath}/%{name}-%{version}-%{release}-root或
%{_tmppath}/%{name}-%{version}-%{release}-buildroot-%(%{__id_u}-n}
该参数非常重要,因为在生成rpm的过程中,执行make install时就会把软件安装到上述的路径中,在打包的时候,同样依赖“虚拟目录”为“根目录”进行操作。后面可使用$RPM_BUILD_ROOT方式引用。
URL:
软件的主页
Vendor:
发行商或打包组织的信息,例如RedFlag Co,Ltd
Disstribution:
发行版标识
Patch:
补丁源码,可使用Patch1、Patch2等标识多个补丁,使用%patch0或%{patch0}引用
Prefix:
%{_prefix}这个主要是为了解决今后安装rpm包时,并不一定把软件安装到rpm中打包的目录的情况。这样,必须在这里定义该标识,并在编写%install脚本的时候引用,才能实现rpm安装时重新指定位置的功能
Prefix:
%{_sysconfdir}这个原因和上面的一样,但由于%{_prefix}指/usr,而对于其他的文件,例如/etc下的配置文件,则需要用%{_sysconfdir}标识
Build Arch:
指编译的目标处理器架构,noarch标识不指定,但通常都是以/usr/share/doc/rpm-4.8.0/marcros中的内容为默认值
Requires:
该rpm包所依赖的软件包名称,可以用>=或<=表示大于或小于某一特定版本,例如:libpng-devel>= 1.0.20 zlib
注:“>=”号两边需用空格隔开,而不同软件名称也用空格分开还有例如PreReq、Requires(pre)、Requires(post)、Requires(preun)、Requires(postun)、BuildRequires等都是针对不同阶段的依赖指定
Provides:
指明本软件一些特定的功能,以便其他rpm识别
Packager:
打包者的信息
%description: