-2

我想创建一个 rpm 包,它执行以下操作:

设置时:

  1. 将脚本复制到 rpm

  2. 将文件解压到 rpm

运行时:

  1. 运行script.sh

  2. 运行install提取到 rpm 中的文件

当用户运行 rpm 时,它应该执行 2 和 3,因为这些文件已经存在于 rpm 中。

我知道如何进行设置,*.spec 文件是:

%description
# lets skip this for now

%prep
# lets skip this for now

%build
# lets skip this for now

%install
cd ${RPM_BUILD_ROOT}
cp -v /home/methuselah/script.sh ${RPM_BUILD_ROOT}
tar xvpf /home/methuselah/bin.tar
chmod 775 -R ${RPM_BUILD_ROOT}/*

%files
/*

%changelog
* Tue Jan 28 2014 Pavel Šimerda  - 3.0.9-14
- Resolves: #1052814 - rsync command is terminated with SIGSEGV
- Resolves: #1052814 - add missing patch file

我不确定将执行 rpm 时运行的实际安装步骤放在哪里。

4

2 回答 2

3

%install部分用于在rpm 构建根目录中的rpm 构建过程中安装文件。这部分在目标机器上安装期间不运行。这是文件中令人困惑的部分。spec

在建造期间rpm(按此顺序):

  • %准备
  • %建造
  • %安装
  • %查看

在安装过程中rpm(按此顺序):

  • %pre
  • (实际安装:安装%files部分文件)
  • %邮政

注意:此页面上完整的 rpm 脚本命令

更多评论:

  • 两个rpms 不能拥有相同的文件/文件夹,因此请确保您不打包/home/usr或类似的东西(当您在/*下面指定时%files打包整个树)
  • 不要打包/home用户目录中的文件。软件包是在系统范围内安装的,因此只打包通用目录中的文件,如/etc, /usr, ...
于 2019-09-30T10:11:01.317 回答
1

也许您想将文件(script.sh 和 bin.tar)放在“%files”部分下,并使用 %install 完成所有安装。

看看这里,也许在这里了解更多信息。

我不确定将执行 rpm 时运行的实际安装步骤放在哪里。

我认为这个链接可以帮助你。

于 2019-09-30T09:54:55.963 回答