【问题标题】:How to execute for loop while RPM creation inside %build, %install and %files section?如何在 %build、%install 和 %files 部分创建 RPM 时执行 for 循环?
【发布时间】:2017-04-03 12:29:08
【问题描述】:

我正在创建一个 RPM。但是RPM的内容需要安装在不同的地方。在%build 中,我应该运行一个循环来从 XML 文件中获取所有位置。这是我的sn-p:

%build
for j in ${!files[*]}
do
 mkdir -p ${fileLocations[j]}
done

%install
for i in ${!files[*]}
do
 cp -rfR $SOURCE/${fileNames[i]} ${fileLocations[i]}
done

变量循环字符似乎设置为 1。如何做到这一点?

【问题讨论】:

  • 就是bash。这看起来不像标准的 bash 语法。
  • 但它在另一个 shell 脚本中运行良好。问题是由 %build 标签引起的吗?

标签: linux rpm rpmbuild


【解决方案1】:

似乎files 是一个 bash 变量,必须在每个不同的阶段(%build%install 等)重新初始化。其中每一个实际上都成为执行的临时脚本。

对于%files 节,您不再处于shell 中,但您可以将它们写入文件并使用-f 选项读入。无论如何,这可能是让它们进入其他节的更好方法。

【讨论】:

  • 我也尝试了以下方法: %build files=($(grep -oP '(?)[^)[^
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多