22.3.3. 其他显著变化


查看 RHEL 9 和 RHEL 10 之间 RPM 的以下显著变化。

在备用 root 操作中,用户和组群名称解析被严格本地
当在使用--root 选项指定的替代根目录中安装或验证软件包时,RPM 从目标根目录中的 passwd (5)和 group (5)文件中分别从 passwd (5)group (5) 文件中获取 UID (用户标识符)和 GID (组标识符)号。
文件所有权信息永远不会从构建系统上下文获得
在构建软件包时,%defattr 指令会将用户和组属性的短划线(-)占位符解释为 root,而不是从磁盘获取实际所有权信息。同样,源 RPM 软件包中的文件(如 spec 文件、源存档或补丁文件)始终归 root 用户和组所有,无论它们在磁盘上所有权如何。
构建树(%_builddir)会在成功构建后默认删除
在以前的版本中,rpmbuild (8) 仅在 --rebuild 模式下,而不是在更常用的模式(如 -bb)下清理构建目录。因此,构建多个软件包会随着时间的推移导致不必要的文件累积。有了此增强,如果您希望始终保留构建树,例如,要调查非致命的构建问题,您可以使用 --noclean 选项。
%patch 指令必须明确指定要应用的补丁号

您可以通过以下方式之一指定补丁号:

  • 通过使用 -P 选项,例如 %patch -P1 -P2 来应用补丁号 1 和 2。
  • 通过将补丁号作为位置参数传递,例如 %patch 1 2 来应用补丁号 1 和 2。
重要

%patchN 语法(其中 N 是要应用的补丁号)已弃用。

注意

如果没有使用 %patch 指令明确指定补丁号,则构建会终止并显示错误。

注意

建议您尽可能使用 %autosetup 宏,而不是使用 %patch 指令手动应用单个补丁。当您使用 %autosetup 时,补丁会按照其补丁号标识的顺序自动应用。因此,spec 文件更易于读取和维护。如需更多信息,请参阅 自动补丁应用程序

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部