安装src.rpm是否运行%install?

时间:2016-01-14 20:58:38

标签: php linux rpm rpmbuild rpm-spec

我在myrpm-1.0.e17.centos.src.rpm中的source.tar中有源代码。当我在我的机器上安装rpm时。

rpm -ivh myrpm-1.0.e17.centos.src.rpm

我在我想要的根目录中获取SOURCE和SPECS文件。我现在希望RPM进入该SOURCE文件夹解压缩tar文件(source.tar)并将其移动到我的机器上的其他位置。我已尝试将其放入%install%post。好像他们没有运行,我甚至无法在安装部分制作一个目录。

%install 

echo "INSTALLING"

mkdir temp/myfile

tar -xvf source.tar

安装时没有消息,没有临时文件,并且没有解压缩tar。 (放入%post时相同)。

1 个答案:

答案 0 :(得分:1)

不,源RPM内容的处理是硬编码的。 %pre%post%install等仅在实际构建二进制包时使用。

一般来说,你不应该做这样的事情。如果您需要解压缩源文件或应用补丁,只需在%pre部分执行此操作,该部分在实际构建开始之前作为二进制包构建过程的一部分执行。这确保了构建至少在某种程度上是可重复的。

如果您提到what is the problem that you are trying to solve by doing this ...

,我们可能会提供更多帮助

让我们在这里澄清一些事情。 " S"在SRPM中指的是SRPM是这一事实,可以从中构建可安装的RPM包并且所有这些都是。它 not 意味着非编译包中的程序是从SRPM安装的,或者RPM只包含二进制文件。例如:

  • 当应用程序的源代码不可用时,有时发行版将在其SRPMS中包含二进制可执行文件,或者将它们下载到%build部分。

  • Python,Bash和PHP脚本通常包含在生成的RPM中。在这些情况下%build完全为空,并且%install只将文件复制到$RPM_BUILD_ROOT下的正确位置,这并不罕见。如果生成的包没有平台相关文件,那么它通常构建为.noarch RPM,但它仍然被认为是二进制RPM而且不是 SRPM。

请相信,请不要滥用SRPM来处理他们不适合的事情。