创建RPM软件包时,如何自动安装依赖项

时间:2018-08-07 22:32:24

标签: rpm rpmbuild rpm-spec

我的程序基本上是基于C的MySQL服务器,它需要gcc,mysql-server和mysql-devel才能成功运行。

现在,我必须将程序打包到RPM软件包中,并且它应该能够自动安装依赖项,以便可以将RPM软件包安装在干净的RHEL机器上,并且程序可以在安装后立即运行。

问题是,如果我在SPEC文件的%pre节中编写以下脚本,则会在“交易”期间卡住。

sudo yum groupinstall "Development Tools" -y
sudo yum install mysql-server mysql-client -y

似乎您不能在SPEC文件中使用其他rpm安装工具。

我该怎么做?

2 个答案:

答案 0 :(得分:5)

您不能直接执行操作,也不能从RPM规范文件中安装另一个RPM。

您应该遵循的正常方法是使您的RPM取决于它需要的其他RPM,例如通过将其添加到您的.spec文件中:

 Requires:  gcc, mysql-server, mysql-devel

然后尝试使用rpm命令安装rpm时:

rpm -ivh yourrpm-1.0.0.rpm

它将失败,并告诉您要安装哪些软件包,您必须先手动安装这些软件包。

或者您可以使用yum安装rpm文件:

 yum install ./yourrpm.1.0.0.rpm

yum将在安装RPM软件包之前下载并安装所需的依赖项。

答案 1 :(得分:0)

是的:安装时会保留一个专有的rpmdb锁,以防止从软件包脚本中进行所有使用rpm的尝试。

通常要做的是创建一个自定义yum存储库并调用yum。

否则,请创建一个简短的Shell脚本,该脚本调用rpm / yum来自动执行安装。