Certbot: AttributeError:“模块”对象没有属性“ pyopenssl”

创建于 2018-08-30  ·  35评论  ·  资料来源: certbot/certbot

当我像这样运行certbot时:
sudo certbot --nginx
我得到:

Traceback (most recent call last):
  File "/bin/certbot", line 9, in <module>
    load_entry_point('certbot==0.26.1', 'console_scripts', 'certbot')()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 570, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2751, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2405, in load
    return self.resolve()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2411, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python2.7/site-packages/certbot/main.py", line 21, in <module>
    from certbot import client
  File "/usr/lib/python2.7/site-packages/certbot/client.py", line 16, in <module>
    from acme import client as acme_client
  File "/usr/lib/python2.7/site-packages/acme/client.py", line 39, in <module>
    urllib3.contrib.pyopenssl.inject_into_urllib3()
AttributeError: 'module' object has no attribute 'pyopenssl'

我的python版本是2.7.12和linux os:7.4

fedora / redhat / CentOS help wanted

最有用的评论

这是我的解决方案:

pip install requests==2.6.0
easy_install --upgrade pip

所有35条评论

我怀疑这是由于从OS软件包管理器安装的Python软件包与pip类的#6245中的冲突所致。

您在哪个Linux操作系统上以及如何安装Certbot?

我遇到了相同(或几乎相同)的错误:

# yum install certbot
...
Running transaction
  Installing : pyOpenSSL-0.13.1-3.el7.x86_64                                                                                                                                                            1/6
  Installing : python2-josepy-1.1.0-1.el7.noarch                                                                                                                                                        2/6
  Installing : python-ndg_httpsclient-0.3.2-1.el7.noarch                                                                                                                                                3/6
  Installing : python2-acme-0.26.1-1.el7.noarch                                                                                                                                                         4/6
  Installing : python2-certbot-0.26.1-2.el7.noarch                                                                                                                                                      5/6
  Installing : certbot-0.26.1-2.el7.noarch                                                                                                                                                              6/6
  Verifying  : pyOpenSSL-0.13.1-3.el7.x86_64                                                                                                                                                            1/6
  Verifying  : python2-josepy-1.1.0-1.el7.noarch                                                                                                                                                        2/6
  Verifying  : python2-acme-0.26.1-1.el7.noarch                                                                                                                                                         3/6
  Verifying  : python2-certbot-0.26.1-2.el7.noarch                                                                                                                                                      4/6
  Verifying  : certbot-0.26.1-2.el7.noarch                                                                                                                                                              5/6
  Verifying  : python-ndg_httpsclient-0.3.2-1.el7.noarch                                                                                                                                                6/6

Installed:
  certbot.noarch 0:0.26.1-2.el7

Dependency Installed:
  pyOpenSSL.x86_64 0:0.13.1-3.el7    python-ndg_httpsclient.noarch 0:0.3.2-1.el7    python2-acme.noarch 0:0.26.1-1.el7    python2-certbot.noarch 0:0.26.1-2.el7    python2-josepy.noarch 0:1.1.0-1.el7     

Complete!
# certbot --version
Traceback (most recent call last):
  File "/bin/certbot", line 9, in <module>
    load_entry_point('certbot==0.26.1', 'console_scripts', 'certbot')()
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/usr/lib/python2.7/site-packages/certbot/main.py", line 21, in <module>
    from certbot import client
  File "/usr/lib/python2.7/site-packages/certbot/client.py", line 16, in <module>
    from acme import client as acme_client
  File "/usr/lib/python2.7/site-packages/acme/client.py", line 39, in <module>
    urllib3.contrib.pyopenssl.inject_into_urllib3()
AttributeError: 'module' object has no attribute 'pyopenssl'

操作系统版本:CentOS Linux版本7.5.1804(核心)

Edit2:关于https://github.com/certbot/certbot/issues/6245 ,已使用yum安装了python-urllib3,并且当前版本(1.10.2-5.el7)中没有提到的符号链接packages/ssl_match_hostname但作为其中包含文件的常规目录。

