19.3.3. 其他显著变化
用户和组群名称解析现在严格限于本地
安装软件包时,RPM 现在可以从本地系统上的 passwd (5) 和 group (5) 文件分别获取有关用户和组的信息,而不是使用名称服务切换(NSS)。
在构建软件包时,%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 文件更易于读取和维护。如需更多信息,请参阅 自动补丁应用程序。