构建 Source RPM 和二进制 RPM下面我们演示如何通过源码和刚修改的 SPEC 文件构建 Source RPM 并在构建时指定-bs 参数(如果使用-bb 参数,则直接生成二进制 RPM),以便生成 SRPM,如下图 19 所示:
图 19. 构建 SRPM
文章插图
首先,我们基于 SRPM 生成二进制 RPM 。执行过程如清单 7 所示:
清单 7. 由 SRPM 构建二进制 RPM
# rpmbuild --rebuild ~/rpmbuild/SRPMS/bello-0.1-1.el7.src.rpmInstalling /root/rpmbuild/SRPMS/bello-0.1-1.el7.src.rpmwarning: bogus date in %changelog: Tue Jun 29 2019 DavidWei - 0.1-1Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.hNMkOC+ umask 022+ cd /root/rpmbuild/BUILD+ cd /root/rpmbuild/BUILD+ rm -rf bello-0.1+ /usr/bin/tar -xf -+ /usr/bin/gzip -dc /root/rpmbuild/SOURCES/bello-0.1.tar.gz+ STATUS=0+ '[' 0 -ne 0 ']'+ cd bello-0.1+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .+ exit 0Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.0isn4Y+ umask 022+ cd /root/rpmbuild/BUILD+ cd bello-0.1+ exit 0Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.epoHml+ umask 022+ cd /root/rpmbuild/BUILD+ '[' /root/rpmbuild/BUILDROOT/bello-0.1-1.el7.x86_64 '!=' / ']'+ rm -rf /root/rpmbuild/BUILDROOT/bello-0.1-1.el7.x86_64++ dirname /root/rpmbuild/BUILDROOT/bello-0.1-1.el7.x86_64+ mkdir -p /root/rpmbuild/BUILDROOT+ mkdir /root/rpmbuild/BUILDROOT/bello-0.1-1.el7.x86_64+ cd bello-0.1+ mkdir -p /root/rpmbuild/BUILDROOT/bello-0.1-1.el7.x86_64/usr/bin+ install -m 0755 bello /root/rpmbuild/BUILDROOT/bello-0.1-1.el7.x86_64/usr/bin/bello+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id -m --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 /root/rpmbuild/BUILD/bello-0.1/usr/lib/rpm/sepdebugcrcfix: Updated 0 CRC32s, 0 CRC32s did match.+ '[' noarch = noarch ']'+ case "${QA_CHECK_RPATHS:-}" in+ /usr/lib/rpm/check-buildroot+ /usr/lib/rpm/redhat/brp-compress+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1+ /usr/lib/rpm/redhat/brp-python-hardlink+ /usr/lib/rpm/redhat/brp-JAVA-repack-jarsProcessing files: bello-0.1-1.el7.noarchExecuting(%license): /bin/sh -e /var/tmp/rpm-tmp.hV1l1H+ umask 022+ cd /root/rpmbuild/BUILD+ cd bello-0.1+ LICENSEDIR=/root/rpmbuild/BUILDROOT/bello-0.1-1.el7.x86_64/usr/share/licenses/bello-0.1+ export LICENSEDIR+ /usr/bin/mkdir -p /root/rpmbuild/BUILDROOT/bello-0.1-1.el7.x86_64/usr/share/licenses/bello-0.1+ cp -pr LICENSE /root/rpmbuild/BUILDROOT/bello-0.1-1.el7.x86_64/usr/share/licenses/bello-0.1+ exit 0Provides: bello = 0.1-1.el7Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1Requires: /bin/bashChecking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/bello-0.1-1.el7.x86_64Wrote: /root/rpmbuild/RPMS/noarch/bello-0.1-1.el7.noarch.rpmExecuting(%clean): /bin/sh -e /var/tmp/rpm-tmp.PCJIAr+ umask 022+ cd /root/rpmbuild/BUILD+ cd bello-0.1+ /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/bello-0.1-1.el7.x86_64+ exit 0Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.ift0pO+ umask 022+ cd /root/rpmbuild/BUILD+ rm -rf bello-0.1+ exit 0
二进制 RPM 构建成功后,可以在~/rpmbuild/RPMS/中找到生成的二进制 RPM:bello-0.1-1.el7.noarch.rpm,如下图 20 所示:
图 20. 查看生成的二进制 RPM
文章插图
通过 SRPM 构建成二进制 RPM 后,源码会被自动删除 。如果想恢复源码,需要安装 srpm,如下图 21 所示:
图 21. 安装 SRPM 并查看源代码
文章插图
现在我们检查生成的二进制 RPM 的正确性并进行安装 。
检查并安装 RPM 包Rpmlint 命令可以检查二进制 RPM、SRPMs 和 SPEC 文件的正确性 。
我们以 bello.spec 为例进行检查 。
# rpmlint bello.specbello.spec: E: specfile-error warning: bogus date in %changelog: Tue Jun 29 2019 DavidWei - 0.1-10 packages and 1 specfiles checked; 1 errors, 0 warnings.
从 bello.spec 的检查结果中,发现一个 error 。具体报错描述我们需要检查 srpm 。# rpmlint ~/rpmbuild/SRPMS/bello-0.1-1.el7.src.rpmbello.src: W: invalid-url URL: https://www.example.com/bello HTTP Error 404: Not Foundbello.src: E: specfile-error warning: bogus date in %changelog: Tue Jun 29 2019 DavidWei - 0.1-11 packages and 0 specfiles checked; 1 errors, 1 warnings.
从检查 SRPM 的结果可以看出,报错的原因是 URL(https://www.example.com/bello)无法访问 。我们修改 SEPC,将地址设置为可访问地址,如下图 22 所示:
图 22. 修改 SPEC 设置 URL 为可访问地址
推荐阅读
- Linux 5.7内核新特性介绍
- 家中wifi网络老不好?救星来了
- Javascript中操作String字符串的33种方法,你都知道吗?
- 茶的存储注意事项,谭洋功夫茶饮用中的注意事项
- 分享几款免费的连接Linux的使用工具
- linux服务器上创建mysql5.7定时任务,实现自动发布文章
- 茶馆在中国的出现,茶坊在古代与现代的介绍
- 穿衣搭配|中性女生应该如何穿搭,才不过于浮夸,显得年轻又时尚?
- 顶谷大方茶好喝吗,大方茶中的上品顶谷大方茶
- 大陆游客不来,中国茶叶博物馆推出猜茶谜