%files 列出应该捆绑到 RPM 中的文档,并能够可选地配置许可权和其他信息。在 %files 中,您能够使用 辠attr 来定义缺省的许可权、任何者和组;辠attr(-,root,root) 会安装 root 用户拥有的任何文档,使用当 RPM 从构建系统捆绑他们时他们所具备的任何许可权。
能够用 %attr(permissions,user,group) 覆盖个别文档的任何者和许可权。能够在 %files 中用一行包括多个文档。能够通过在行中添加 %doc 或 %config 来标记文档。%doc 告诉 RPM 这是个文档文档,因此假如用户安装软件包时使用 --excludedocs,将不安装该文档。您也能够在 %doc 下不带路径列出文档名,RPM 会在构建目录下查找这些文档并在 RPM 文档中包括他们,并把他们安装到 /usr/share/doc/%-%。以 %doc 的形式包括 README 和 ChangeLog 这样的文档是个好主意。
%config 告诉 RPM 这是个配置文档。在升级时,RPM 将会试图避免用 RPM 打包的缺省配置文档覆盖用户仔细修改过的配置。
注意:假如在 %files 下列出一个目录名,RPM 会包括该目录下的任何文档。通常这不是您想要的,特别对于 /bin 这样的目录。
(7) 改变日志
这一节主要描述软件的研发记录,他是使用节前缀%changlog表示的。这个段的内容是为了研发人员能周详的了解该软件的研发过程,对于包的维护极有好处。
如何创建一个RPM包:
假如我们需要对RPM包作修改,那么我们首先需要将源码包取来,比如我们要修改内核,那么我们能够从网上或光盘中取到内核的源代码RPM包,如kernel-2.6.5-1.358.src.rpm,将源码包解开:rpm -i kernel-2. 6.5-1.358.src.rpm,则该RPM中的内容将存放在目录/usr/src/redhat/SOURCES和/usr/src/redhat/SPEC目录中,前者存放的是源码、补丁连同一些配置文档等,后者存放的是包对应的spec文档,如kernel-2.6.spec,现在您就能够对内核进行修改。假定我们想另外再对内核打一个补丁,比如说:mypatch-2.6.5.patch,您需要将这个补丁文档复制到/usr/src/redhat/SOURCES/目录下,然后编辑kernel-2.6.spec文档。您需要先在定义补丁文档的最后加入对您补丁文档的初始定义,如:
…………
Patch10000: linux-2.6.0-compile.patch
# Patch10010: linux-2.6.0-module-license.patch
Patch10030: mypatch-2.6.5.patch /*新加入的补丁文档的定义*/
# END OF PATCH DEFINITIONS
…………
然后在文档的后面加入对内核打补丁命令:
…………
%patch10000 -p1
%patch10030 -p1 /*新加入的打补丁命令*/
# END OF PATCH APPLICATIONS
…………
假如您还想对内核做其他的修改,您能够修改相应的文档或添加相应的文档,然后修改kernel-2.6.spec文档。当spec文档修改完成之后,您只需要执行 rpmbuild -ba kernel-2.6.spec 就能够生成所需要的RPM包了。另外需要注意的是,以生成内核包为例,假如我们想生成kernel-smp-2.6.5-1.358.i686.rpm包,在kernel-2.6.spec文档中包含有一些开关选项,比如,在文档的开头需要定义创建哪些内核的RPM包,如:
辠ine buildup 1
辠ine buildsmp 0
辠ine buildsource 1
在通常情况下,在执行rpmbuild -ba kernel-2.6.spec 命令后,会创建一个kernel-2.6.5-1.358.i386.rpm、kernel-source-2.6.5-1.358.i386.rpm和源码RPM包kernel-2.6.5-1.358.src.rpm。因此,当您需要创建支持SMP的内核的RPM包时,需要修改kernel-2.6.spec文档开头时的定义为:
辠ine buildup 1
辠ine buildsmp 1
辠ine buildsource 1
辠ine -target_cpu i686
此外,在文档的开头还需要定义-target_cpu 为i686,从而创建i686的内核RPM包,并且需要对/usr/lib/rpm目录下面的一些宏重新定义,比如当前目录下面的macros文档,需要重新定义arch 和build_arch为i686。最后,执行命令 rpmbuild -ba kernel-2.6.spec --with smp 就能够。当然,假如对内核进行了相应的修改,就必须生成多个内核RPM包,以适用于多个arch,如kernel-2.4.18-3-i586-smp.rpm, kernel-2.4.18-3-athlon.rpm等。
如何安装以.src.rpm结尾的源码RPM包:
这类软件包是包含了源代码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法:
方法一:
1. 执行rpm -i your-package.src.rpm
2. cd /usr/src/redhat/SPECS
3. rpmbuild -bp your-package.specs 一个和您的软件包同名的specs文档
4. cd /usr/src/redhat/BUILD/your-package/ 一个和您的软件包同名的目录
5. ./configure 这一步和编译普通的源码软件相同,能够加上参数
6. make
7. make install
方法二:
1. 执行rpm -i you-package.src.rpm
2. cd /usr/src/redhat/SPECS (前两步和方法一相同)
3. rpmbuild -bb your-package.specs 一个和您的软件包同名的specs文档
(这时,在/usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是i686,noarch等等) 在这个目录下,有一个新的rpm包,这个是编译好的二进制文档。)
4. rpm -i new-package.rpm即可安装完成。
注:rpmbuild的一些用法如下
[root@test SOURCES]# rpmbuild -ts redhat-config-cluster-1.0.7.tar.gz -ts是将.tar.gz文档转成.src.rpm包文档。
Wrote: /usr/src/redhat/SRPMS/redhat-config-cluster-1.0.7-1.src.rpm
[root@test SOURCES]# rpmbuild -tb redhat-config-cluster-1.0.7.tar.gz -tb是将.tar.gz文档转成二进制文档。生成的文档位置是/usr/src/redhat/BUILD/redhat-config-cluster-1.0.7/
[root@test SOURCES]# rpmbuild -ta redhat-config-cluster-1.0.7.tar.gz -ta是将.tar.gz文档同时转成源码包和二进制包两个文档,其中源码包生产位置是Wrote: /usr/src/redhat/SRPMS/redhat-config-cluster-1.0.7-1.src.rpm及/usr/src/redhat/RPMS/noarch/redhat-config-cluster-1.0.7-1.noarch.rpm。二进制文档位置在/usr/src/redhat/BUILD/redhat-config-cluster-1.0.7/。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



