在RPM spec文件中配置依赖项

Aak*_*ate 2 pip rpm rpmbuild

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

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

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

Requires:       epel-release, python2, python-setuptools, python-pip, python-virtualenv, python-devel, httpd, mod_wsgi, git, sqlite
Run Code Online (Sandbox Code Playgroud)

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

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

基本上,

我的RPM包 - >取决于 - > python-pi - >取决于 - > epel-release

这就是为什么我在Requires标签的spec文件中添加了epel-release作为第一个依赖项.

但是,当我安装我的RPM包时,我收到错误并且安装失败.

这是我安装我的包的方式.

yum localinstallinstall packagename-1-1.0.x86_64.rpm -v
Run Code Online (Sandbox Code Playgroud)

我收到的错误是"找不到包python-pip"

epel-release标记为安装.但是还没有安装,因为找不到python-pip,它也失败了.

我想要实现的是它应该安装epel-release然后再安装python-pip.

Dan*_*l H 5

RPM尝试在安装任何内容之前解析所有依赖项.这可以防止你安装一堆软件包然后说"哎呀,我们找不到python-pip"并回滚.如果epel-release尚未安装软件包,yum则不知道在哪里查找python-pip,因此无法配置依赖项.

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

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