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

when creating RPM package, how to auto install dependencies

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

现在我要把程序打包成RPM包,它应该可以自动安装依赖,这样RPM包就可以安装在干净的RHEL机器上,程序可以运行即时安装后。

问题是如果我在 SPEC 文件 %pre 部分中编写以下脚本,它会在 "transaction" 期间卡住。

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

看来你不能在SPEC文件中使用其他rpm安装工具。

我该怎么做?

是:安装时有一个独占的 rpmdb 锁,防止所有在包脚本中使用 rpm 的尝试。

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

否则创建一个简短的 shell 脚本来调用 rpm/yum 来自动安装。

您不能直接这样做,您不能从您的 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 包之前下载并安装所需的依赖项。