在 RPM 规范文件中指定解压位置

在 RPM 规范文件中指定解压位置

我在互联网上寻找有关此问题的答案,但无法得到任何信息。我正在构建自己的 RPM,我需要它将某些文件解压到特定目录。这些目录属于用户support,因此应映射到:~/exporttool~/bin~/jlog( /home/support/directory)。但是当我运行命令来构建 rpm 时:

rpmbuild -v -bb SPEC/supportScripts.spec

我明白了:

File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd2
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd8
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/exportToTransferSyntax.sh

我在这个关联规格文件。有人可以告诉我我做错了什么以及如何配置规范文件以正确映射到/home/support/directoryOfWhereFilesShouldGo

答案1

切勿使用 RPM 将软件安装到该/home目录中。这只是一个坏主意。 RPM 只能用于系统管理的目录(/bin/usr/bin等)。

相反,该软件应安装在这些目录之一下,并且:

  1. 可以对它们进行符号链接,或者
  2. 例如,这些工具一旦安装到 中,/usr/bin就可以通过系统的$PATH.

每当您尝试在 Linux/Unix 中做某事并且发现执行起来很困难时,您应该后退一步。这是架构/系统告诉你一些事情。您可能正在做一些不应该做的事情,并且您正在违背它的设计使用方式。

规格文件

%install宏目前的形式对我来说没有意义。

%install
mkdir -p %buildroot/%name
tar -xvf /home/vagrant/rpm/SOURCE/supportScripts-1.tar
mkdir /home/support/exporttool
mkdir /home/support/bin
mkdir /home/support/jlog

为什么mkdir在解压 tarball 后还要查看这些目录?你为什么要制作它们?如果它们包含在 tarball 中,那么这是不必要的。如果这些目录未包含在 tarball 中,那么它们只是空的,并且您收到的错误正在告诉您这一点。

找不到文件:/root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd2

没有cmd2包含文件,因为它不在 tarball 中或在%install.

您可以通过检查 tarball 的库存来确认这一点:

$ tar tvf /home/vagrant/rpm/SOURCE/supportScripts-1.tar | \
    grep -E 'support/{exporttool,bin,jlog}'

相关内容