我如何在构建这个rpm包的同时执行一个bash脚本?

问题描述 投票:-1回答:1

我想用我的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 部分,但它永远找不到这个文件。

bash rpm
1个回答
0
投票

%pre%post 碰上 目标 安装RPM时,需要将它们复制到目标电脑的根目录下。你需要将它们复制到目标根目录下的 %install 阶段性 %files 来看他们。


0
投票

撇开不讲道理的 /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

第一个,是一个最好的实践。

© www.soinside.com 2019 - 2024. All rights reserved.