我的程序基本上是基于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安装工具。
我该怎么做?
答案 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来自动执行安装。