尝试重现该问题使我想到了这一点:

# python
Python 2.7.5 (default, Jul 13 2018, 13:06:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib3.contrib.pyopenssl
>>> urllib3.contrib.pyopenssl.inject_into_urllib3()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 118, in inject_into_urllib3                                                                                                   
    _validate_dependencies_met()
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 153, in _validate_dependencies_met                                                                                            
    raise ImportError("'pyOpenSSL' module missing required functionality. "
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
>>>
# yum info pyOpenSSL
...
Installed Packages
Name        : pyOpenSSL
Arch        : x86_64
Version     : 0.13.1
Release     : 3.el7
Size        : 628 k
Repo        : installed

因此,显然pyOpenSSL v0.14上的urllib3.contrib.pyopenssl有一个静默版本依赖性,Centos7目前没有提供。

编辑:从https://cbs.centos.org/koji/buildinfo?buildID=1500安装较新版本(0.15.1)后,上述错误消失了,但是certbot生成的错误消失了。

usr/lib/python2.7/site-packages/acme/client.py一些反复试验使我发现,当我评论from requests_toolbelt.adapters.source import SourceAddressAdapter导入时,错误消失了!
幸运的是,此功能仅使用一次,因此只要我提供source_address我就可以摆脱这种不太精巧的修复程序。 :)

@ github-abcde,我建议发布在https://community.letsencrypt.org。 在全新安装的CentOS 7上,两者:

python -c 'import requests; requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()'

python -c 'import urllib3.contrib.pyopenssl; urllib3.contrib.pyopenssl.inject_into_urllib3()'

为我工作。

此外,在安装python-urllib3 1.10.2-5.el7 ,如果pyOpenSSL版本小于0.14,则/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py不包含引发异常的代码。

我认为您混合使用了各种来源的软件包。 https://community.letsencrypt.org上有一个更大的社区,该社区应该能够帮助您找到问题所在。

你是对的。 经过一番深入的搜索后,发现应该使用pip3安装模块,实际上是使用python -m pip ...使用python2.7安装并覆盖urllib3/conrtib/pyopenssl.py ...。为您的指针,这迫使我进一步寻找:)

我在这里遇到同样的问题。

在第39行中的文件“ /usr/lib/python2.7/site-packages/acme/client.py”
urllib3.contrib.pyopenssl.inject_into_urllib3()
AttributeError:“模块”对象没有属性“ pyopenssl”

centos 7.3

这是我的解决方案:

pip install requests==2.6.0
easy_install --upgrade pip

我现在也看到了全新安装的Centos 7,没有通过pip安装的其他软件,以及通过yum安装的certbot的软件

Linux localhost.localdomain 3.10.0-862.2.3.el7.x86_64#1 SMP周三5月9日18:05:47 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux

@monkeyWie的提示对我不起作用

[ vagrant @ localhost〜 ] $点安装请求== 2.6.0
已满足要求:/usr/lib/python2.7/site-packages中的请求== 2.6.0

直到几天前,当我无法在所有新的centos 7构建中完全使用certbot时,我才使用certbot。

