我在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
时相同)。
答案 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来处理他们不适合的事情。