跳至内容

打包和开发者入门指南

Rocky Devtools 指的是由 Rocky Linux 社区成员创建的一套自研脚本和实用工具,用于协助 sourcing、创建、品牌化、修补和构建随 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 的 zip 压缩源文件:

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 的 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

技巧

一旦您获得了原始源代码,这可能是一个好时机,可以浏览 SPECs 文件 (~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 文件的内容来完成。