在运行install命令时,我可以在spec文件中放置安装/移动文件的指令吗?

时间:2016-01-26 17:42:06

标签: rpm rpmbuild rpm-spec

在运行install命令时,我可以在spec文件中放置安装/移动文件的指令吗?

rpm -ivh myrpm-1.0-12.rpm

在我的RPM中,我有一个填充文件(php文件)的tar球我想将它们放在我的服务器上的set目录中。

我跑。

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的步骤是...... “从包中解压缩文件并将它们放在适当的位置:”

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

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

我也尝试将命令放在%build中,它的行为也一样。

1 个答案:

答案 0 :(得分:1)

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

原始tar球应该是"源RPM文件"以及"二进制RPM文件"的一部分。 (错误的措辞;应该更好"安装RPM文件"在这种情况下)应该保留RPM负责的目标文件系统的确切布局。

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

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

你可以添加一个%post scriptlet,在安装时解压缩tarball,但是,如上所述,这将远非优雅。