1. RPM构建 - 介绍
2. RPM构建 - SPEC文件参数解析
3. RPM构建 - 简单实例
4. RPM构建 – 源码编译
1 RPM是什么
RPM 前是Red HatPackage Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理;现在应为RPM Package Manager的缩写。在Fedora、RedHat、Mandriva、SUSE、YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用; RPM包中除了包括程序运行时所需要的文件,也有其它的文件;一个RPM包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是软件包的依赖关系。
rpm分为两大类:
1 二进制类包,包括rpm安装包(一般分为i386和x86等几种)和调式信息包等
2 源码类包,源码包和开发包应该归位此类。
2 RPM能做什么
RPM可以让用户直接以binary方式安装软件包,并且可替用户查询是否已经安装了有关的库文件;在用RPM删除程序时,它又会聪明地询问用户是否要删除有关的程序。如果使用RPM来升级软件,RPM会保留原先的配置文件,这样用户就不用重新配置新的软件了。RPM保留一个数据库,这个数据库中包含了所有的软件包的资料,通过这个数据库,用户可以进行软件包的查询。RPM虽然是为Linux而设计的,但是它已经移值到SunOS、Solaris、AIX、Irix等其它UNIX系统上了。RPM遵循GPL版权协议,用户可以在符合GPL协议的条件下自由使用及传播RPM。
RPM有五种基本的操作功能:安装、卸载、升级、查询和验证。
这五种基本功能的实现仅仅需要用rpm + 选项 + rpm包就能轻易地实现。这五个功能常用的方式如下(以mysql为例):
安装:
rpm –ivhmysql-5.1.61-4.el6.i686.rpm
查询:
rpm –qa mysql:查询跟mysql有关的包。
删除:
rpm –emysql-5.1.61-4.el6.i686
一般的话都会先通过查询已经安装好的包,然后执行删除命令,上述命令,即可卸载掉系统安装好的rpm包。
升级:
rpm –uvhmysql-5.1.61-4.el6.i686.rpm
验证:
rpm –vmysql-5.1.61-4.el6.i686.rpm
对已经安装了的程序进行验证。
3 了解RPM包名
name-version-release.architecture.rpm
name —— 软件的名字;
version ——软件的版本;
release ——软件包的发行版本;
architecture ——架构;
4 如何创建RPM包
要构建 RPM,需要三步:
第一步:依照 rpmbuild 规范设定一个目录结构:
目录与文件介绍:
目录或文件名 | 描述 |
BUILD | 用作实际编译软件的暂存空间 |
RPMS | 包含 rpmbuild 所编译的二进制 RPM |
SOURCES | 存储源代码 |
SPECS | 存放spec文件,每个RPM 对应一个spec文件 |
SRPMS | 包含在这个过程中构建的源 RPM |
.rpmmacos | Rpm构建配置文件(可选) |
注:
构建RPM包,至少需要 SOURCES 中的源代码和SPEC中的一个spec文件。
第二步:将源代码和附带文件放在目录中合适的位置
将源代码(理想情况下应为一个 tar.gz压缩文件)复制到 SOURCES 目录中。如果有必要,重命名 tar压缩文件,以包含应用程序的版本号,便于与其他文件区分开。约定的命名格式为包-版本.tar.gz。
第三步:创建 spec 文件
需要详细介绍spec文件;
在SPEC目录通过以下命令初始化spec文件,然后根据具体情况进行修改。
rpmdev-newspec <软件名>.spec
第四步:编译 RPM
[root@node0rpmbuild]# rpmbuild <选项> ###.spec
选项说明:
选项 | 说明 |
-ba | 建立一个 rpm 以及一个.src.rpm |
-bb | 只建立二进制的 rpm |
-bc | 编译但不构建软件包,停止在%build 区段 |
-bp | 只做到%prep 区段 |
-bi | 在%install 后停止 |
-bl | 列出 rpm 中的文件列表 |
-bs | 只建立 src.rpm 文件 |
---轻轻地我走了,正如我轻轻地来---