打包和开发者入门指南¶
Rocky Devtools 指的是由 Rocky Linux 社区成员创建的一套自研脚本和实用工具,用于协助 sourcing、创建、品牌化、修补和构建随 Rocky Linux 操作系统分发的软件软件包。Rocky Devtools 由 rockyget
、rockybuild
、rockypatch
和 rockyprep
组成。
从低级别来说,Rocky Devtools 是运行一些自定义和传统程序以完成各种软件包管理任务的包装器。Rocky Devtools 严重依赖于 srpmproc
、go
、git
和 rpmbuild
。
您需要一个现有的现代基于 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
调用 rpmbuild
和 mock
实用工具,在 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 文件的内容来完成。