首页 > 代码库 > 第二十三章、软件安装: RPM, SRPM 与 YUM 功能

第二十三章、软件安装: RPM, SRPM 与 YUM 功能

SRPM 的使用 : rpmbuild

包含Source code 的 SRPM

新版的 rpm 已经将 RPM 与 SRPM 的命令分开了,SRPM 使用的是 rpmbuild 这个命令,而不是 rpm !如果你是 Red Hat 7.3 以前的用户,那么请使用 rpm 来替代 rpmbuild !


利用默认值安装 SRPM 文件 (--rebuid/--recompile)

 

--rebuild这个选项会将后面的 SRPM 进行『编译』与『打包』的动作,最后会产生 RPM 的文件,但是产生的 RPM 文件并没有安装到系统上。当你使用 --rebuild 的时候,最后通常会发现一行字体:
Wrote: /usr/src/redhat/RPMS/i386/pkgname.i386.rpm
这个就是编译完成的 RPM 文件罗!这个文件就可以用来安装啦!安装的时候请加绝对路径来安装即可!
--recompile这个动作会直接的『编译』『打包』并且『安装』罗!请注意, rebuild 仅『编译并打包』而已,而 recompile 不但进行编译跟打包,还同时进行『安装』了!

不过,要注意的是,这两个选项都没有修改过 SRPM 内的配置值,仅是透过再次编译来产生 RPM 可安装软件文件而已。 一般来说,如果编译的动作顺利的话,那么编译过程所产生的中间缓存档都会被自动删除,如果发生任何错误, 则该中间文件会被保留在系统上,等待使用者的除错动作!那么,该如何除错呢?如果想要自行除错, 或者是想要修改 SRPM 内的配置值时,就得要知道利用 SRPM 的时候,系统会动用到哪些重要的目录了! 底下我们就来谈一谈当处理 SRPM 时,系统会使用到的目录。


小标题的图示SRPM 使用的路径与需要的软件

SRPM 既然含有 source code ,那么其中必定有配置档罗,所以首先我们必需要知道,这个 SRPM 在进行编译的时候会使用到哪些目录呢?这样一来才能够来修改嘛!你可以到你的 /usr/src 这个目录里面去查看一下,通常每个 distribution 提供的目录都不太相同,以 CentOS 5.x 为例,他是以 /usr/src/redhat/ 为工作目录, Openlinux 则是以 /usr/src/openlinux 为工作目录!无论如何,反正就是在 /usr/src 这个目录下就对了!好了,既然我们是 CentOS , 请到 /usr/src/redhat 里头去看一看呦:

/usr/src/redhat/SPECS这个目录当中放置的是该软件的配置档,例如这个软件的资讯参数、配置项目等等都放置在这里;
/usr/src/redhat/SOURCES这个目录当中放置的是该软件的原始档 (*.tar.gz 的文件) 以及 config 这个配置档;
/usr/src/redhat/BUILD在编译的过程中,有些缓存的数据都会放置在这个目录当中;
/usr/src/redhat/RPMS经过编译之后,并且顺利的编译成功之后,将打包完成的文件放置在这个目录当中。里头有包含了 i386, i586, i686, noarch.... 等等的次目录。
/usr/src/redhat/SRPMS与 RPMS 内相似的,这里放置的就是 SRPM 封装的文件罗!有时候你想要将你的软件用 SRPM 的方式释出时, 你的 SRPM 文件就会放置在这个目录中了。

此外,在编译的过程当中,可能会发生不明的错误,或者是配置的错误,这个时候就会在 /tmp 底下产生一个相对应的错误档,你可以根据该错误档进行除错的工作呢! 等到所有的问题都解决之后,也编译成功了,那么刚刚解压缩之后的文件,就是在 /usr/src/redhat/SPECS, SOURCES, BUILD 等等的文件都会被杀掉,而只剩下放置在 /usr/src/redhat/RPMS 底下的文件了!

由於 SRPM 需要重新编译,而编译的过程当中,我们至少需要有 make 与其相关的程序,及 gcc, c, c++ 等其他的编译用的程序语言来进行编译,更多说明请参考第二十二章原始码所需基础软件吧。 所以,如果你在安装的过程当中没有选取软件开发工具之类的软件, 呵呵!得重新拿出你的光盘,然后再安装喔!哈哈!只是得要克服一大堆的属性相依的问题就是了~ 这问题待会儿可以使用 yum 来处理,你当然也可以先使用『 yum groupinstall "Development Tools" 』来安装开发软件。 鸟哥这里假设你已经安装了该软件群组罗。

例题:

尝试使用 --rebuild 选项制作出一个 RPM 软件文件,可以到国家高速网络中心下载 rp-pppoe 这个 SRPM 软件文件,你可以到 http://ftp.twaren.net/Linux/CentOS/5/os/SRPMS/ 找到这个软件来下载。鸟哥这里使用 CentOS 5.3 的 rp-pppoe-3.5-32.1.src.rpm 为例喔。

答:假设你已经将 rp-pppoe 软件下载到 /root 底下,那接下来可以简单的使用底下的方式来重新编译:

第二十三章、软件安装: RPM, SRPM 与 YUM 功能