在构建过程中如何从rpm运行Shell脚本?

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

基本上,我希望我的构建过程能够做到这一点:

  1. 运行一个shell脚本,该脚本从csv文件中剥离数据并将它们组合成一个csv。
  2. 该脚本的结果csv输出然后打包在rpm中。
  3. 运行rpm -install时,csv文件(不是脚本)放置在目标计算机上的特定位置。

我对RPM还是很陌生,所以很抱歉如果我对下面的代码有误,但是在尝试构建或安装时会给我一些错误。

我试图从源代码目录运行脚本

我对预期的rpm流量应如何工作有些困惑。在测试中,我将在同一台计算机上进行构建和安装,但实际上它将在两台计算机上进行。

当我运行下面的代码时,它会将源文件的副本放入.rpm文件吗?我想知道为什么它不起作用。 (它说process.sh不存在)

Name:       Test
Version:    1
Release:    1
Summary:    Test
License:    FIXME


%description
this is a test build

%prep
echo "BUILDROOT = $RPM_BUILD_ROOT"
mkdir -p -m777 $RPM_BUILD_ROOT/usr/local/bin/
cp /home/myuser/foo/util/* $RPM_BUILD_ROOT/usr/local/bin
cd $RPM_BUILD_ROOT/usr/local/bin/
./process.sh hosts.csv processed.csv
exit

%files
%attr(0777, root, root) /foo/processed.csv
rpm rpmbuild
1个回答
0
投票

您需要:

  • 为您的用户设置构建树,例如运行rpmdev-setuptree
  • 将源文件放入构建树中的SOURCES
  • 声明一些Source标签。这对于正确构建至关重要。因为这是在构建过程中引用构成构建文件的方式。

例如

Source0: process.sh
Source1: util.tar.gz

util.tar.gz可能是所有众多CSV文件的压缩包(我假设文件太多了,因此每个文件都单独拥有一个Source条目是不可行的。

然后:

  • %prep部分中,您将提取%{SOURCE1}
  • %build部分中,您可以将它们合并为一个文件
  • %install部分中,您将安装组合文件

P.S。我知道对于初学者来说,在其他地方已经将某些内容复制到SOURCES目录中时,听起来有些不必要的任务,但这仍然可以。

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