我想使用我的 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
第一个是最佳实践。