我想用我的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
我已经尝试了许多类似上述代码的迭代,但我不明白为什么它不能运行。%pre
和 %post
部分,但它永远找不到这个文件。
%pre
和 %post
碰上 目标 安装RPM时,需要将它们复制到目标电脑的根目录下。你需要将它们复制到目标根目录下的 %install
阶段性 %files
来看他们。
撇开不讲道理的 /tmp
.
当运行时。
.$RPM_BUILD_ROOT/tmp/process.sh test.csv test_processed.csv
你所在的目录是extraceted源代码的地方。在%buildroottmp中没有任何内容。
你应该这样做。
...
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
第一个,是一个最好的实践。