RPM规范文件中有许多特殊变量可用。这些变量中的任何一个是否公开了当前正在处理的包的名称?
对于单包RPM,答案很明显,但单个规范也可以产生多个RPM。是否有一个变量,例如$ RPM_PACKAGE_NAME,rpmbuild会自动更新以与当前的%文件或%pre或%post部分对齐?
答案 0 :(得分:1)
我没有在RPM源代码中看到任何明显的东西。似乎没有可能使用RPM宏或正在构建的包头来访问当前已定义子包的列表,既不使用RPM宏也不使用Lua。
我们使用的是使用built-in Lua interpreter在Lua中生成整个包节。一个例子是glibc.spec
;搜索“语言数组”和%package langpack-]]..lang..[[
。请注意,Pagure查看器中的语法突出显示有点偏离,这种跨语言嵌套会让人感到困惑。
答案 1 :(得分:0)
你不能用这个名字来做。包名称%name
有一个宏,但它只包含主包的名称。但是,如果你真的需要这样做,并且你愿意做肮脏的黑客攻击,你可以这样做:
%package base
Summary: Filesystem for %{name}
Group: foo
%post base
echo %group
将打印foo
。同样适用于%summary
,但%group
最安全,因为群组不会用于任何有用的内容。