Wenn ich certbot so laufen lasse:
sudo certbot --nginx
Ich bekomme:
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'
meine python version ist 2.7.12 und linux os: 7.4
Ich vermute, dass dies auf einen Konflikt zwischen Python-Paketen zurückzuführen ist, die von Ihrem OS-Paketmanager installiert wurden, und pip
wie in # 6245.
Auf welchem Linux-Betriebssystem arbeiten Sie und wie haben Sie Certbot installiert?
Ich habe den gleichen (oder größtenteils ähnlichen) Fehler:
# 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'
Betriebssystemversion: CentOS Linux Release 7.5.1804 (Core)
Edit2: In Bezug auf https://github.com/certbot/certbot/issues/6245 wurde python-urllib3 mit yum installiert, und in der aktuellen Version (1.10.2-5.el7) ist der erwähnte Symlink nicht enthalten packages/ssl_match_hostname
aber als reguläres Verzeichnis mit Dateien darin.
Der Versuch, das Problem zu reproduzieren, führte mich zu folgendem Ergebnis:
# 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
Anscheinend gibt es also eine stille Versionsabhängigkeit für urllib3.contrib.pyopenssl
von pyOpenSSL
v0.14, die von Centos7 derzeit nicht bereitgestellt wird.
Bearbeiten: Nach der Installation einer neueren Version (0.15.1) von https://cbs.centos.org/koji/buildinfo?buildID=1500 verschwindet der obige Fehler, nicht jedoch der von certbot generierte Fehler.
Ein Versuch und Irrtum mit usr/lib/python2.7/site-packages/acme/client.py
führte mich zu der Entdeckung, dass der Fehler verschwindet, wenn ich den Import von from requests_toolbelt.adapters.source import SourceAddressAdapter
kommentiere!
Glücklicherweise wird dies nur einmal verwendet. Solange ich ein source_address
gebe, kann ich mit diesem nicht so subtilen Fix davonkommen. :) :)
@ github-abcde, ich würde empfehlen, unter https://community.letsencrypt.org zu posten
python -c 'import requests; requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()'
und
python -c 'import urllib3.contrib.pyopenssl; urllib3.contrib.pyopenssl.inject_into_urllib3()'
arbeite für mich.
Darüber hinaus enthält /usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py
nach der Installation von python-urllib3 1.10.2-5.el7
keinen Code zum Auslösen einer Ausnahme, wenn die pyOpenSSL-Version kleiner als 0,14 ist.
Ich denke, Sie haben eine Mischung aus Paketen aus verschiedenen Quellen. Unter https://community.letsencrypt.org gibt es eine größere Community, die Ihnen helfen kann, das Problem aufzuspüren.
Du hast recht. Nach eingehender Suche stellte sich heraus, dass etwas, das ein Modul mit pip3 hätte installieren sollen, es tatsächlich mit python -m pip
... mit python2.7 installiert und das urllib3/conrtib/pyopenssl.py
überschrieben ... Danke für deine Hinweise, die mich gezwungen haben weiter zu schauen :)
Das gleiche Problem habe ich hier.
Datei "/usr/lib/python2.7/site-packages/acme/client.py", Zeile 39, in
urllib3.contrib.pyopenssl.inject_into_urllib3 ()
AttributeError: Das Objekt 'module' hat kein Attribut 'pyopenssl'.
Centos 7.3
Das ist meine Lösung:
pip install requests==2.6.0
easy_install --upgrade pip
Ich sehe das jetzt auch. Eine neue Centos 7-Installation, bei der nichts anderes über pip und certbot über yum installiert wurde
Linux localhost.localdomain 3.10.0-862.2.3.el7.x86_64 # 1 SMP Mi 9. Mai 18:05:47 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux
@monkeyWies Tipp hat bei mir nicht funktioniert
[ vagrant @ localhost ~] $ pip Installationsanforderungen == 2.6.0
Anforderung bereits erfüllt: Anfragen == 2.6.0 in /usr/lib/python2.7/site-packages
Ich habe certbot bis vor ein paar Tagen verwendet, als ich es bei keinem meiner neuen Centos 7-Builds zum Laufen bringen konnte.
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.
Probleme wie dieses werden durch die globale Installation von Paketen sowohl von yum
als auch von pip
. Leider kann ich Ihnen nicht dabei helfen, die Python-Umgebung auf Ihrem System zu bereinigen. Wenn Sie jedoch auf https://community.letsencrypt.org posten, gibt es dort eine große Benutzerbasis, die Ihnen helfen kann.
Ich hatte eine Neuinstallation von Centos 7.6 und fügte hinzu, dass Certbot von Epel Repo das gleiche Problem verursachte. Problem durch Ausführen behoben
pip install requests==2.6.0
Ich sehe, dass dies immer noch ein Problem ist.
Gleich.
CentOS Linux Release 7.6.1810 (Core)
Installieren:
sudo yum install certbot python2-certbot-nginx
Und Renn:
# 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'
Das ist meine Lösung:
pip install requests==2.6.0 easy_install --upgrade pip
Arbeitete für mich an Centos 7
Einverstanden. Die Standardinstallation mit yum funktioniert nicht. Muss es danach reparieren
Erstinstallation. Man möchte, dass es in einem funktionierenden Zustand installiert wird.
Am Sonntag, 14. April 2019, 07:54 Uhr Michael Lindner, [email protected]
schrieb:
Das ist meine Lösung:
Pip-Installationsanforderungen == 2.6.0
easy_install --upgrade pipArbeitete für mich an Centos 7
- -
Sie erhalten dies, weil Sie kommentiert haben.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/certbot/certbot/issues/6328#issuecomment-482922170 ,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/AMsov79Wu4KJJLs0jJUN-fhs6WO2YROuks5vgsKzgaJpZM4WS5Gq
.
Wenn jemand Anweisungen zur Reproduktion geben kann, idealerweise in Docker, würde ich gerne einen weiteren Blick darauf werfen, aber ich glaube immer noch, dass dies nur auftritt, wenn Sie Python-Pakete aus mehreren Quellen installiert haben.
Dies wird normalerweise dadurch verursacht, dass Pakete sowohl von yum
als auch von pip
installiert werden und die mit pip
installierten Pakete entfernt und mit yum
neu installiert werden Problem.
Ich kann bestätigen, dass dies bei einer Neuinstallation von Centos 7.6 mit dem geschieht
EPEL-Repo zum Hinzufügen von Certbot.
Am Montag, 15. April 2019, 19:35 Uhr schrieb Brad Warren, [email protected] :
Wenn jemand Anweisungen zur Reproduktion geben kann, idealerweise in
so etwas wie Docker, ich würde gerne noch einen Blick darauf werfen, aber ich immer noch
Ich glaube, dies tritt nur auf, wenn Sie Python-Pakete von mehreren installiert haben
Quellen.Dies wird normalerweise durch die Installation von Paketen von yum und pip und verursacht
Entfernen Sie die mit pip installierten Pakete und installieren Sie sie erneut
mit yum sollte das problem lösen.- -
Sie erhalten dies, weil Sie kommentiert haben.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/certbot/certbot/issues/6328#issuecomment-483346939 ,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/AMsovzeRLjz2j0odmgWGxyyAVy9VBp3Tks5vhLhLgaJpZM4WS5Gq
.
Ich hatte dieses Problem (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'
und pip ist nicht installiert
[bob<strong i="10">@bla</strong> ~]# pip install requests==2.6.0
-bash: pip: command not found
Ich kann bestätigen, dass dies bei einer Neuinstallation von Centos 7.6 mit dem EPEL-Repo zum Hinzufügen von Certbot geschieht.
Leider kann ich es nicht in Docker oder einem VPS reproduzieren.
Ich würde immer noch gerne sehen, wie es jemandem gelingt, dies in etwas leicht Wiederholbarem wie Docker zu reproduzieren, aber in der Zwischenzeit ist die Ausgabe der folgenden Befehle für jemanden, der das Problem trifft
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
Interessant. Dies ist die zweite Neuinstallation, die ich für Centos 7 durchgeführt habe.
Dieses Mal habe ich eine Neuinstallation mit der minimalen ISO durchgeführt und es funktioniert. Ich sehe, dass das installierte Centos-Anforderungspaket ebenfalls 2.6 ist. Möglicherweise wurden die Anforderungen aktualisiert, da dieses Problem ursprünglich aufgetreten ist.
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.
Dieses Problem tritt bei Centos 7.6 zusammen mit Ovirt 4.3 auf. Paketversionen sind
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
Es scheint, dass etwas Seltsames mit dem Namespace urllib3.contrib
passiert oder so?
>>> 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']
Das Problem verschwindet, wenn ich dies in acme/client.py
mache:
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
Das ist meine Lösung:
pip install requests==2.6.0 easy_install --upgrade pip
arbeitete für mich unter CentOS 7
Danke @monkeyWie - hat für mich unter CentOS7 gearbeitet
Das ist meine Lösung:
pip install requests==2.6.0 easy_install --upgrade pip
pip install acme
arbeitete für mich auf Centos 7, nachdem ich diesen Fehler gesehen hatte
FEHLER: Für certbot 1.0.0 ist acme> = 0.40.0 erforderlich, was nicht installiert ist.
PS Installieren Sie alles von Pip, anstatt von Centos-Paketen, sie sind manchmal alt
Ich kann bestätigen, dass dies bei einer Neuinstallation von Centos 7.6 mit dem EPEL-Repo zum Hinzufügen von Certbot geschieht.
Leider kann ich es nicht in Docker oder einem VPS reproduzieren.
Ich würde immer noch gerne sehen, wie es jemandem gelingt, dies in etwas leicht Wiederholbarem wie Docker zu reproduzieren, aber in der Zwischenzeit ist die Ausgabe der folgenden Befehle für jemanden, der das Problem trifft
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 meine Ergebnisse sind wie folgt:
('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
das scheint mir okay zu sein. aber diese anderen Tests scheinen fehlzuschlagen:
$ 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.
Die Version von urllib3
die in RHEL 7-basierten Systemen enthalten ist, ist 1.10.2, aber Sie haben 1.25.7. Dies wurde wahrscheinlich über pip
installiert. Das Entfernen von urllib3
und die Neuinstallation über yum
sollte dieses Problem beheben.
Wenn Sie hierzu zusätzliche Hilfe benötigen, empfehle ich, auf https://community.letsencrypt.org zu posten, wo sich eine große Gruppe von Personen befindet, die mit Certbot und der Serververwaltung vertraut sind und Ihnen helfen können sollten.
JFYI. Ich hatte das gleiche Problem, aber ich habe weder pip
/ pip2
noch manuell installierte Pip-Pakete.
In meinem Fall hatte ich centos-release-opstools
was python2-urllib3 1.21.1-1.el7 and
python2-Anfragen 2.19.1-4.el7` brachte.
Nachdem ich dieses Repo deaktiviert und relevante Pakete neu installiert hatte (sie werden ab CentOS 7.7 in python-urllib3 1.10.2-7.el7
und python-requests 2.6.0-8.el7_7
), verschwand das Problem.
@ Grossws , danke für die Info. Erinnerst du dich an deine Fehlermeldung?
Wenn ich versuche, dieses Setup neu zu erstellen, stürzt Certbot ab mit:
# 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'))
Dies liegt daran, dass das python2-pyOpenSSL 17.3.0-3.el7
-Paket behauptet, python-cryptography >= 1.3.0
erfordern, aber die in Python angegebene Abhängigkeit ist cryptography>=1.9
die nicht installiert ist.
@bmw , ich hatte einen ähnlichen Stacktrace wie in https://github.com/certbot/certbot/issues/6328#issuecomment -482531925
Ich habe versucht, es in einem Container mit nur epel-release
+ centos-release-opstools
zu reproduzieren, habe aber den gleichen Versionskonflikt über cryptography
. Ich habe mir das ursprüngliche System angesehen, bei dem ein Fehler aufgetreten ist, und festgestellt, dass ich ein neueres python2-cryptography
von centos-release-ovirt42
Repo habe.
Um zu reproduzieren, können Sie Docker-Container mit centos:7
ausführen und tun
yum install -y epel-release centos-release-opstools centos-release-ovirt42
yum install -y certbot
certbot --help`
Das macht Spaß (abhängig von Ihrer Definition von Spaß).
Wenn Sie centos:7
Docker-Image
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()'
Der erste Python-Befehl ist erfolgreich, während der zweite fehlschlägt. Der einzige Unterschied ist der Import von from requests_toolbelt.adapters.source import SourceAddressAdapter
.
Wir planen, die Python 2-Unterstützung in den nächsten Monaten einzustellen. Ab diesem Zeitpunkt können wir diesen Code löschen. Aus diesem Grund wird das kleine Team, das Certbot unterhält, wahrscheinlich nicht viel Zeit damit verbringen, aber wenn sich jemand damit befassen möchte, wäre es meiner Meinung nach gut, den Paketbetreuern zu melden, was auch immer dieses Problem verursacht .
Ich öffne das jetzt wieder.
Ich denke, die Annahme einer Form von Korruption ist richtig. Ich hatte keinen Python2-Pip installiert, daher bin ich mir nicht sicher, was ich kaputt gemacht habe. Dies löste jedoch die Dinge aus:
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
Hoffe das hilft jemandem.
Dies funktionierte in meiner Umgebung (Centos 7 mit aktualisiertem urllib3 von pip als @bmw, wie
sudo yum install -y python2-pip
sudo pip uninstall urllib3
sudo yum install -y python-urllib3
Fedora / CentOS Certbot-Betreuer hier: Bitte installieren Sie Module NIEMALS mit /usr/lib
auf pip
. Einige CentOS-Pakete wurden so geändert, dass sie keinen vorhandenen Code duplizieren oder die Sicherheitseinstellungen verbessern. Die Distributions-Packager sollten sicherstellen, dass alle erforderlichen Pakete installiert sind.
Mit diesem Befehl können Sie Ihre Installation auf nicht verwaltete Python-Pakete überprüfen:
LANG=C rpm -qf /usr/lib/python2.7/site-packages/* | grep 'is not owned by any package'
Sie sollten keine Ausgabe erhalten.
Auch das Hinzufügen anderer leckerer Repos kann problematisch sein. Fedora EPEL sollte zu 100% mit den Basis-Repos von Red Hat / CentOS funktionieren, aber wir können keine anderen Repos berücksichtigen.
Wenn Sie nur die Standard-CentOS-Repos (+ EPEL) aktiviert haben und dennoch abstürzen, teilen Sie uns dies bitte mit. Die beste Methode ist , ein Bugzilla-Problem zu
@FelixSchwarz , was ist mit CentOS SIG Repo-Paketen wie centos-release-opstools
? Normalerweise verwende ich Standard-Repos + Epel, aber fluentd
ist nur in opstools
(
In einigen Fällen habe ich gerade die Erstellung einer virtuellen Umgebung mit python3 -mvenv /path/to/new/venv
und dort die erforderliche Software installiert (z. B. certbot
+ erforderlicher DNS-Verifizierer). Zum Glück verschmutzt es nicht /usr/lib
.
@grossws Fedora EPEL sollte mit allem von RHEL Base funktionieren (daher kann es andere geschichtete Red Hat-Produkte geben, die Konflikte verursachen). Alle anderen Quellen können inkompatibel sein, es sei denn, diese Repos sind sehr vorsichtig, sodass sie nicht das gleiche Material wie RHEL / EPEL liefern.
Ich habe gerade die Repos von Centos- Opstools überprüft und sofort einige Konflikte mit Fedora EPEL bemerkt:
0.5.6-5.el7
, Opstools 0.4.6-3.el7
(nicht relevant für certbot
aber für Borgbackup, das ich auch in 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
)Das bedeutet nicht, dass das centos-opstools
-Repo nicht mit den certbot
-Paketen von EPEL funktioniert, aber es gibt einige Konflikte und dies ist definitiv eine ungetestete Konfiguration. Außerdem ersetzt centos-opstools
ein Paket in der RHEL-Basis, was bedeutet, dass Sie besonders vorsichtig sein sollten, da dies auch eine Menge Dinge in der Hauptdistribution beschädigen könnte.
tl; dr: Wenn Sie die Certbot-Pakete von EPEL verwenden, sollten Sie keine anderen yum / dnf-Repos verwenden, da diese wahrscheinlich nicht kompatibel sind. Fragen Sie den Repo-Anbieter nach der Kompatibilität mit RHEL Base und Fedora EPEL.
Ich fand auch, dass es nicht so schwer war, einen Beitrag zu Fedora EPEL zu leisten. Wenn Sie also ein Paket vermissen, sollten Sie in Betracht ziehen, Paketbetreuer zu werden (rufen Sie mich an, wenn Sie Hilfe benötigen).
Ich denke, die Annahme einer Form von Korruption ist richtig. Ich hatte keinen Python2-Pip installiert, daher bin ich mir nicht sicher, was ich kaputt gemacht habe. Dies löste jedoch die Dinge aus:
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
Hoffe das hilft jemandem.
Dies hat in meinem Fall geholfen (andere Lösungen aus diesem Thema haben dies nicht getan). Vielen Dank.
Hilfreichster Kommentar
Das ist meine Lösung: