当我 运行 install 命令时,我可以在规范文件中的什么地方放置 install/move 文件周围的指令?

Where in the spec file can I put instructions to install/move around files when I run the install command?

当我 运行 安装命令时,我可以在 spec 文件的什么地方放置对 install/move 文件的指令?

rpm -ivh myrpm-1.0-12.rpm

在我的 RPM 中,我有一个 tar 球,里面装满了文件(php 个文件),我想将它们放在我的服务器上的一个设置目录中。

我运行.

rpmbuild -ba   

这会执行下面的命令,我现在不想执行这些命令。

%install
mkdir -p $RPM_BUILD_ROOT/usr/local/mypath/here
cp -r . $RPM_BUILD_ROOT/usr/local/mypath/here

我希望这些命令在最终用户安装时执行

rpm -ivh myrpm-1.0-12.rpm

在 RPM 文档中,它说安装 RPM 的步骤之一是... "Unpacking files from the package and putting them in the proper place:"

这是大多数人在考虑安装软件时想到的步骤。每个包文件都包含一个要安装的文件列表,以及它们在您系统上的目的地。此外,许多其他文件属性,如权限和所有权,都由 RPM 正确设置。

我不知道把这些命令放在哪里。

我也试过将命令放在 %build 中,它的作用是一样的。

RPM 构建时间是提取这些文件的确切时间。

原 tar 球应该是 "source RPM file" 和 "binary RPM file" 的一部分(措辞不当;在这种情况下 "install RPM file" 应该更好)应该保存 RPM 负责的 target 文件系统的确切布局。

此布局在 %install 部分中定义。通常,您有序列 %prep%build%install%prep 将您的源解压缩到工作目录中,%build 构建它们,然后 %install 将 stoff 移动到 "build root",它定义了应该存在的文件。如果您没有任何要构建的东西,就像您的情况一样,您可以省略 %build 并且可能只是在 %install 部分中解压。

这也是 RPM 系统知道文件名的唯一方法,因此您可以使用 rpm -qf $FILENAME 查询它们的包。 (幽灵文件除外,但这不是很优雅)。

您可以添加一个 %post 小脚本,它会在安装时解压一个 tar 球,但是,如前所述,这远非优雅。