我正在尝试使用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软件包后,可以在centos 7上安装python-pip。
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。
最佳答案
RPM尝试在安装任何组件之前解决所有依赖性。这样可以防止您安装一堆软件包,然后说“糟糕,我们找不到python-pip
”并回滚。如果尚未安装epel-release
软件包,则yum
不知道在哪里可以找到python-pip
,因此它无法配置依赖项。
问题在于,python-pip
并不以相同的方式依赖于epel-release
。它不是RPM系统管理的依赖项。相反,安装epel-release
会告诉yum
一个以前不知道的新存储库。一旦有了它,就可以安装python-pip
了。
相反,您应该删除epel-release
依赖性,并在文档中说您的软件包需要EPEL。
关于pip - 在RPM规范文件中配置依赖项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51037161/