vagrant<strong i="14">@localhost</strong> ~]$ sudo certbot --nginx
Traceback (most recent call last):
  File "/usr/bin/certbot", line 9, in <module>
    load_entry_point('certbot==0.27.1', 'console_scripts', 'certbot')()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 484, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2714, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2332, in load
    return self.resolve()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2338, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python2.7/site-packages/certbot/main.py", line 21, in <module>
    from certbot import client
  File "/usr/lib/python2.7/site-packages/certbot/client.py", line 16, in <module>
    from acme import client as acme_client
  File "/usr/lib/python2.7/site-packages/acme/client.py", line 36, in <module>
    requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()  # type: ignore
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 118, in inject_into_urllib3
    _validate_dependencies_met()
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 153, in _validate_dependencies_met
    raise ImportError("'pyOpenSSL' module missing required functionality. "
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.

此类问题是由于从yumpip全局安装软件包引起的。 不幸的是,我无法帮助您清理系统上的Python环境,但是如果您发布到https://community.letsencrypt.org,则那里的用户群很大,可以为您提供帮助。

我全新安装了Centos 7.6,并从Epel repo中添加了Certbot导致了相同的问题。 通过运行解决了问题
pip install requests==2.6.0

我认为这仍然是一个问题。

相同。
CentOS Linux版本7.6.1810(核心)
安装:

sudo yum install certbot python2-certbot-nginx

并运行:

# certbot --help
Traceback (most recent call last):
  File "/usr/bin/certbot", line 9, in <module>
    load_entry_point('certbot==0.31.0', 'console_scripts', 'certbot')()
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/usr/lib/python2.7/site-packages/certbot/main.py", line 21, in <module>
    from certbot import client
  File "/usr/lib/python2.7/site-packages/certbot/client.py", line 16, in <module>
    from acme import client as acme_client
  File "/usr/lib/python2.7/site-packages/acme/client.py", line 40, in <module>
    urllib3.contrib.pyopenssl.inject_into_urllib3()
AttributeError: 'module' object has no attribute 'pyopenssl'

这是我的解决方案:

pip install requests==2.6.0
easy_install --upgrade pip

在Centos 7上为我工作

同意使用yum的默认安装无法正常工作。 之后需要修复
初始安装。 有人希望它能以一种工作状态安装。

星期日,2019年四月14日,07:54 Michael Lindner, notifications@ github.com
写道:

这是我的解决方案:

点安装请求== 2.6.0
easy_install-升级点

在Centos 7上为我工作

-
您收到此邮件是因为您发表了评论。
直接回复此电子邮件,在GitHub上查看
https://github.com/certbot/certbot/issues/6328#issuecomment-482922170
或使线程静音
https://github.com/notifications/unsubscribe-auth/AMsov79Wu4KJJLs0jJUN-fhs6WO2YROuks5vgsKzgaJpZM4WS5Gq

如果任何人都可以提供有关如何重现此内容的说明,最好是在类似Docker的情况下,我很乐意再看一遍,但我仍然相信,只有当您从多个来源安装了Python软件包时,这种情况才会发生。

这通常是由于同时安装了yumpip的软件包,并删除了用pip安装的软件包,然后用yum重新安装而导致的。问题。

我可以确认使用Centos 7.6全新安装会发生这种情况
EPEL回购以添加certbot。

在2019年4月15日星期一19:35 Brad Warren上, notifications@ github.com写道:

如果有人可以提供有关如何重现此内容的说明,最好是
像Docker这样的东西,我很乐意再看看,但我仍然
相信只有当您从多个位置安装了Python软件包时,才会发生这种情况
资料来源。

这通常是由于安装了yum和pip中的软件包以及
删除您通过pip安装的软件包并重新安装
用yum应该可以解决问题。

-
您收到此邮件是因为您发表了评论。
直接回复此电子邮件,在GitHub上查看
https://github.com/certbot/certbot/issues/6328#issuecomment-483346939
或使线程静音
https://github.com/notifications/unsubscribe-auth/AMsovzeRLjz2j0odmgWGxyyAVy9VBp3Tks5vhLhLgaJpZM4WS5Gq

我遇到了这个问题(centos)
[bob<strong i="6">@bla</strong> ~]# certbot renew 2>&1 | tail -2 urllib3.contrib.pyopenssl.inject_into_urllib3() AttributeError: 'module' object has no attribute 'pyopenssl'
并且未安装pip
[bob<strong i="10">@bla</strong> ~]# pip install requests==2.6.0 -bash: pip: command not found

我可以确认使用EPEL存储库添加certbot的Centos 7.6全新安装会发生这种情况。

不幸的是,我无法在Docker或VPS中复制它。

我仍然很乐意看到有人设法以类似Docker的易于重复的方式重现此问题,但是与此同时,有人遇到了这个问题,以下命令的输出是什么

python -c 'import certbot, requests, urllib3, OpenSSL; print("certbot :", certbot.__version__); print("requests: ", requests.__version__); print("urllib3 :", urllib3.__version__); print("OpenSSL :", OpenSSL.__version__)'
ls /usr/lib/python2.7/site-packages/urllib3/contrib

有趣。 这是我为Centos 7进行的第二次全新安装。

这次,我使用最小的ISO进行了全新安装,并且可以正常工作。 我看到安装的Centos请求包也为2.6。 自最初出现此问题以来,请求可能已更新。
python2-requests-2.6.0-0.el7.noarch

[root<strong i="9">@centos7</strong> ~]# python -c 'import certbot, requests, urllib3, OpenSSL; print("certbot :", certbot.__version__); print("requests: ", requests.__version__); print("urllib3 :", urllib3.__version__); print("OpenSSL :", OpenSSL.__version__)'
('certbot :', '0.31.0')
('requests: ', '2.6.0')
('urllib3 :', '1.10.2')
('OpenSSL :', '0.13.1')
[root<strong i="10">@centos7</strong> ~]# ls /usr/lib/python2.7/site-packages/urllib3/contrib
__init__.py  __init__.pyc  __init__.pyo  ntlmpool.py  ntlmpool.pyc  ntlmpool.pyo  pyopenssl.py  pyopenssl.pyc  pyopenssl.pyo
[root<strong i="11">@centos7</strong> ~]# certbot
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Certbot doesn't know how to automatically configure the web server on this system. However, it can still get a certificate for you. Please run "certbot certonly" to do so. You'll need to manually configure your web server to use the resulting certificate.

这个问题在centos 7.6和ovirt 4.3上对我来说都发生了。 套件版本为

from EPEL:
certbot-0.31.0-2.el7.noarch

from ovirt-4.3-centos-opstools:
python2-requests-2.19.1-4.el7.noarch 
python2-pyOpenSSL-17.3.0-3.el7.noarch

urllib3.contrib命名空间似乎发生了一些奇怪的事情?

>>> import requests
>>> requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'pyopenssl'
>>> import urllib3.contrib.pyopenssl
>>> urllib3.contrib.pyopenssl.inject_into_urllib3()
>>> dir(urllib3.contrib)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'pyopenssl', 'socks']
>>> from acme import client as acme_client
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/acme/client.py", line 40, in <module>
    urllib3.contrib.pyopenssl.inject_into_urllib3()
