Centos (子)包名称的RPM spec变量?

Centos (子)包名称的RPM spec变量?,centos,redhat,rpm,rpmbuild,Centos,Redhat,Rpm,Rpmbuild,RPM规范文件中有许多特殊变量。这些变量中是否有任何一个公开正在处理的当前包的名称 对于单包RPM,答案是显而易见的,但单个规范也可以生成多个RPM。是否有一个变量,例如$RPM\u PACKAGE\u NAME,rpmbuild会自动更新以与当前的%files或%pre或%post节对齐?我在RPM源代码中没有看到任何明显的内容。似乎不可能使用RPM宏访问当前定义的子包列表,也不可能使用RPM宏或Lua访问正在构造的包头 相反,我们使用的是使用。一个例子是;搜索“语言数组”和%package

RPM规范文件中有许多特殊变量。这些变量中是否有任何一个公开正在处理的当前包的名称


对于单包RPM,答案是显而易见的,但单个规范也可以生成多个RPM。是否有一个变量,例如$RPM\u PACKAGE\u NAME,rpmbuild会自动更新以与当前的%files或%pre或%post节对齐?

我在RPM源代码中没有看到任何明显的内容。似乎不可能使用RPM宏访问当前定义的子包列表,也不可能使用RPM宏或Lua访问正在构造的包头


相反,我们使用的是使用。一个例子是;搜索“语言数组”和
%package langpack-]..lang[[
。请注意,Pagure viewer中的语法突出显示有点不正确,它被这种跨语言嵌套弄糊涂了。

您不能用名称来做这件事。有一个宏用于包名
%name
,但它只包含主包的名称。但是,如果确实需要这样做,并且您愿意这样做ks,你可以做:

%package base
Summary: Filesystem for %{name}
Group: foo

%post base
echo %group
它将打印
foo
。类似于
%summary
,但
%group
是最安全的,因为group不用于任何有用的用途


嗯,我有没有提到这是肮脏的黑客行为?Florian建议的绝对是更干净的方式。

据我所知,这似乎是最干净的方式。我不知道RPM有一个嵌入式Lua解释器。你能提供一个链接到你关于这个主题的最佳文档吗?我发现了这个:谢谢,我添加了一个链接。我知道了看到新的RPM文档仍然令人惊讶。对于主包和子包foo和bar,%(summary)或%group始终保存定义的最新摘要,无论您是安装其中一个子包还是主包,区分它们都是毫无意义的。