打包和开发人员入门指南¶
Rocky Devtools 指的是 Rocky Linux 社区成员创建的一套内部脚本和实用程序,用于帮助获取、创建、品牌化、修补和构建与 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 的压缩源代码:
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
调用 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 文件的内容来完成。