在RPM规范文件中配置依赖关系

时间:2018-06-26 07:25:58

标签: pip rpm rpmbuild

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

此RPM软件包安装在裸机centos机器上时,应安装所有必需的依赖项并配置httpd服务器以为应用程序提供服务。

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

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

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

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

基本上,

  

我的RPM软件包->取决于-> python-pi->取决于->   释放精灵

这就是为什么我在 Requires 标记中的规范文件中将 epel-release 添加为第一依赖项的原因。

但是,当我安装RPM软件包时,出现错误,安装失败。

这是我安装软件包的方式。

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

我收到的错误是“未找到包python-pip”

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

我要实现的是它也应该安装epel-release,然后再安装python-pip。

1 个答案:

答案 0 :(得分:5)

RPM尝试在安装任何组件之前解决所有依赖性。这样可以防止您安装一堆软件包,然后说“糟糕,我们找不到python-pip”并回滚。如果尚未安装epel-release软件包,则yum不知道在哪里可以找到python-pip,因此无法配置依赖项。

问题在于python-pip并不以相同的方式依赖epel-release;它不是RPM系统管理的依赖项。相反,安装epel-release会告诉yum以前不知道的新存储库。安装完成后,就可以安装python-pip了。

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