gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:48:01 24 4
gpt4 key购买 nike

我在 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 时相同)。

最佳答案

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

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

如果您提到 what is the problem that you are trying to solve by doing this,我们可能会提供更多帮助...


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

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

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

拜托,非常拜托,不要将 SRPM 滥用在它们不适合的地方。

关于php - 安装 src.rpm 是否运行 %install?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34799604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com