Linux 中 RPM 的构建与打包( 五 )


文章插图
 
修改成功后再重新编译后检查,重新验证二进制 RPM 正确性,error 数量为 0,如下图 23 所示:
图 23. 验证二进制 RPM 的正确性

Linux 中 RPM 的构建与打包

文章插图
 
最后,安装编译好的 rpm 包并运行程序进行验证,如下图 24 所示:
图 24. 安装二进制 RPM 包并执行程序
Linux 中 RPM 的构建与打包

文章插图
 
我们看到,上图中执行 bello 程序成功,证明 RPM 安装成功 。
如何在异构环境重新编译 RPM在前文中我们已经提到,有的 RPM 包与运行环境有关,有的无关 。如果一个 RPM 依赖于某一个版本的运行环境(linux 版本或处理器架构),我们如何让这个 RPM 在其他的环境中运行?这涉及到异构环境下的 RPM 重新编译 。
Mock 是一个用于构建 RPM 包的工具(就像 Docker 启动一个 build 的环境一样,摆脱对编译环境 linux 版本的限制) 。它可以为不同的架构、Linux 版本构建 RPM 软件包 。在 RHEL 系统上使用 Mock,需要启用"Extra Packages for Enterprise Linux"(EPEL)存储库 。
针对 RPM 包,Mock 最常见的用例之一是创建原始的构建环境 。通过指定不同的配置文件(/etc/mock 目录下)即模拟使用不同的构建环境 。
查看 mock 配置文件,如下图 25 所示:
图 25. 查看 mock 配置文件
Linux 中 RPM 的构建与打包

文章插图
 
我们以 epel-7-x86_64.cfg 为例,查看其中关于架构的描述,如清单 8 所示,可以看到是 x86_64 和红帽 Linux 发行版 7 的信息:
清单 8. 查看 epel-7-x86_64.cfg 配置文件中架构信息[root@master mock]# cat epel-7-x86_64.cfg|grep -i archconfig_opts['target_arch'] = 'x86_64'config_opts['legal_host_arches'] = ('x86_64',)mirrorlist=http://mirrorlist.centos.org/?release=7& arch=x86_64& repo=osmirrorlist=http://mirrorlist.centos.org/?release=7& arch=x86_64& repo=updatesmirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-7& arch=x86_64mirrorlist=http://mirrorlist.centos.org/?release=7& arch=x86_64& repo=extrasmirrorlist=http://mirrorlist.centos.org/?release=7& arch=x86_64& repo=sclo-rhmirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=testing-epel7& arch=x86_64mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-debug-7& arch=x86_64使用 epel-7-x86_64 配置来构建 SRPM,如下图 26 所示:
图 26. 使用 epel-7-x86_64 构建二进制 RPM
Linux 中 RPM 的构建与打包

文章插图
 
使用 epel-6-x86_64 配置来构建 SRPM,如下图 27 所示:
图 27. 使用 epel-6-x86_64 构建二进制 RPM查看构建好的二进制 rpm:
cello-1.0-1.el6.x86_64.rpm,如下图 28 所示:
图 28. 查看构建好的二进制 RPM
Linux 中 RPM 的构建与打包

文章插图
 
安装 
cello-1.0-1.el6.x86_64.rpm,如下图所示:
图 29. 安装构建好的二进制 RPM点击查看大图
查看构建好的二进制 RPM 
cello-1.0-1.el7.x86_64.rpm,并进行安装验证,如下图 30 所示:
图 30. 安装构建好的二进制 RPM
Linux 中 RPM 的构建与打包

文章插图
 
至此,在异构环境下重新编译二进制 RPM 成功 。
结束语通过本文,相信您对通过源码构建成 RPM 有了较为深刻的理解 。随着开源理念的不断普及,越来越多的客户将业务系统从 windows 迁移到 Linux 上,理解了 Linux 中的 RPM 打包方式,会对以后我们日常的工作有很大的帮助 。
原文:
https://www.ibm.com/developerworks/cn/linux/l-lo-rpm-build-package/index.html




推荐阅读