RPM,作为 Linux 生态系统中重要的包管理系统,最近发布了最新版本 4.20。对于那些不太了解 RPM 的人来说,它是许多 Linux 发行版中用于打包、安装和管理软件的工具,广泛应用于 Red Hat Enterprise Linux 及其衍生版本,比如 AlmaLinuxRocky LinuxOracle Linux,当然也包括 FedoraCentOS Stream

RPM 4.20 的主要新特性

声明式构建系统支持

在 RPM 4.20 中,最大的亮点之一就是引入了 声明式构建系统支持。这意味着开发者可以更轻松地指定使用哪种构建系统(如 AutotoolsCMake),而 RPM 将根据这些构建系统的最佳实践,自动准备、编译和安装源代码。

好处是什么?
简单来说,这个功能大大减少了繁琐的模板代码,优化了软件包的构建流程,使其更加高效,也更符合不同 Linux 发行版的需求。

动态 spec 文件的改进

在 RPM 4.20 中,动态 spec 文件 也得到了进一步优化。这些文件定义了如何构建 RPM 包,现在开发者可以在不影响实际构建过程的前提下,添加新指令,增强了模块化和可维护性。这意味着开发者在创建和维护 spec 文件时,会有更大的灵活性和控制力。

提升构建流程的工具与安全性

独立构建目录

每个软件包现在都有一个由 RPM 自动管理的 独立构建目录。这不仅有助于简化软件包的构建流程,还能防止多个软件包同时构建时可能产生的冲突问题,使构建更加有序和高效。

新增 unshare 插件:隔离脚本执行

RPM 4.20 还推出了 unshare 插件,专为提高安全性设计。通常在安装软件包前后会执行一些脚本命令,而 unshare 插件通过隔离这些脚本,确保它们无法意外访问系统的文件或网络,从而有效避免潜在的安全问题,增加了一层保护。

更好的用户体验与新功能

密钥管理与包签名增强

在可用性方面,RPM 4.20 对密钥管理工具进行了改进。现在,rpmkeys 命令新增了列出和删除加密密钥的选项,方便用户更灵活地管理密钥。此外,rpmsign 现在支持使用 ECDSA 密钥 进行包签名,为加密提供了更多选择和灵活性。

现代数据格式支持:JSON 输出

为了满足现代数据处理需求,RPM 4.20 还支持将查询结果以 JSON 格式 输出。相较于传统的 XML 格式,JSON 更加简洁、易读,并且便于与其他工具集成,这对开发者和系统管理员来说是一个非常友好的改进。

新工具 rpm2archive

RPM 4.20 还引入了 rpm2archive 工具,这是一个用于将 RPM 包转换为存档格式的实用程序。新版本支持 CPIO 文件格式,提高了与旧版系统的兼容性。老的 rpm2cpio 命令现在只是这个新工具的一个符号链接。

为开发者提供的好消息

公共插件 API 正式发布

开发者们会特别高兴听到,RPM 的 公共插件 API 现在正式发布了。这为扩展 RPM 的功能开辟了新的可能性,开发者可以更加轻松地定制 RPM 的行为,创建新的插件,满足不同场景的需求。

加速依赖生成

此外,新增的 多文件协议 使得依赖项生成的速度大幅提升。这不仅让构建过程更加流畅,也为所有 Linux 用户带来了更好的软件管理体验。

可重现构建支持进一步增强

RPM 4.20 也对 可重现构建 做了进一步优化。这是现代软件开发中的重要需求,确保软件包无论在何时何地构建,都能生成一致的结果。为此,RPM 现在提供了一个新的宏 %build_mtime_policy,开发者可以选择将时间戳固定为源代码日期或构建时间,从而提高构建的一致性。

其他改进与错误修复

最后,RPM 4.20 还包含了多项错误修复和性能改进。例如,RPM 现在不再尝试处理某些非可执行文件(如 RubyPythonJavaScript 文件),这加快了处理速度。此外,spec 文件 中的注释和缩进语法也得到了清理,使文件更加简洁、易读、便于维护。

何时可以使用 RPM 4.20?

好消息 是,Fedora 工程指导委员会(FESCo)已经批准将 RPM 4.20 纳入即将发布的 Fedora 41 版本中,预计会在 11 月初 发布。所以,再耐心等待一个月,就可以体验到这个增强版的包管理工具了。

总结

RPM 4.20 的发布带来了许多全新的功能和优化,从声明式构建系统支持,到增强的安全性和可用性工具,再到针对开发者的全新 API 及插件支持。这个版本不仅提高了 RPM 的易用性,还使构建过程更加灵活高效,满足了现代 Linux 生态系统的多种需求。如果你是软件开发者、系统管理员,或者只是对 Linux 包管理感兴趣,那么 RPM 4.20 将会是一个令人期待的工具升级。

想了解更多技术细节,请查阅 RPM 4.20 的发布说明。祝你打包愉快!

发表回复