如何在构建此 rpm 包时执行 bash 脚本?



我想使用我的 bash 脚本来处理一个 csv 文件,然后将输出的 csv 文件放入我的 rpm 包中。

Name:       Test
Version:    1
Release:    1
Summary:    Test
License:    FIXME
Source1:    process.sh
Source2:    test.csv
%description
this is a test build
%build
mkdir -p %{buildroot}/tmp/
install -d -m 755 $RPM_BUILD_ROOT/tmp
install -m 755 %{SOURCE1} $RPM_BUILD_ROOT/tmp/
install -m 755 %{SOURCE2} $RPM_BUILD_ROOT/tmp/
.$RPM_BUILD_ROOT/tmp/process.sh test.csv test_processed.csv
%files
/tmp/test.csv
/tmp/process.sh

我已经尝试了上述代码的许多类似迭代,但我无法弄清楚为什么它无法运行。 我尝试在 rpm 的%pre%post部分中执行我的脚本,但它永远找不到该文件。

安装RPM 时,目标计算机上%pre%post发生。您需要在%install阶段将它们复制到目标根目录,以便%files查看它们。

抛开/tmp的废话。

运行时:

.$RPM_BUILD_ROOT/tmp/process.sh test.csv test_processed.csv

您位于源被追踪的目录中。在 %buildroot/tmp 中没有。

你应该做:

...
install -m 755 %{SOURCE2} $RPM_BUILD_ROOT/tmp/
sh $RPM_BUILD_ROOT/tmp/process.sh test.csv test_processed.csv
install test_processed.csv $RPM_BUILD_ROOT/tmp/

...
install -m 755 %{SOURCE2} $RPM_BUILD_ROOT/tmp/
cd $RPM_BUILD_ROOT/tmp/
sh process.sh test.csv test_processed.csv

第一个是最佳实践。

最新更新