在 RPM 规范文件中配置依赖项

Configure depencencies in RPM spec file

我正在尝试使用 RPM 托管 Django Web 应用程序。

这个 RPM 包,当安装在裸机 centos 机器上时,应该安装所有需要的依赖项并配置 httpd 服务器来为应用程序提供服务。

这是我的 RPM 规范文件的要点。

Requires:       epel-release, python2, python-setuptools, python-pip, python-virtualenv, python-devel, httpd, mod_wsgi, git, sqlite

据我所知,python-pip可以在centos 7上安装epel-release包后安装。

https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F

基本上,

My RPM package --> depends on --> python-pi --> Depends on --> epel-release

这就是为什么我在 Requires 标签中添加 epel-release 作为第一个依赖项。

但是,当我安装我的 RPM 包时,出现错误并且安装失败。

这就是我安装包的方式。

yum localinstallinstall packagename-1-1.0.x86_64.rpm -v

我收到的错误是"No package python-pip found"

epel-release 已标记为安装。但是还没有安装,因为也没有找到 python-pip,所以失败了。

我想要实现的是它应该安装 epel-release 以及然后安装 python-pip。

RPM 尝试在安装任何东西之前解决所有依赖关系。这可以防止您安装一堆软件包,然后说 "Oops, we can't find python-pip" 并回滚。如果尚未安装 epel-release 包,则 yum 不知道在哪里可以找到 python-pip,因此无法配置依赖项。

问题是 python-pip 不以同样的方式依赖于 epel-release;它不是由 RPM 系统管理的依赖项。相反,安装 epel-release 将告诉 yum 它以前不知道存在的新存储库。一旦有了它,它就可以安装 python-pip 就好了。

相反,您应该删除 epel-release 依赖项,并在文档中说明您的包需要 EPEL。