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

Php 安装src.rpm是否运行%install?,php,linux,rpm,rpmbuild,rpm-spec,Php,Linux,Rpm,Rpmbuild,Rpm Spec,我在source.tar中有源代码,它位于myrpm-1.0.e17.centos.src.rpm中。当我在我的机器上安装rpm时 rpm -ivh myrpm-1.0.e17.centos.src.rpm 我在我想要的根目录中获取源代码和规范文件。现在,我希望RPM进入该源文件夹,解压缩tar文件(SOURCE.tar),并将其移动到我机器上的其他位置。我已经试着把它放到%install和%post中。看起来它们没有运行,我甚至无法在安装部分创建目录 %install echo "INS

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

rpm -ivh myrpm-1.0.e17.centos.src.rpm
我在我想要的根目录中获取源代码和规范文件。现在,我希望RPM进入该源文件夹,解压缩tar文件(SOURCE.tar),并将其移动到我机器上的其他位置。我已经试着把它放到
%install
%post
中。看起来它们没有运行,我甚至无法在安装部分创建目录

%install 

echo "INSTALLING"

mkdir temp/myfile

tar -xvf source.tar

安装时没有消息,没有临时文件,tar也没有解包。(放置在
%post
中时相同)

否,源RPM内容的处理是硬编码的<代码>%pre、
%post
%install
等仅在实际构建二进制软件包时使用

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

如果你提到


让我们在这里澄清一下。SRPM中的“S”是指SRPM是构建可安装RPM包的源,仅此而已。这并不意味着非编译包中的程序是从SRPM安装的,也不意味着RPM只包含二进制文件。例如:

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

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


求你了,漂亮的求你了,不要因为SRPM不适合做的事情而滥用它。

谢谢你,它确实回答了我的问题。简而言之,我希望源代码在服务器上。RPM没有责任将代码放在正确的位置。@Eddie:看起来你把RPM源程序包和二进制程序包搞混了。要将文件放在服务器上,您需要
rpmbuild
your.src.rpm来获取binary.rpm,然后您可以安装它……我不想获取binary(我为php应用程序构建这个)。因此,我将我的PHP代码打包,并希望通过RPM安装它们。我仍然想将这些文件从tarball中移动到我想要的位置。@Eddie:SRPM不能安装到系统中-只能安装到RPM构建环境中供
rpmbuild
使用。时期您需要构建二进制RPM进行安装-如果这些RPM是独立于体系结构的(例如PHP文件包),那么它们将是.noarch RPM,但它们仍然不是SRPM。