AttributeError: 'module' object has no attribute 'pyopenssl'
>>> dir(urllib3.contrib)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'appengine']

当我在acme/client.py执行此操作时,问题消失了:

if sys.version_info < (2, 7, 9):  # pragma: no cover
    import requests.packages.urllib3.contrib.pyopenssl  # pylint: disable=import-error
    requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()  # type: ignore

这是我的解决方案:

pip install requests==2.6.0
easy_install --upgrade pip

在CentOS 7上为我工作

谢谢@monkeyWie-在CentOS7上为我工作

这是我的解决方案:

pip install requests==2.6.0
easy_install --upgrade pip

pip install acme
看到此错误后,我在Centos 7上为我工作

错误:certbot 1.0.0要求acme> = 0.40.0,未安装。

PS从pip安装所有内容,而不是Centos软件包,有时它们很旧

我可以确认使用EPEL存储库添加certbot的Centos 7.6全新安装会发生这种情况。

不幸的是,我无法在Docker或VPS中复制它。

我仍然很乐意看到有人设法以类似Docker的易于重复的方式重现此问题,但是与此同时,有人遇到了这个问题,以下命令的输出是什么

python -c 'import certbot, requests, urllib3, OpenSSL; print("certbot :", certbot.__version__); print("requests: ", requests.__version__); print("urllib3 :", urllib3.__version__); print("OpenSSL :", OpenSSL.__version__)'
ls /usr/lib/python2.7/site-packages/urllib3/contrib

@bmw我的结果如下:

('certbot :', '1.0.0')
('requests: ', '2.6.0')
('urllib3 :', '1.25.7')
('OpenSSL :', '0.13.1')

