加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

RPM包是如何从源RPM制作的

发布时间:2019-11-05 14:21:53 所属栏目:Windows 来源:Ankur Sinha "franciscod"
导读:副标题#e# 在上一篇文章中,我们研究了什么是 RPM 软件包。它们是包含文件和元数据的档案文件。当安装或卸载 RPM 时,此元数据告诉 RPM 在哪里创建或删除文件。正如你将在上一篇文章中记住的,元数据还包含有关依赖项的信息,它可以是运行时或构建时的依赖

用 RPM 行话来讲,“python3” 是“主包”,因此该 spec 文件将称为 python3.spec。所有其他软件包均为“子软件包”。你可以下载 python3 的源 RPM,并查看其中的内容。(提示:补丁也是源代码的一部分):

  1. $ dnf download --source python3
  2. python3-3.7.4-1.fc30.src.rpm
  3.  
  4. $ rpm -qpl ./python3-3.7.4-1.fc30.src.rpm
  5. 00001-rpath.patch
  6. 00102-lib64.patch
  7. 00111-no-static-lib.patch
  8. 00155-avoid-ctypes-thunks.patch
  9. 00170-gc-assertions.patch
  10. 00178-dont-duplicate-flags-in-sysconfig.patch
  11. 00189-use-rpm-wheels.patch
  12. 00205-make-libpl-respect-lib64.patch
  13. 00251-change-user-install-location.patch
  14. 00274-fix-arch-names.patch
  15. 00316-mark-bdist_wininst-unsupported.patch
  16. Python-3.7.4.tar.xz
  17. check-pyc-timestamps.py
  18. idle3.appdata.xml
  19. idle3.desktop
  20. python3.spec

从源 RPM 构建 RPM

现在我们有了源 RPM,并且其中有什么内容,我们可以从中重建 RPM。但是,在执行此操作之前,我们应该设置系统以构建 RPM。首先,我们安装必需的工具:

  1. $ sudo dnf install fedora-packager

这将安装 rpmbuild 工具。rpmbuild 需要一个默认布局,以便它知道源 RPM 中每个必需组件的位置。让我们看看它们是什么:

  1. # spec 文件将出现在哪里?
  2. $ rpm -E %{_specdir}
  3. /home/asinha/rpmbuild/SPECS
  4.  
  5. # 源代码将出现在哪里?
  6. $ rpm -E %{_sourcedir}
  7. /home/asinha/rpmbuild/SOURCES
  8.  
  9. # 临时构建目录是哪里?
  10. $ rpm -E %{_builddir}
  11. /home/asinha/rpmbuild/BUILD
  12.  
  13. # 构建根目录是哪里?
  14. $ rpm -E %{_buildrootdir}
  15. /home/asinha/rpmbuild/BUILDROOT
  16.  
  17. # 源 RPM 将放在哪里?
  18. $ rpm -E %{_srcrpmdir}
  19. /home/asinha/rpmbuild/SRPMS
  20.  
  21. # 构建的 RPM 将放在哪里?
  22. $ rpm -E %{_rpmdir}
  23. /home/asinha/rpmbuild/RPMS

我已经在系统上设置了所有这些目录:

  1. $ cd
  2. $ tree -L 1 rpmbuild/
  3. rpmbuild/
  4. ├── BUILD
  5. ├── BUILDROOT
  6. ├── RPMS
  7. ├── SOURCES
  8. ├── SPECS
  9. └── SRPMS
  10.  
  11. 6 directories, 0 files

RPM 还提供了一个为你全部设置好的工具:

  1. $ rpmdev-setuptree

然后,确保已安装 fpaste 的所有构建依赖项:

  1. sudo dnf builddep fpaste-0.3.9.2-3.fc30.src.rpm

对于 fpaste,你只需要 Python,并且它肯定已经安装在你的系统上(dnf 也使用 Python)。还可以给 builddep 命令一个 spec 文件,而不是源 RPM。在手册页中了解更多信息:

  1. $ man dnf.plugin.builddep

现在我们有了所需的一切,从源 RPM 构建一个 RPM 就像这样简单:

  1. $ rpmbuild --rebuild fpaste-0.3.9.2-3.fc30.src.rpm
  2. ..
  3. ..
  4.  
  5. $ tree ~/rpmbuild/RPMS/noarch/
  6. /home/asinha/rpmbuild/RPMS/noarch/
  7. └── fpaste-0.3.9.2-3.fc30.noarch.rpm
  8.  
  9. 0 directories, 1 file

(编辑:PHP编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!