Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash rpm规范仅根据系统标准安装某些文件_Bash_Sh_Rpm_Specifications - Fatal编程技术网

Bash rpm规范仅根据系统标准安装某些文件

Bash rpm规范仅根据系统标准安装某些文件,bash,sh,rpm,specifications,Bash,Sh,Rpm,Specifications,我构建了一个RPM,它解压了我在三种不同类型的系统中使用的一堆脚本。我试图添加第四种系统类型,它只需要rpm中打包的文件的子集。是否有一种方法可以让%install部分仅根据简单检查安装部分有效负载。差不多 (sudo代码) 所有四个系统都运行相同的操作系统,一个RPM使我可以更容易地将RPM提供给其他人使用,因此我希望用一个软件包完成这项工作 我知道我可以在%post部分中执行此操作,但我需要删除的文件列表很长,因此如果可以,我希望避免此操作。使用单个RPM完成此任务不是一个很好的计划。正如M

我构建了一个RPM,它解压了我在三种不同类型的系统中使用的一堆脚本。我试图添加第四种系统类型,它只需要rpm中打包的文件的子集。是否有一种方法可以让%install部分仅根据简单检查安装部分有效负载。差不多

(sudo代码)

所有四个系统都运行相同的操作系统,一个RPM使我可以更容易地将RPM提供给其他人使用,因此我希望用一个软件包完成这项工作


我知道我可以在%post部分中执行此操作,但我需要删除的文件列表很长,因此如果可以,我希望避免此操作。

使用单个RPM完成此任务不是一个很好的计划。正如Marc所说,你可以像在其他任何地方一样编写shell脚本,但基于你的问题,这似乎是不合理的。在你的问题中,你解释了这个RPM是在一台机器上实现的,那么为什么不为那个特定的系统打包一个RPM呢?这降低了其他用户需要维护RPM时RPM的复杂性,同时也减少了RPM的膨胀。从短期来看,单个RPM可能更容易,但从长远来看,多个RPM将是更好的解决方案。

您可以让spec文件一次发出多个RPM文件。这就是所谓的


如果您调整它们,使它们与各种机器上给定的依赖项相匹配,那么最终可能会得到一定数量的软件包,这些软件包可以根据需要进行安装。

rpm安装脚本不就是shell脚本吗?您可以简单地在一个文件中列出所有要安装的文件,然后
install`cat filelist`
或任何与rpm脚本等效的东西。我同意一个rpm不是一个好的解决方案,但您可以使用所有通用文件的“基本”rpm,而不是对第四个系统使用不同的rpm,这会导致代码重复,和另一个包含额外文件的包,这些文件依赖于基本包。@Eran,这是另一种可能性,但问题是,有三个RPM(基本、1型机器的包和2型机器的包),而不是两个RPM。当别人解释说他们必须安装这个基本软件包,然后根据机器类型安装两个软件包中的一个时,这可能会让他们感到困惑。构建一个YUM数据库,并使用YUM进行所有安装。它很容易部署,并解决所有这些问题。
if systemtype eq "type4"; then
    install %file4
else
    install %file
fi