RPM制作教程Word文件下载.docx
- 文档编号:18621660
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:24
- 大小:39.78KB
RPM制作教程Word文件下载.docx
《RPM制作教程Word文件下载.docx》由会员分享,可在线阅读,更多相关《RPM制作教程Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
21口中英文多功能编辑器。
22他主要有以下十大特点:
1.全屏幕菜单操作。
2.显示方式多样。
3.块操作丰富。
4.十
23字制表功能强大。
5.多窗口操作灵活自如。
6.文件操作功能齐全。
7.解释输出功能独具特
24色。
8.自带中文输入法(增强五笔和增强拼音),实用方便。
9.十六进制编辑功能,如虎
25添翼。
10.即时翻译,按到即译。
26总之,小赵编辑器会成为你在UNIX,LINUX系统上编制程式和书写一般性文稿的好帮手。
27他将在工作中助你一臂之力,轻松上阵,游刃有余!
28
29%prep
30echo"
预处理脚本程式(prep)开始执行"
31%setup
32
33%build
34echo"
编译连接脚本程式(build)开始执行"
35make
36
37%install
38echo"
安装脚本程式(install)开始执行"
39makeinstall
40
41%clean
42echo"
建包结束后清理脚本程式(clean)开始执行"
43
44%pre
45echo"
安装前执行脚本程式(pre)开始执行"
46
47%post
48echo"
安装后执行脚本程式(post)开始执行"
49
50%preun
51echo"
卸载前执行脚本程式(preun)开始执行"
52
53%postun
54echo"
卸载后执行脚本程式(postun)开始执行"
55
56%veryfiscript
57echo"
软件包校验脚本程式(verifyscript)开始执行"
58
59%triggerin--xiuwu
60echo"
软件包安装时触发脚本程式(triggerin)开始执行"
61
62%triggerun--yuntaishan
81-内置拼音,五笔输入法
82*FriMay011998雨亦奇
83-增加多窗口操作
84*MonMar241997雨亦奇
85-增加块操作命令
86
该描述文件包括以下几方面的内容:
一、注释行
见第1-4行。
他以#号开头,起注解作用,可帮助用户理解所写的内容,但对软件包的生成不起所有作用。
此文件中,注释行集中在文件首部。
实际上,他可位于描述文件的所有位置。
二、文件头
见第6-17行。
文件头描述软件包的基本信息,他包含若干个域,其中有必选的域,也有可选的域。
一个域占用一行,其描述格式为:
域名:
域值
注意:
域名不分大小写,并且域值不能为空。
文件头必选域有以下六个:
1.Name:
此域定义软件名。
2.Version:
此域定义版本号。
仅当软件较以前有较大改动时才增加版本号。
注:
版本号中不能含减号(-)字符。
3.Release:
此域定义释出号。
若软件较以前改动较小,则仅增加释出号,不改动版本号。
释出号中亦不能含减号(-)字符。
RPM利用上述的Name(软件名),Version(版本号),Release(释出号)及体系号来命名软件包,如本例输出的包裹文件名为lze-6.0-2.i386.rpm。
4.Summary:
此域定义软件包简介,为一句话说明。
5.Group:
此域定义软件所属类别,详见>
本例的Applications/Editors表示本软件属"
应用/编辑器"
类。
6.License:
此域定义软件适用的许可证或版权规则。
该域也可用Copyright(版权)来定义,二者同意。
许可证具体有:
GPL(通用公共许可证,免费软件适用),BSD,MIT,PublicDomain(公共域),Distributable(贡献),Commercial(商业),Share(共享)等。
文件头可选的域包括如下几类:
1.基本信息
1.1Vendor:
此域定义软件的供给商(销售商)。
1.2Distribution:
此域定义软件所属的发行版,这是软件包制作者自己的分类。
通常,一个发行版由若干个软件包构成。
如我想做一个名为“熊猫’95”的发行版,则其中每个软件包(如竹叶95)的描述文件都应有这么一行:
Distribution:
熊猫’95
1.3Icon:
此域指定软件包所用的图标文件名。
此文件为GIF或XPM格式,必须存放在RPM的%_sourcedir(源码目录)宏所指示目录下,默认为/usr/src/dist/SOURCES。
RPM本身并不使用图标,但他将图标文件内容存贮到包裹文件中,安装时亦存贮到RPM数据库中。
此图标可被图像界面的RPM包管理工具使用,用以改善界面效果,增加可视性。
如下例指示软件包使用panda.xpm作为图标:
Icon:
panda.xpm
1.4Packager:
此域定义打包者,亦即建立此软件包的人或公司。
书写格式是:
打包者的名字
请参考描述文件第13行。
1.5Serial:
此域定义软件序列号,也可使用域名Epoch。
软件序列号为一整数,由打包者指定,他应随着版本号的增加而不断增加,并且始终保持数值的唯一。
软件序列号可被用来说明软件包之间的依赖关系。
下例指定软件包序列号为4:
Serial:
4
或用:
Epoch:
1.6URL:
此域定义包含打包软件有关信息的网页地址。
如:
URL:
2.依赖相关
依赖是RPM用来描述软件包之间关系的。
一个软件包依赖的东西RPM称作功能,他能是真实存在的软件包,也能是虚拟的软件包(虚包)。
虚包没有版本号。
依赖相关的域有:
2.1Provides:
此域定义软件包提供的功能,可重复多行。
其描述格式为:
Provides:
功能1[,功能2]...
[]所括为可选项,多个功能之间以逗号或空格分隔。
软件包所提供的功能一般是以虚包形式存在的共享库。
当有多个软件包均提供相同的服务时,常用虚包来表示其服务。
如,一个邮件客户端软件允许用户使用不同的看信方式(文本形式,HTML形式等),能需求所有一个看信程式必须提供mail-reader虚包。
这样,看信程式的描述文件应有这么一行:
mail-reader
如此他才能被邮件客户端使用。
2.2Requires:
此域定义软件包所需的功能,可重复多行。
Requires:
功能1[比较符1[序列号1:
]版本号1[-释出号1]][,功能2[比较符2[序列号2:
]版本号2[-释出号2]]]...
其中:
*[]所括为可选项;
*比较符可使用(大于),=(等于),>
=(大于等于)或=3.0,ccc
Conflicts:
=(大于等于)或=3.0
本例阐明生成的包冲突的功能有:
(1)当系统中xxx包版本等于序列号为1且版本号为2.0时;
(2)当系统中yyy包版本大于等于3.0时。
***依赖关系的自动实现***
一般情况下,当RPM建立一个软件包时,他要执行/usr/lib/rpm目录下的两个小程式。
一个是find-requires,用于查找软件包所需的共享库,这些库将以虚包的形式加入到该软件包所需的功能(Requires)之中。
另一个是find-provides,他用于查找软件包所提供的共享库,这些库将以虚包的形式加入到该软件包所提供的功能(Provides)之中。
这两个程式都是SHELL程式,代码量虽小,但确实帮了软件包制作者一个大忙--不必劳心费神地自己写这样的依赖关系了,因为程式均自动完成了。
下面三个域用于指示RPM是否执行这两个程式。
2.4Autoreq:
此域用于指示RPM是否自动查找软件所需的共享库。
仅当域值为no或0时,RPM不执行find-requires程式,否则均执行该程式。
2.5Autoprov:
此域用于指示RPM是否自动查找软件提供的共享库。
仅当域值为no或0时,RPM不执行find-provides程式,否则均执行该程式。
2.6Autoreqprov:
此域用于指示RPM是否自动查找软件所需的共享库和其提供的共享库。
仅当域值为no
或0时,RPM不执行find-requires和find-provides两个程式。
此域相当于同时设定Autoreq
和Autoprov域值为指定之值。
上述三个域在描述文件中,他们之间因为顺序的不同而结果会有所不同,一般以最后一个为准。
Autoreq:
yes
Autoreqprov:
no
Autoprov:
本例虽然第一行允许执行find-requires,但第二行又不允许find-requires和find-provides两个程式运行,而第三行允许find-provides运行,所以依照执行顺序,结果为不允许执行find-requires,而允许执行find-provides。
又如:
本例的结果为允许执行find-requires,而不允许执行find-provides。
3.系统相关
RPM制作软件包时,能为其指定适用的CPU体系或操作系统,也可为其指定不适用的CPU体系或操作系统,这样,当RPM发现当前的CPU体系或操作系统和软件包需求的不兼容时,将中止软件包的制作。
RPM默认的当前CPU体系由宏%_arch定义,一般为i386。
RPM默认的当前操作系统由宏%_os定义,一般为linux。
读者能通过查看/usr/lib/rpm/macros宏定义文件得到。
下面四个域说明软件包的适用范围:
3.1Excludearch:
此域定义软件包不适用的体系。
RPM可选的体系名请参见/usr/lib/rpm/rpmrc文件中的arch_canon项目。
软件包不适用于某个体系,可能有两方面的原因。
一是该软件还没有移植到所定义的体系上;
二是该软件含有特定的机器码(汇编语言),他和别的体系不兼容。
此域描述格式为:
Excludearch:
体系1[体系2]...
[]所括为可选项,各体系之间以空格分隔。
如果当前体系在此域值之中,则RPM制作软件包时将报错退出,请看下面的例子。
在lze-6.0-2.spec文件头部分加入一行:
i386
再运行建包命令rpm-bb(>
将讲到):
#rpm-bblze-6.0-2.spec
Architectureisexcluded:
i386
#
由上看出,RPM提示了“体系不适用:
i386”的错误。
3.2Exclusivearch:
此域定义软件包适用的体系。
其描述格式和Excludearch类似:
Exclusivearch:
如果在lze-6.0-2.spec文件头加入一行:
i386sparc
再运行建包命令将会怎么样:
Executing:
%prep
预处理脚本程式(prep)开始执行
%build
编译连接脚本程式(build)开始执行
%install
安装脚本程式(install)开始执行
Processingfiles:
FindingProvides:
(using/usr/lib/rpm/find-provides)...
FindingRequires:
(using/usr/lib/rpm/find-requires)...
Provides:
PreReq:
Requires:
/bin/shld-linux.so.2libc.so.6libc.so.6(GLIBC_2.0)libc.so.6(GLIBC_2.1)
Wrote:
/usr/src/dist/RPMS/i386/lze-6.0-2.i386.rpm
看,此次建包(lze-6.0-2.i386.rpm)成功了,因为当前的体系(i386)正好适用。
3.3Excludeos:
此域定义软件包不适用的操作系统。
RPM可选的操作系统请参考文件/usr/lib/rpm/rpmrc中的os_canon项目。
Excludeos:
操作系统1[操作系统2]...
[]为可选项,操作系统之间以空格分隔。
例如:
irixaixsolaris
如将此行加入到lze的描述文件中,则他会指示RPM不在irix,aix,solaris这三个操作系统上建立lze软件包。
如果当前操作系统是三者之一,则RPM会报错并中止软件包的制作。
OSisexcluded:
Solaris
3.4Exclusiveos:
此域定义软件包适用的操作系统。
Exclusiveos:
操作系统1[操作系统2]...
linuxsolaris
4.目录相关
4.1Prefix:
此域定义可重定位的目录前缀,可在描述文件中书写多次。
Prefix:
目录前缀1[目录前缀2]...
[]为可选项,各目录前缀之间均以空格分隔。
/usr/etc
他也可写作:
/etc
RPM利用可重定位的目录前缀,实现了软件包的重定位安装,使软件中的文件不必固定在某个绝对位置,这种做法非常好。
LZE软件包描术文件lze-6.0-2.spec中就定义了一个可重定位的前缀/usr(见第15行),这样,安装时就可将该包中在/usr目录下的文件重定位到用户指定的目录,如:
#rpm-i--prefix/tmplze-6.0-2.i386.rpm
或:
#rpm-i--relocate/usr=/tmplze-6.0-2.i386.rpm
#
此命令安装lze包,将其中含/usr重定位目录前缀的文件定位到/tmp目录。
如包中
的/usr/bin/lze文件安装后,因重定位而成了/tmp/bin/lze。
(RPM安装命令使用方法请参考>
)
4.2Buildroot:
此域定义的是软件包所包含的文件共有的根目录,此根目录仅供RPM建立软件包时使用。
即当RPM建立软件包时,将设定此目录为根(调用chroot函数),提取所需文件,生成软件包。
当Buildroot设定为/tmp时,对于LZE包描述文件中所包含的/usr/bin/lze文件,RPM实际打包的则是/tmp/usr/bin/lze,但对生成的包查询后能发现:
原文件名并未改动,还是/usr/bin/lze。
如此说来,这就非常有意思了。
一般用户通过设定Buildroot,也能象终极用户(root)那样自由地建立各种各样的软件包了,即使包中有那些唯有终极用户才能操作的目录或文件。
安装这样的包和安装由终极用户建立的包,是没有什么分别的。
此域的描述格式非常简单:
Buildroot:
目录
如,上例可定义为:
/tmp
5.源码相关
下列四个域均是为制作源码包而设计的。
源码包里有什么?
用户能通过查询包的文件列表得到,命令是“rpm-qpl源码包文件”(请参阅>
有关内容)。
一般情况下,源码包里有这么四类文件:
一是程式源码(SOURCE),二是源码补丁(PATCH),三是软件包描述文件,四是图标文件(ICON)。
通过安装源码包,用户能轻松地实现现场编译、连接和应用,同时更方便了软件研发者和软件包制作者:
他们维护程式容易了,并且维护过后能非常快地生成执行代码包和源码包。
这,也是所有人钟爱RPM的重要原因之一。
5.1Source:
此域定义RPM打包时要包含的程式源码文件。
这些文件一般先用tar命令打包,然后再用gzip压缩。
一个描述文件中可包含多个Source域,当有多个这样的域时,需要进行编号:
第1个编为Source0(也可直接用Source),第2个编为Source1,第3个编为Source2等等。
此域的描述格式为:
Source[编号]:
源码文件
[]所括为可选项。
具体用法如:
Source0:
lze-6.0-2.tar.gz
Source1:
lzeime-wb-6.0-2.tar.gz
Source2:
lzeime-py-6.0-2.tar.gz
Source3:
lze-lib-6.0-2.tar.gz
此域域值能采用URL(统一资源定位)的形式,如LZE描述文件第14行。
采用这种形式,主要是给其他用户提供该源码的位置信息。
在RPM制作源包时,他提取的是最后的文件名lze-6.0-2.tar.gz,而不是
5.2NoSource:
在上例中,如果在打包时不想包含Source1和Source2定义的文件,那该怎么办?
办法之一是将其所在行删除掉;
办法之二是将其所在行注释掉(即所在行前面加#号);
办法之三就是定义Nosource域,此域可重复。
NoSource:
源码域编号
本例可写作:
1
其中的1和2为编号,表示Source1和Source2。
如果软件包描述文件中没有NoSource域,则RPM生成的源码包名字格式为"
软件名-版本号-释出号.src.rpm"
。
如果使用了NoSource域,则RPM生成的源码包名字格式为"
软件名-版本号-释出号.nosrc.rpm"
(单从名字就可看出源码包包含的文件不完整)。
5.3Patch:
Patch的本义是补丁,用在这里指的是源程式的补丁,他是用diff命令比较新老源程式所产生的输出(命令为“diff-Nur旧文件新文件>
补丁文件”),而系统中的patch命令又可利用此输出将老版本的源程式升级为新版本。
此域定义RPM制作源码包时所要包含的补丁文件,该文件的命名建议用"
软件名-版本号.补丁功能.patch"
的格式。
一个软件包描述文件中可有多个Patch域,当有多个这样的域时,也需要象Source域那样进行编号(注:
第1个域编为Patch0,也可省略0,用Patch)。
Patch[编号]:
源码补丁文件
Patch0:
blather-4.5-bugfix.patch
Patch1:
blather-4.5-config.patch
Patch2:
blather-4.5-somethingelse.patch
此域的域值也能象Source域相同,采用URL的形式,RPM仅提取其中的文件名供其使用。
5.4NoPatch:
此域的功能类似NoSource,其定义的编号对应的补丁文件RPM不作打包处理。
此域在描述文件中可重复出现。
如上例,若不想让源码包包含Patch0和Patch2域所指示的补丁文件,则可在描述文件写上这么两行:
NoPatch:
0
如果软件包描述文件中没有NoPatch域,则RPM生成的源码包名字格式为"
如果使用了NoPatch域,则RPM生成的源码包名字格式为"
三、功能段
见第19-86(即文件头以下的部分)。
何谓功能段?
能这么说,功能段是描述软件包的重要数据和操作指令的段落,他包括段名和段内容两部分。
没有功能段,RPM便制作不出所有包裹文件。
功能段的段名都是以百分号(%)开始的,占用一行。
功能段的段内容范围是这样界定的:
他从该功能段段名下一行开始到下一个功能段段名的前一行或到描述文件结束。
如LZE描述文件,%description段是从第19行到第28行(%prep段从第29行开始),第19行为段名,第20-28行为段内容。
而%prep段是从第29行到第32行(第33行%build段开始),其段名在第29行,段内容在第30-32行。
另外要注意的是,各个功能段的位置是自由的,可放在文件头以下的所有位置,不必拘泥某一固定位置。
必选的功能段
描述文件中,必选的功能段有:
1.%description
本段是描述段,段的内容是对软件包进行较为周详的介绍,不象文件头的Summary域仅用一句话说明。
介绍的文本形式自由,可任意换行,不受限制。
具体请参见LZE描述文件第20-27行。
本段段名描述格式是:
%description[子包选项]
其中,子包选项的格式为:
[-n]子包名
注
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RPM 制作 教程