_appengine_environ.py   appengine.py   __init__.py   ntlmpool.py   pyopenssl.py   _securetransport    securetransport.pyc  socks.pyc
_appengine_environ.pyc  appengine.pyc  __init__.pyc  ntlmpool.pyc  pyopenssl.pyc  securetransport.py  socks.py

对我来说似乎还可以但是这些其他测试似乎失败了:

$ python -c 'import requests; requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'module' object has no attribute 'packages'

$ python -c 'import urllib3.contrib.pyopenssl; urllib3.contrib.pyopenssl.inject_into_urllib3()'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 118, in inject_into_urllib3
    _validate_dependencies_met()
  File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 160, in _validate_dependencies_met
    "'pyOpenSSL' module missing required functionality. "
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.

在基于RHEL 7的系统中打包的urllib3的版本是1.10.2,但是您有1.25.7。 这可能是通过pip 。 删除urllib3并通过yum重新安装应该可以解决此问题。

如果您需要其他帮助,建议您张贴到https://community.letsencrypt.org ,那里有很多熟悉Certbot和服务器管理的人员可以为您提供帮助。

JFYI。 我遇到了同样的问题,但是没有手动安装pip / pip2或任何pip包。

就我而言,我有centos-release-opstools带来了python2-urllib3 1.21.1-1.el7 and python2-requests 2.19.1-4.el7`。

在我禁用该存储库并重新安装相关软件包(从CentOS 7.7开始,它们被重命名为python-urllib3 1.10.2-7.el7python-requests 2.6.0-8.el7_7 )之后,问题消失了。

@grossws ,感谢您的信息。 您还记得您的错误消息是什么吗?

当我尝试重新创建该设置时,Certbot崩溃,并显示以下信息:

# certbot --help
Traceback (most recent call last):
  File "/usr/bin/certbot", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 3011, in <module>
    parse_requirements(__requires__), Environment()
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 630, in resolve
    raise VersionConflict(dist,req) # XXX put more info here
pkg_resources.VersionConflict: (cryptography 1.7.2 (/usr/lib64/python2.7/site-packages), Requirement.parse('cryptography>=1.9'))

这是因为python2-pyOpenSSL 17.3.0-3.el7软件包声称需要python-cryptography >= 1.3.0 ,但是Python中指定的依赖项是cryptography>=1.9 ,未安装。

@bmw ,我在https://github.com/certbot/certbot/issues/6328#issuecomment -482531925中具有类似的堆栈跟踪

我试图只用epel-release + centos-release-opstools在容器中重现它,但是在cryptography相同版本的冲突。 我查看了出现错误的原始系统,发现从centos-release-ovirt42回购中获得了较新的python2-cryptography

因此,要重现,您可以使用centos:7运行docker容器并执行

yum install -y epel-release centos-release-opstools centos-release-ovirt42
yum install -y certbot
certbot --help`

这很有趣(取决于您对fun的定义)。

centos:7 Docker映像上,如果运行:

yum install -y epel-release centos-release-opstools centos-release-ovirt42
yum install -y python-requests-toolbelt python2-urllib3
python -c 'import urllib3.contrib.pyopenssl; urllib3.contrib.pyopenssl.inject_into_urllib3()'
python -c 'from requests_toolbelt.adapters.source import SourceAddressAdapter; import urllib3.contrib.pyopenssl; urllib3.contrib.pyopenssl.inject_into_urllib3()'

第一个Python命令将成功,而第二个将失败。 唯一的区别是from requests_toolbelt.adapters.source import SourceAddressAdapter导入。

我们计划在接下来的几个月中放弃对Python 2的支持,届时我们将删除此代码。 因此,维护Certbot的小型团队可能不会自己花费很多时间,但是如果有人想深入研究它,我认为最好将引起此问题的任何信息报告给软件包维护者。

我现在要重新打开它。

我认为某种形式的腐败是正确的。 我没有安装python2 pip,所以我不确定我弄坏了什么。 但是,这样可以解决问题:

