عندما أقوم بتشغيل 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: 7.4
أظن أن هذا يرجع إلى التعارض بين حزم 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 (Core)
Edit2: فيما يتعلق بـ https://github.com/certbot/certbot/issues/6245 ، تم تثبيت python-urllib3 باستخدام yum ، والإصدار الحالي (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
لذا من الواضح أن هناك تبعية لإصدار صامت لـ urllib3.contrib.pyopenssl
على pyOpenSSL
v0.14 ، والتي لم يتم توفيرها بواسطة Centos7 في هذه المرحلة.
تحرير: بعد تثبيت إصدار أحدث (0.15.1) من https://cbs.centos.org/koji/buildinfo؟buildID=1500 ، يختفي الخطأ أعلاه ، ولكن ليس الخطأ الناتج عن 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
، لا يحتوي /usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py
على رمز لإصدار استثناء إذا كان إصدار pyOpenSSL أقل من 0.14.
أعتقد أن لديك مزيجًا من الحزم من مصادر مختلفة. يوجد مجتمع أكبر على https://community.letsencrypt.org والذي يجب أن يكون قادرًا على مساعدتك في تعقب المشكلة.
أنت محق. بعد إجراء بحث متعمق ، ظهر أن شيئًا ما كان يجب أن يقوم بتثبيت وحدة باستخدام pip3 ، تم تثبيته بالفعل باستخدام python -m pip
... باستخدام python2.7 والكتابة فوق urllib3/conrtib/pyopenssl.py
... شكرًا للمؤشرات الخاصة بك ، مما أجبرني على البحث أكثر :)
نفس المشكلة لدي هنا.
ملف "/usr/lib/python2.7/site-packages/acme/client.py" ، السطر 39 ، في
urllib3.contrib.pyopenssl.inject_into_urllib3 ()
AttributeError: الكائن "module" ليس له سمة "pyopenssl"
سنتوس 7.3
هذا هو الحل الخاص بي:
pip install requests==2.6.0
easy_install --upgrade pip
أنا أرى هذا الآن أيضًا. تثبيت جديد لـ Centos 7 ، بدون تثبيت أي شيء آخر عبر نقطة ، و certbot مثبت عبر yum
Linux localhost.localdomain 3.10.0-862.2.3.el7.x86_64 # 1 SMP الأربعاء 9 مايو 18:05:47 بالتوقيت العالمي المنسق 2018 x86_64 x86_64 x86_64 GNU / Linux
لم تنجح نصيحة monkeyWie بالنسبة لي
[ المتشرد @ localhost ~] طلبات تثبيت $ pip == 2.6.0
تم تلبية المتطلبات بالفعل: الطلبات == 2.6.0 في /usr/lib/python2.7/site-packages
كنت أستخدم certbot على ما يرام حتى أيام قليلة مضت عندما لم أتمكن من تشغيله على الإطلاق في أي من أبنيتي Centos 7 الجديدة.
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 وإضافة Certbot من Epel repo تسبب في نفس المشكلة. تم حل المشكلة عن طريق التشغيل
pip install requests==2.6.0
أرى أن هذا لا يزال يمثل مشكلة.
نفسه.
إصدار CentOS Linux 7.6.1810 (Core)
تثبيت:
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 لا يعمل. بحاجة لإصلاحه بعد
التثبيت الأولي. قد يرغب المرء في تثبيته في حالة عمل.
في الأحد ، 14 أبريل 2019 ، الساعة 7:54 مساءً ، Michael Lindner ، [email protected]
كتب:
هذا هو الحل الخاص بي:
طلبات تثبيت النقطة == 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 repo لإضافة certbot.
في الإثنين ، 15 أبريل 2019 ، الساعة 19:35 ، كتب براد وارن ، [email protected] :
إذا كان بإمكان أي شخص تقديم إرشادات حول كيفية إعادة إنتاج هذا ، فمن الأفضل في
شيء مثل Docker ، سأكون سعيدًا بإلقاء نظرة أخرى ، لكنني ما زلت
أعتقد أن هذا يحدث فقط إذا قمت بتثبيت حزم Python من عدة
المصادر.يحدث هذا عادةً بسبب تثبيت الحزم من كل من yum و pip و
إزالة الحزم التي قمت بتثبيتها مع النقطة وإعادة تثبيتها
مع yum يجب أن يحل المشكلة.-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/certbot/certbot/issues/6328#issuecomment-483346939 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AMsovzeRLjz2j0odmgWGxyyAVy9VBp3Tks5vhLhLgaJpZM4WS5Gq
.
لدي هذه المشكلة (سنتوس)
[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'
ولم يتم تثبيت النقطة
[bob<strong i="10">@bla</strong> ~]# pip install requests==2.6.0
-bash: pip: command not found
أستطيع أن أؤكد أنه يحدث مع تثبيت نظيف لـ Centos 7.6 باستخدام EPEL repo لإضافة certbot.
لسوء الحظ ، لا يمكنني إعادة إنتاجه في 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 قم بتثبيت كل شيء بدءًا من النقطة ، بدلاً من حزم Centos ، فهي قديمة في بعض الأحيان
أستطيع أن أؤكد أنه يحدث مع تثبيت نظيف لـ Centos 7.6 باستخدام EPEL repo لإضافة certbot.
لسوء الحظ ، لا يمكنني إعادة إنتاجه في 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.
إصدار urllib3
المعبأ في الأنظمة المستندة إلى RHEL 7 هو 1.10.2 ولكن لديك 1.25.7. ربما تم تثبيت هذا من خلال pip
. ستؤدي إزالة urllib3
وإعادة تثبيته من خلال yum
حل هذه المشكلة.
إذا كنت بحاجة إلى مساعدة إضافية في هذا الأمر ، فإنني أوصي بالنشر على https://community.letsencrypt.org حيث توجد مجموعة كبيرة من الأشخاص على دراية بـ Certbot وإدارة الخادم والذين ينبغي أن يكونوا قادرين على مساعدتك.
JFYI. لدي نفس المشكلة ولكن ليس لدي pip
/ pip2
أو أي حزم نقطة مثبتة يدويًا.
في حالتي ، كان لدي centos-release-opstools
الذي جلب python2-urllib3 1.21.1-1.el7 and
python2- طلبات 2.19.1-4.el7`.
بعد أن قمت بتعطيل هذا الريبو وإعادة تثبيت الحزم ذات الصلة (تمت إعادة تسميتها إلى python-urllib3 1.10.2-7.el7
و python-requests 2.6.0-8.el7_7
اعتبارًا من CentOS 7.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
. نظرت إلى النظام الأصلي الذي حصلت فيه على خطأ ووجدت أن لديّ أحدث python2-cryptography
من centos-release-ovirt42
repo.
لذا ، لإعادة الإنتاج ، يمكنك تشغيل حاوية عامل ميناء بـ centos:7
والقيام بذلك
yum install -y epel-release centos-release-opstools centos-release-ovirt42
yum install -y certbot
certbot --help`
هذا ممتع (حسب تعريفك للمتعة).
على صورة Docker centos:7
، إذا قمت بتشغيل:
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
أتمنى أن يساعد ذلك شخص ما.
هذا وعملت في بيئتي (سينت أو إس 7 مع urllib3 ترقيتها من نقطة كما هو موضح أعلاهbmw .. بلادي "نقطة" القيادة كان عائدا أيضا أخطاء، إعادة تثبيت اللازمة لذلك):
sudo yum install -y python2-pip
sudo pip uninstall urllib3
sudo yum install -y python-urllib3
مشرف Fedora / CentOS certbot هنا: يُرجى عدم تثبيت الوحدات النمطية على /usr/lib
باستخدام pip
. يتم تعديل بعض حزم CentOS بحيث لا تكرر الرمز الموجود أو لتقوية إعدادات الأمان. يجب أن تتأكد شركات حزم التوزيعات من تثبيت جميع الحزم المطلوبة.
يمكنك التحقق من التثبيت بحثًا عن حزم Python غير المُدارة باستخدام هذا الأمر:
LANG=C rpm -qf /usr/lib/python2.7/site-packages/* | grep 'is not owned by any package'
يجب ألا تحصل على أي إخراج.
قد تكون إضافة yum repos الأخرى مشكلة أيضًا. يجب أن يعمل Fedora EPEL بنسبة 100٪ مع عمليات إعادة الشراء الأساسية من Red Hat / CentOS ولكن لا يمكننا أخذ أي عمليات إعادة شراء أخرى في الاعتبار.
إذا كان لديك فقط مستودعات CentOS الافتراضية (+ EPEL) ممكّنة ولا تزال تتعطل ، فيرجى إخبارنا بذلك. أفضل طريقة هي إنشاء مشكلة في Bugzilla ولكن الإشارة إلى @ هنا تعمل أيضًا (في الوقت الحالي - قد يتغير مشرفو certbot في Fedora / EPEL).
FelixSchwarz ، ماذا عن حزم إعادة الشراء CentOS SIG مثل centos-release-opstools
؟ عادةً ما أستخدم repos القياسي + epel ولكن fluentd
متاح فقط في opstools
(
في بعض الحالات ، انتهيت للتو من إنشاء بيئة افتراضية باستخدام python3 -mvenv /path/to/new/venv
وتثبيت البرنامج المطلوب هناك (لنقل certbot
+ المدقق المطلوب لنظام أسماء النطاقات). لحسن الحظ أنه لا يلوث /usr/lib
.
grossws يجب أن يعمل Fedora
لقد راجعت للتو عمليات إعادة الشراء الخاصة بـ
0.5.6-5.el7
، أدوات التشغيل 0.4.6-3.el7
(غير مناسب لـ certbot
ولكن لـ borgbackup الذي 2.6.0-0.el7
، أدوات التشغيل 2.19.1-4.el7
1.10.2-7.el7
( python-urllib3
) ، أدوات التشغيل 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: إذا كنت تستخدم حزم certbot الخاصة بـ EPEL ، فلا يجب عليك استخدام مستودعات yum / dnf الأخرى حيث من المحتمل أن تكون غير متوافقة. اطلب من مزود الريبو التوافق مع قاعدة RHEL و Fedora EPEL.
كما أنني وجدت أنه لم يكن من الصعب المساهمة في Fedora EPEL ، لذا إذا كنت تفتقد حزمة ، فيرجى التفكير في أن تصبح مشرفًا على الحزمة (ping me إذا كنت بحاجة إلى إرشادات).
أعتقد أن افتراض بعض أشكال الفساد صحيح. لم يتم تثبيت 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
أتمنى أن يساعد ذلك شخص ما.
ساعد هذا في حالتي (الحلول الأخرى من هذا الموضوع لم تفعل). شكرا لك.
التعليق الأكثر فائدة
هذا هو الحل الخاص بي: