我们尝试在 rhel 7.2 服务器上安装以下 rpm,但没有成功
uname -r
3.10.0-327.el7.x86_64
yum install python2-cryptography-1.7.2-2.el7.x86_64.rpm
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
.
.
.
--> Processing Dependency: python-cffi >= 1.4.1 for package: python2-cryptography-1.7.2-2.el7.x86_64
--> Processing Dependency: python-idna >= 2.0 for package: python2-cryptography-1.7.2-2.el7.x86_64
--> Processing Dependency: python-pyasn1 >= 0.1.8 for package: python2-cryptography-1.7.2-2.el7.x86_64
--> Processing Dependency: libcrypto.so.10(OPENSSL_1.0.2)(64bit) for package: python2-cryptography-1.7.2-2.el7.x86_64
--> Processing Dependency: python-ipaddress for package: python2-cryptography-1.7.2-2.el7.x86_64
--> Finished Dependency Resolution
Error: Package: python2-cryptography-1.7.2-2.el7.x86_64 (/python2-cryptography-1.7.2-2.el7.x86_64)
Requires: python-ipaddress
Error: Package: python2-cryptography-1.7.2-2.el7.x86_64 (/python2-cryptography-1.7.2-2.el7.x86_64)
Requires: libcrypto.so.10(OPENSSL_1.0.2)(64bit)
Error: Package: python2-cryptography-1.7.2-2.el7.x86_64 (/python2-cryptography-1.7.2-2.el7.x86_64)
Requires: python-cffi >= 1.4.1
Available: python-cffi-0.8.6-2.el7.x86_64 (local)
python-cffi = 0.8.6-2.el7
Error: Package: python2-cryptography-1.7.2-2.el7.x86_64 (/python2-cryptography-1.7.2-2.el7.x86_64)
Requires: python-pyasn1 >= 0.1.8
Available: python-pyasn1-0.1.6-2.el7.noarch (local)
python-pyasn1 = 0.1.6-2.el7
Error: Package: python2-cryptography-1.7.2-2.el7.x86_64 (/python2-cryptography-1.7.2-2.el7.x86_64)
Requires: python-idna >= 2.0
You could try using --skip-broken to work around the problem
** Found 2 pre-existing rpmdb problem(s), 'yum check' output follows:
containerd.io-1.2.13-3.1.el7.x86_64 has installed conflicts containerd: containerd.io-1.2.13-3.1.el7.x86_64
containerd.io-1.2.13-3.1.el7.x86_64 has installed conflicts runc: containerd.io-1.2.13-3.1.el7.x86_64
因为我们得到pre-existing rpmdb problem(s)
我们执行了以下操作
package-cleanup --dupes
package-cleanup --cleandupes
但问题仍然存在
我们还发现 yum 需要的 python 包实际上已安装
例子
pip list | grep idna
idna 2.10
pip list | grep pyasn1
pyasn1 0.1.9
所以我们不明白为什么当 python 软件包已经安装了正确的版本时 yum 会抱怨
答案1
您似乎正在使用pip
以及yum
安装软件包。安装的软件包pip
对 不可见yum
,这就是安装失败的原因。
opensource.com 上的这篇文章很好地解释了这些问题:以正确的方式管理 Python 包。我在这里总结一下关键信息。
pip
当您使用(with )全局安装软件包时sudo pip install
,您将该软件包安装到通常由操作系统软件包管理器控制的系统级位置。但是,包管理器不知道该包,这使得安装与已安装包的数据库不一致。在极端情况下,这可能会导致依赖Python(例如Pythonyum
本身)的系统级应用程序出现问题。
一般来说,在全局安装Python模块时,您应该更喜欢系统的本机包管理器。这些软件包是使用特定版本的操作系统进行测试的,因此它们应该更可靠。
如果您确实想使用pip
安装包,建议使用虚拟环境。使用virtualenv
,您可以获得本地安装,您可以根据需要进行修改。您可以安装所需的任何软件包,而不会危及整个系统的完整性。
与往常一样,两种方法之间都需要权衡。在继续之前仔细评估它们。
根据您的具体情况,您可以通过使用 删除模块pip
,然后通过 重新安装yum
。我不能保证这会起作用,所以请谨慎使用并首先测试该方法。
关于实际的包裹,我能够找到CentOS 7 的列表。在 RHEL 上,您可能需要 Software Collections 存储库来获取此软件包。在决定继续此路线之前,请再次确保您确实可以通过某个渠道获得 RPM 软件包。