yum remove python-urllib3
rm -rf /usr/lib/python2.7/site-packages/urllib3 # yes, you need this too
yum reinstall $(yum list installed | grep python | grep -v python3 | awk '{print $1}')
yum install python-urllib3
yum install certbot

希望能帮助到别人。

这在我的环境中有效(如上所述,从pip升级到urllib3的centos 7如@bmw所述。我的“ pip”命令也返回错误,因此需要重新安装):

sudo yum install -y python2-pip
sudo pip uninstall urllib3
sudo yum install -y python-urllib3

这里的Fedora / CentOS certbot维护者:切勿使用pip将模块安装到/usr/lib pip 。 一些CentOS软件包已被修改,因此它们不会复制现有代码或加强安全设置。 发行版打包程序应确保已安装所有必需的程序包。

您可以使用以下命令检查安装中的非托管Python软件包:

LANG=C rpm -qf /usr/lib/python2.7/site-packages/* | grep 'is not owned by any package'

您不应获得任何输出。

另外,添加其他的百胜回购也可能是有问题的。 Fedora EPEL应该与Red Hat / CentOS的基本存储库一起使用100%,但是我们不能考虑其他任何存储库。

如果您仅启用了默认的CentOS仓库(+ EPEL),但仍然崩溃,请通知我们。 最好的方法是创建一个Bugzilla问题,但是@-提到我在这里也可以工作(目前-Fedora / EPEL中的certbot维护人员可能会更改)。

@FelixSchwarz ,诸如centos-release-opstools类的CentOS SIG回购软件包如何? 我通常使用标准存储库+ epel,但是fluentd仅在opstools可用(

在某些情况下,我刚结束使用python3 -mvenv /path/to/new/venv创建虚拟环境并在其中安装所需的软件(例如certbot +所需的dns验证程序)。 幸运的是,它不会污染/usr/lib

@grossws Fedora EPEL应该可以与RHEL Base中的所有内容一起使用(因此可能会有其他分层的Red Hat产品引起冲突)。 除非这些存储库非常小心,否则所有其他资源都可能不兼容,因此它们不会与RHEL / EPEL发行相同的东西。

我刚刚检查了centos-opstools的仓库,并立即注意到与Fedora EPEL的一些冲突:

  • python2-msgpack:EPEL 7有0.5.6-5.el7 ,opstools 0.4.6-3.el7 (与certbot无关,但对于帮助,我也在Fedora / EPEL中维护。
  • python2-requests:EPEL 7具有2.6.0-0.el7 ,opstools 2.19.1-4.el7
  • python2-urllib3:EPEL 7 1.10.2-7.el7python-urllib3 ),opstools 1.21.1-1.el7
  • python-idna:RHEL Base发货2.4-1.el7 ,opstools 2.5-1.el7python2-idna

这并不意味着centos-opstools库不能与EPEL的certbot软件包一起使用,但是存在一些冲突,并且这绝对是未经测试的配置。 centos-opstools还会替换RHEL基础中的软件包,这意味着您应该格外小心,因为这也可能破坏主发行版中的很多内容。

tl; dr:如果您使用EPEL的certbot软件包,则不应使用其他yum / dnf存储库,因为它们可能不兼容。 询问回购提供者与RHEL base和Fedora EPEL的兼容性。

我还发现为Fedora EPEL做出贡献并不难,因此,如果您缺少软件包,请考虑成为软件包维护者(如果需要指导,请联系我)。

我认为某种形式的腐败是正确的。 我没有安装python2 pip,所以我不确定我弄坏了什么。 但是,这样可以解决问题:

yum remove python-urllib3
rm -rf /usr/lib/python2.7/site-packages/urllib3 # yes, you need this too
yum reinstall $(yum list installed | grep python | grep -v python3 | awk '{print $1}')
yum install python-urllib3
yum install certbot

希望能帮助到别人。

就我而言,这有所帮助(该主题的其他解决方案没有帮助)。 谢谢。

此页面是否有帮助?
0 / 5 - 0 等级