跳至内容

打包和开发人员入门指南

Rocky Devtools 指的是 Rocky Linux 社区成员创建的一套内部脚本和实用程序,用于帮助获取、创建、品牌化、修补和构建与 Rocky Linux 操作系统一起分发的软件包。Rocky Devtools 包括 rockygetrockybuildrockypatchrockyprep

在底层,Rocky Devtools 是用于运行一些自定义和传统程序以执行各种包管理任务的包装器。Rocky Devtools 很大程度上依赖于 srpmprocgogitrpmbuild

您需要一个现有的现代基于 RPM 的 Linux 系统才能安装和使用 Rocky devtools。

让我们逐步介绍 devtools 的典型安装和使用场景。

依赖项

在您开始使用 devtools 之前,系统上需要安装几个软件包。这些命令已在 Rocky Linux 上测试过,但也应该在 CentOS 8/RHEL 8 上正常工作。

dnf install git make golang

1. 下载 Rocky Devtools

从以下 URL 下载 devtools 的压缩源代码:

https://github.com/rocky-linux/devtools/archive/refs/heads/main.zip

这里我们使用 curl 命令

curl -OJL https://github.com/rocky-linux/devtools/archive/refs/heads/main.zip

您现在应该有一个名为 devtools-main.zip 的压缩存档。

2. 安装 Rocky Devtools

找到您刚刚下载的 devtools 存档并解压缩它。

这里我们将使用 unzip 命令行实用程序

unzip devtools-main.zip

将您的工作目录更改为刚刚创建的新 devtool 源代码目录。

cd devtools-main

运行 make 来配置和编译 devtools

make

安装 devtools

sudo make install

3. 使用 Rocky Devtools (rockyget) 搜索和下载源 RPM (SRPM)

安装后,查找和下载 SRPM 的主要实用程序是 rockyget 实用程序。

让我们使用 rockyget 下载流行的 sed 包的 SRPM。

rockyget sed

第一次运行 rockyget 时,它会自动创建一个目录结构,大致模仿 Rocky 构建服务器的存储库结构。例如,~/rocky/rpms 文件夹将自动创建。

对于我们当前的 sed 示例,它的源代码将存储在以下示例文件夹层次结构中:

~rocky/rpms/sed/
└── r8
    ├── SOURCES
       ├── sed-4.2.2-binary_copy_args.patch
       ├── sed-4.5.tar.xz
       ├── sedfaq.txt
       ├── sed-fuse.patch
       └── sed-selinux.patch
    └── SPECS
        └── sed.spec

提示

拥有原始源代码后,现在可能是一个好时机,查看 SPEC 文件(~rocky/rpms/sed/SPECS/specs.spec),查找给定包中可能的去品牌化机会。去品牌化可能包括替换上游的艺术作品/徽标等等。

提示

如果您正在寻找其他要构建和尝试的 Rocky 包,您可以浏览目前在 Rocky 自动构建环境中失败的包列表 这里

4. 使用 Rocky Devtools (rockybuild) 为 Rocky OS 构建一个新包

在后台,rockybuild 调用 rpmbuildmock 实用程序,以便在命令行上指定的应用程序的 chroot 环境中构建源代码包。它依赖于通过 rockyget 命令自动下载的应用程序源代码和 RPM SPEC 文件。

使用 rockybuild 构建 sed 实用程序

rockybuild sed

完成构建过程/步骤所需的时间取决于您尝试构建的应用程序的大小和复杂程度。

rockybuild 运行结束时,类似于这里显示的输出表明构建已成功完成。

..........
+ exit 0
Finish: rpmbuild sed-4.5-2.el8.src.rpm
Finish: build phase for sed-4.5-2.el8.src.rpm
INFO: Done(~/rocky/rpms/sed/r8/SRPMS/sed-4.5-2.el8.src.rpm) Config(baseos) 4 minutes 34 seconds
INFO: Results and/or logs in: /home/centos/rocky/builds/sed/r8
........

如果一切顺利,您应该在 ~/rocky/builds/sed/r8 目录下得到一个适用于 Rocky 的 SRPM 文件。

~/rocky/rpms/sed/r8/SRPMS/sed-4.5-2.el8.src.rpm

5. 调试失败的包构建

之前的 rockybuild 过程将生成一些日志文件,这些文件可用于调试失败的应用程序构建。构建过程的结果和/或日志存储在 ~/rocky/builds/<PACKAGE NAME>/r8 下。例如 ~/rocky/builds/sed/r8

~/rocky/builds/sed/r8
├── build.log
├── hw_info.log
├── installed_pkgs.log
├── root.log
├── sed-4.5-2.el8_3.src.rpm
├── sed-4.5-2.el8_3.x86_64.rpm
├── sed-debuginfo-4.5-2.el8_3.x86_64.rpm
├── sed-debugsource-4.5-2.el8_3.x86_64.rpm
└── state.log

搜索任何错误原因的线索的主要文件是 build.log 和 root.log。build.log 文件应详细说明所有构建错误,root.log 文件将包含有关 chroot 环境设置和拆卸过程的信息。在其他条件相同的情况下,大多数构建调试/故障排除过程都可以使用 build.log 文件的内容来完成。