当我像这样运行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
我怀疑这是由于从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.
此类问题是由于从yum
和pip
全局安装软件包引起的。 不幸的是,我无法帮助您清理系统上的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软件包时,这种情况才会发生。
这通常是由于同时安装了yum
和pip
的软件包,并删除了用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.el7
和python-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的一些冲突:
0.5.6-5.el7
,opstools 0.4.6-3.el7
(与certbot
无关,但对于帮助,我也在Fedora / EPEL中维护。2.6.0-0.el7
,opstools 2.19.1-4.el7
1.10.2-7.el7
( python-urllib3
),opstools 1.21.1-1.el7
2.4-1.el7
,opstools 2.5-1.el7
( python2-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
希望能帮助到别人。
就我而言,这有所帮助(该主题的其他解决方案没有帮助)。 谢谢。
最有用的评论
这是我的解决方案: