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

时间:2017-11-17 14:53:30

标签: centos redhat rpm rpmbuild

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

对于单包RPM,答案很明显,但单个规范也可以产生多个RPM。是否有一个变量,例如$ RPM_PACKAGE_NAME,rpmbuild会自动更新以与当前的%文件或%pre或%post部分对齐?

2 个答案:

答案 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最安全,因为群组不会用于任何有用的内容。

是的,我提到这是脏兮兮的黑客吗?弗洛里安建议的绝对是一种更清洁的方式。