إصدار CentOS Linux 7.3.1611
مدير حزم أنظمة التشغيل
Traceback (آخر مكالمة أخيرة):
ملف "/ bin / certbot" ، السطر 7 ، بتنسيق
من certbot.main import main
ملف "/usr/lib/python2.7/site-packages/certbot/main.py" ، السطر 17 ، في
من عميل استيراد certbot
ملف "/usr/lib/python2.7/site-packages/certbot/client.py" ، السطر 10 ، في
من acme import client كـ acme_client
ملف "/usr/lib/python2.7/site-packages/acme/client.py" ، السطر 31 ، في
request.packages.urllib3.contrib.pyopenssl.inject_into_urllib3 () # type: ignore
ملف "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py" ، السطر 112 ، في injection_into_urllib3
_validate_dependencies_met ()
ملف "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py" ، السطر 147 ، في _validate_dependencies_met
رفع ImportError ("تفتقد الوحدة النمطية 'pyOpenSSL' الوظيفة المطلوبة."
ImportError: تفتقد الوحدة النمطية 'pyOpenSSL' الوظيفة المطلوبة. حاول الترقية إلى الإصدار v0.14 أو أحدث.
يجب أن يجدد بنجاح بدلاً من الأخطاء.
/var/log/letsencrypt
افتراضيًا. لا تتردد في تنقيح المجالات والبريد الإلكتروني وعناوين IP كما تراه مناسبًا.لا توجد إدخالات في السجل. لقد قمت بإزالة pyopenssl وإعادة تثبيته.
الاسم: pyOpenSSL
الإصدار: 16.2.0
الملخص: وحدة غلاف Python حول مكتبة OpenSSL
الصفحة الرئيسية: https://pyopenssl.readthedocs.io/
المؤلف: Hynek Schlawack
المؤلف البريد الإلكتروني: [email protected]
الترخيص: رخصة أباتشي ، الإصدار 2.0
الموقع: /usr/lib64/python2.7/site-packages
يتطلب: ستة ، تشفير
لكن الخطأ لا يزال قائما. اي فكرة ؟
ربما هناك العديد من إصدارات pyOpenSSL بحيث يتم الخلط بين urllib3. في /usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py ، يجب أن تكون هناك بعض الأسطر مثل هذا:
# pyOpenSSL 0.14 and above use cryptography for OpenSSL bindings. The _x509
# attribute is only present on those versions.
from OpenSSL.crypto import X509
x509 = X509()
if getattr(x509, "_x509", None) is None:
raise ImportError("'pyOpenSSL' module missing required functionality. "
"Try upgrading to v0.14 or newer.")
هل يمكنك إضافة بعض رموز التصحيح ومعرفة ما هو الإخراج؟
# pyOpenSSL 0.14 and above use cryptography for OpenSSL bindings. The _x509
# attribute is only present on those versions.
import OpenSSL.crypto
print(OpenSSL.crypto)
from OpenSSL.crypto import X509
x509 = X509()
if getattr(x509, "_x509", None) is None:
raise ImportError("'pyOpenSSL' module missing required functionality. "
"Try upgrading to v0.14 or newer.")
احذر من أن لغة Python لا تحب علامات التبويب. دائما أدخل مسافات لتحديد الهوية. أيضا ، أنت بحاجة إلى الجذر لتعديل هذا الملف.
هنا هو الإخراج:
Traceback (آخر مكالمة أخيرة):
ملف "/ bin / certbot" ، السطر 7 ، بتنسيق
من certbot.main import main
ملف "/usr/lib/python2.7/site-packages/certbot/main.py" ، السطر 17 ، في
من عميل استيراد certbot
ملف "/usr/lib/python2.7/site-packages/certbot/client.py" ، السطر 10 ، في
من acme import client كـ acme_client
ملف "/usr/lib/python2.7/site-packages/acme/client.py" ، السطر 31 ، في
request.packages.urllib3.contrib.pyopenssl.inject_into_urllib3 () # type: ignore
ملف "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py" ، السطر 112 ، في injection_into_urllib3
_validate_dependencies_met ()
ملف "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py" ، السطر 149 ، في _validate_dependencies_met
رفع ImportError ("تفتقد الوحدة النمطية 'pyOpenSSL' الوظيفة المطلوبة."
ImportError: تفتقد الوحدة النمطية 'pyOpenSSL' الوظيفة المطلوبة. حاول الترقية إلى الإصدار v0.14 أو أحدث.
/usr/lib64/python2.7/site-packages/OpenSSL/crypto.so
يبدو هذا المسار مثل حزمة pyOpenSSL سابقة. هل يمكنك إزالة pyOpenSSL عبر yum والمحاولة مرة أخرى؟
أواجه نفس المشكلة على centos7. لا تساعد إزالة pyOpenSSL.x86_64 0: 0.13.1-3.el7 ، لأن yum install certbot
سيعيد تثبيته مرة أخرى.
ومع ذلك ، وجدت حلاً بديلاً لعطل RPM:
yum remove pyOpenSSL.x86_64
cd
mkdir virtualenv
cd virtualenv/
virtualenv --no-site-packages -p /usr/bin/python2.7 certbot
. ~/virtualenv/certbot/bin/activate
pip import six packaging appdirs
pip install setuptools --upgrade pip install certbot
certbot help
نفس المشكلة هنا على تثبيت centos جديد.
rpm --query centos-release # centos-release-7-3.1611.el7.centos.x86_64
wget ftp://ftp.muug.mb.ca/mirror/centos/7.3.1611/cloud/x86_64/openstack-mitaka/common/pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo rpm -Uvh pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo yum install certbot
certbot renew # OK
أعتقد أن هذه مشكلة CentOS أكثر من كونها مشكلة certbot. هل يمكن لأي شخص إبلاغ CentOS بأن pyOpenSSL الخاص به قديم جدًا؟
استمرت المشكلة في نظامي حتى بعد الترقية إلى pyOpenSSL 16. شيء ما
حدثت نفس المشكلة مؤخرًا على جهاز CentOS 7 الخاص بي.
الحل الوحيد العملي هو pip install pyOpenSSL=0.13.1
في الشهرين الماضيين ، فشلت.
وحاولت مرة أخرى الآن ، لكنها فشلت مرة أخرى.
الإخراج:
>> sudo certbot certonly --standalone -d mydomain.com
<< Traceback (most recent call last):
File "/bin/certbot", line 9, in <module>
load_entry_point('certbot==0.12.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 10, in <module>
from acme import client as acme_client
File "/usr/lib/python2.7/site-packages/acme/client.py", line 31, in <module>
requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()
File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 112, in inject_into_urllib3
_validate_dependencies_met()
File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 147, in _validate_dependencies_met
raise ImportError("'pyOpenSSL' module missing required functionality. "
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
ثم أحاول هذا وهو يعمل:
رابط الإجابة: https://serverfault.com/questions/830284/certbot-for-letsencrypt-missing-pyopenssl-module
للإشارة فقط ... من غير الآمن عمومًا تحديث pyOpenSSL عبر pip على CentOS نظرًا لأنه من الممكن كسر yum بهذه الطريقة.
ما هي حزمة certbot التي تستخدمها؟ سأكون ممتنًا إذا كان بإمكانك تثبيت 0.13.0 من اختبار epel ، والتأكد دائمًا من أن نظامك لديه تحديث yum كامل.
قد تحتاج إلى استخدام yum لإعادة تثبيت pyOpenSSL لإصلاح نظامك (تحقق من حالته باستخدام rpm -qV pyOpenSSL).
هناك مشكلة في مؤقت تجديد systemd مع هذه الحزمة ، وهذا هو السبب في أنني لم أقم بدفعها إلى الاستقرار ، ولكن فقط أقوم بإجراء طلبات certbot وسيعمل تجديد certbot اليدوي.
الإصدار 0.14.0 في طريقه أيضًا ... وقد اختبرت ذلك للتو في AWS.
أشعر بالفضول - قام المؤلف الأصلي بتثبيته عبر مدير الحزم ، فأين سنثبّت إصدارًا من أجل النقطة؟
هل لا يزال الناس يعانون من هذه المشكلة؟ وإذا كان الأمر كذلك ، فما طريقة التثبيت التي تستخدمها؟
قد ترغب في تجربة الطريقة الموضحة في Dockerfile هذا ، والتي عملت معي:
https://github.com/identinetics/docker-nginx/blob/master/Dockerfile#L65
لا تزال تواجه المشكلة في نظام CentOS 7.3 المحدث والمثبت حديثًا.
تم إصلاح المشكلة عن طريق تثبيت pyOpenSSL rpm المحدث (بدا pyOpenSSL-0.14-3.fc222 كافياً ، بينما لم يعمل pyOpenSSL-16.2.0-1.fc25) ، ولكن كيف تتأكد من أنه لا يكسر أي شيء آخر؟!
https://www.rpmfind.net/linux/rpm2html/search.php؟query=pyOpenSSL
شكرا
@ tisc0 أنا مهتم جدًا بمزيد من التفاصيل حول كيفية تثبيت هذا
عندما أنشأت حزم centos7 certbot ، اختبرتها في AWS دون أي مشاكل - وبالتأكيد ليس ما وصفته أو وصفه لهذه المشكلة.
إنها لفكرة مروعة أن تقوم بتثبيت فيدورا rpm مثل ذلك مباشرة على centos7 - خاصة مع حزمة أساسية مثل pyOpenSSL.
مرحبا هوغارثج ،
آسف لقلة التفاصيل ، مشغول نوعا ما هذه الأيام :)
باختصار :
[ root @ c7-dse ~] # echo N | yum يزيل python-urllib3 | awk "{print $ 1}"
(...)
التبعيات
==============
صفقة
إزالة:
python-urllib3
إزالة
سيرتبوت
ipa- العميل
طلبات بيثون
python2-acme
python2-certbot
python2-ipaclient
python2-ipalib
نرحب بأي فكرة لشرح سبب إعادة تثبيت بعض الحزم وجعلها تعمل :)
@ tisc0 شكرا على التفاصيل الإضافية
غالبًا ما يتسبب التثبيت / الإزالة الإجباري للحزم في حدوث مشكلات - كما هو الحال مع ترقيات مكتبات النظام.
نادرًا ما يكون من الجيد الحصول على حزمة Fedora لاستخدام CentOS دون إعادة بناء الحزمة نفسها من src.rpm
من خلال إعادة تثبيت الحزم (بدلاً من إجراء إزالة وتثبيت مع مشكلات التبعية ، يمكن أن تكون إعادة التثبيت هي المنقذ) يتم التحقق من صحة الملفات الأصلية.
أنا سعيد جدًا لسماع أن إعادة تثبيت حزم CentOS تعمل من أجلك :)
نظرًا لأن @ tisc0 يبدو أن لديه إعداد عمل الآن ،
بالنسبة إلى CentOS7 ، ما عليك سوى "mv /usr/lib64/python2.7/site-packages/OpenSSL /usr/lib64/python2.7/site-packages/pyOpenSSL" ، وهذا يعمل مثل السحر بالنسبة لي !!!
الاختراق القذر: 1st_place_medal: ؛)
واجهت نفس المشكلة ، وذلك لأن pip install -U
قام بالكتابة فوق وحدات python المثبتة من RPM.
لحل هذا قمت بما يلي:
File "/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py", line 147, in _validate_dependencies_met
raise ImportError("'pyOpenSSL' module missing required functionality. "
ImportError: 'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.
[root<strong i="12">@kolla</strong> ~]# rpm -qf /usr/lib64/python2.7/site-packages/OpenSSL/
pyOpenSSL-0.13.1-3.el7.x86_64
[root<strong i="13">@kolla</strong> ~]# rpm -qf /usr/lib/python2.7/site-packages/urllib3
python-urllib3-1.10.2-2.el7_1.noarch
[root<strong i="14">@kolla</strong> ~]# rpm --nodeps -e python-urllib3
[root<strong i="15">@kolla</strong> ~]# rm -rf /usr/lib/python2.7/site-packages/urllib3/
[root<strong i="16">@kolla</strong> ~]# yum -y install python-urllib3
File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 90, in <module>
from urllib3.exceptions import DependencyWarning
ImportError: cannot import name DependencyWarning
[root<strong i="20">@kolla</strong> ~]# rpm -qf /usr/lib/python2.7/site-packages/requests
python-requests-2.6.0-1.el7_1.noarch
[root<strong i="24">@kolla</strong> ~]# rpm --nodeps -e python-requests
[root<strong i="25">@kolla</strong> ~]# rm -rf /usr/lib/python2.7/site-packages/requests
[root<strong i="26">@kolla</strong> ~]# yum -y install python-requests
واجهت نفس المشكلة مرة أخرى ، هذه المرة كان من الأسهل بكثير استخدام حاوية عامل الإرساء :)
alias certbot='docker run --rm -ti -v /etc/letsencrypt:/etc/letsencrypt -p 80:80 certbot/certbot:v0.21.1'
cnritng إنه يعمل أيضًا بالنسبة لي
أي شخص لا يزال يعاني من هذه المشكلة ، جرب هذا:
rpm --query centos-release # centos-release-7-3.1611.el7.centos.x86_64
wget ftp://ftp.muug.ca/mirror/centos/7/cloud/x86_64/openstack-newton/common/pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo rpm -Uvh pyOpenSSL-0.15.1-1.el7.noarch.rpm
sudo yum install certbot
certbot renew # OK
من sulliwane . لاحظ أن العنوان ftp://ftp.muug.ca/mirror/...
قد تغير.
شكرا JellyBool
فعل هذا وأصلح كل شيء. yum قم بتثبيت http://cbs.centos.org/kojifiles/packages/pyOpenSSL/16.2.0/3.el7/noarch/python2-pyOpenSSL-16.2.0-3.el7.noarch.rpm
يا رفاق ، لا تخلط yum
الحزم المثبتة من خلال pip
. يتضمن الإصلاح المناسب إزالة حزم النقطة وتثبيت كل شيء بدءًا من yum
. لقد حددتها هنا .
لا تحتاج إلى أحدث إصدار من pyOpenSSL على CentOS 7 لتشغيل certbot! كي لا نقول إن الاعتماد على الحزم الثالثة لن يقودك إلى أي شيء جيد ، في النهاية :)
pip uninstall requests
yum reinstall python-requests
pip uninstall six
yum reinstall python-six
pip uninstall urllib3
yum reinstall python-urllib3
الخطوات المذكورة أعلاه من dvershinin هي الحيلة بالنسبة لي
حصلت أيضًا على أشياء تعمل مع ما نشرته dvershinin . كان علينا تغيير السطر الأخير من "yum أعد تثبيت python-urllib3" إلى "yum install python-urllib3"
بالنسبة إلى CentOS7 ، ما عليك سوى "mv /usr/lib64/python2.7/site-packages/OpenSSL /usr/lib64/python2.7/site-packages/pyOpenSSL" ، وهذا يعمل مثل السحر بالنسبة لي !!!
دائمًا ما يواجه النظام الشبيه بالنافذة * المشاكل المماثلة: تبعية الملف معطلة.
https://github.com/certbot/certbot/issues/4514#issuecomment -375741595
عملت من أجلي
يا رفاق ، لا تخلط
yum
الحزم المثبتة من خلالpip
. يتضمن الإصلاح المناسب إزالة حزم النقطة وتثبيت كل شيء بدءًا منyum
. لقد حددتها هنا .لا تحتاج إلى أحدث إصدار من pyOpenSSL على CentOS 7 لتشغيل certbot! كي لا نقول إن الاعتماد على الحزم الثالثة لن يقودك إلى أي شيء جيد ، في النهاية :)
pip uninstall requests yum reinstall python-requests pip uninstall six yum reinstall python-six pip uninstall urllib3 yum reinstall python-urllib3
شكرا لك! إنه عمل!
dvershinin fix لا يعمل بالنسبة لي حاليًا - بعد اتباع الخطوات التي وصفها في Centos 7 ، أتلقى الخطأ التالي:
VersionConflict: (urllib3 1.10.2 (/usr/lib/python2.7/site-packages)، Requirement.parse ('urllib3> = 1.20، <1.26'))
@ keir-lavelle الإصلاح الخاص بي هو مجرد محاولة لاستعادة النظام إلى حالته الأصلية بعد تعرضه لأضرار بالغة باستخدام مستخدم pip
تحت root
(وهو ما يجعل الناس يفعلون ذلك ، دون مراعاة حقيقة أنه لا ينبغي أبدًا القيام بذلك في أنظمة CentOS / RHEL!)
لذلك إذا كنت تشعر بالمغامرة في إصلاحه ، يمكنك اتباع الرابط الذي قدمته والذي يحاول إصلاحه بشكل أكبر عن طريق إزالة جميع حزم Python (ضع في اعتبارك أن yum
يعتمد على Python أيضًا) ، وهو علاوة على ذلك مشروع خطير . (لأنه يمكنك كسر المزيد).
certbot
، فيجب أن تكون بخيرyum
في حالة صالحة للعمل ).وبالطبع ، من المفيد التذكر مرة أخرى: لا تستخدم تثبيتات pip
أو python
أقل من root
. هذا كيف ينكسر في المقام الأول. إذا لم يحدث - فلن ينكسر.
نشكرك على الوقت الذي استغرقته في التوضيح ، أنا فقط أختبر الأشياء في الوقت الحالي ، لذا يمكن التخلص من الخادم ، لذا لا توجد مشكلة كبيرة إذا تعطل ولكن أقدر المعلومات
التعليق الأكثر فائدة
يا رفاق ، لا تخلط
yum
الحزم المثبتة من خلالpip
. يتضمن الإصلاح المناسب إزالة حزم النقطة وتثبيت كل شيء بدءًا منyum
. لقد حددتها هنا .لا تحتاج إلى أحدث إصدار من pyOpenSSL على CentOS 7 لتشغيل certbot! كي لا نقول إن الاعتماد على الحزم الثالثة لن يقودك إلى أي شيء جيد ، في النهاية :)