Quand je lance certbot comme ça:
sudo certbot --nginx
Je reçois:
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'
ma version python est 2.7.12 et Linux OS: 7.4
Je soupçonne que cela est dû à un conflit entre les packages Python installés à partir de votre gestionnaire de packages OS et pip
comme dans # 6245.
Sur quel système d'exploitation Linux êtes-vous et comment avez-vous installé Certbot?
J'ai la même erreur (ou presque identique):
# 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'
Version du système d'exploitation: CentOS Linux version 7.5.1804 (Core)
Edit2: En ce qui concerne https://github.com/certbot/certbot/issues/6245 , python-urllib3 a été installé en utilisant yum, et la version actuelle (1.10.2-5.el7) n'a pas le lien symbolique mentionné dans packages/ssl_match_hostname
mais en tant que répertoire normal contenant des fichiers.
Essayer de reproduire le problème m'amène à ceci:
# 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
Donc, apparemment, il existe une dépendance de version silencieuse pour urllib3.contrib.pyopenssl
sur pyOpenSSL
v0.14, qui n'est pas fournie par Centos7 à ce stade.
Edit: Après avoir installé une version plus récente (0.15.1) à partir de https://cbs.centos.org/koji/buildinfo?buildID=1500 l'erreur ci-dessus disparaît, mais pas l'erreur générée par certbot.
Quelques essais et erreurs avec usr/lib/python2.7/site-packages/acme/client.py
m'amènent à découvrir que lorsque je commente l'importation from requests_toolbelt.adapters.source import SourceAddressAdapter
, l'erreur disparaît!
Heureusement, cela n'est utilisé qu'une seule fois, donc tant que je fournis un source_address
je peux m'en tirer avec cette solution pas si subtile. :)
@ github-abcde, je vous recommande de publier sur https://community.letsencrypt.org. Sur une nouvelle installation de CentOS 7, les deux:
python -c 'import requests; requests.packages.urllib3.contrib.pyopenssl.inject_into_urllib3()'
et
python -c 'import urllib3.contrib.pyopenssl; urllib3.contrib.pyopenssl.inject_into_urllib3()'
travaille pour moi.
De plus, après l'installation de python-urllib3 1.10.2-5.el7
, /usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py
ne contient pas de code pour lever une exception si la version de pyOpenSSL est inférieure à 0,14.
Je pense que vous avez un mélange de packages provenant de diverses sources. Il existe une communauté plus large sur https://community.letsencrypt.org qui devrait être en mesure de vous aider à localiser le problème.
Vous avez raison. Après une recherche approfondie, il est apparu que quelque chose qui aurait dû installer un module à l'aide de pip3, l'a en fait installé en utilisant python -m pip
... en utilisant python2.7 et en écrasant le urllib3/conrtib/pyopenssl.py
... Merci pour vos pointeurs, ce qui m'a obligé à chercher plus loin :)
Le même problème que j'ai ici.
Fichier "/usr/lib/python2.7/site-packages/acme/client.py", ligne 39, dans
urllib3.contrib.pyopenssl.inject_into_urllib3 ()
AttributeError: l'objet 'module' n'a pas d'attribut 'pyopenssl'
centos 7.3
Voici ma solution:
pip install requests==2.6.0
easy_install --upgrade pip
Je vois ça maintenant aussi. Une nouvelle installation de Centos 7, sans rien d'autre installé via pip, et certbot installé via yum
Linux localhost.localdomain 3.10.0-862.2.3.el7.x86_64 # 1 SMP mer.9 mai 18:05:47 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux
Le conseil de
[ vagrant @ localhost ~] $ pip demandes d'installation == 2.6.0
Exigence déjà satisfaite: requêtes == 2.6.0 dans /usr/lib/python2.7/site-packages
J'utilisais très bien certbot jusqu'à il y a quelques jours lorsque je ne peux pas le faire fonctionner du tout sur l'une de mes nouvelles versions 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.
Des problèmes comme celui-ci sont causés par l'installation de packages globalement à partir de yum
et pip
. Malheureusement, je ne peux pas vous aider à nettoyer l'environnement Python sur votre système, mais si vous publiez sur https://community.letsencrypt.org, il y a une grande base d'utilisateurs qui pourra vous aider.
J'ai eu une installation propre de Centos 7.6 et ajouté Certbot à partir du dépôt Epel a causé le même problème. Problème résolu en exécutant
pip install requests==2.6.0
Je vois que c'est toujours un problème.
Même.
CentOS Linux version 7.6.1810 (Core)
Installer:
sudo yum install certbot python2-certbot-nginx
Et courir:
# 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'
Voici ma solution:
pip install requests==2.6.0 easy_install --upgrade pip
A travaillé pour moi sur Centos 7
D'accord. L'installation par défaut avec yum ne fonctionne pas. Besoin de le réparer après
installation initiale. On voudrait qu'il s'installe dans un état de fonctionnement.
Le dimanche 14 avril 2019, 07:54 Michael Lindner, [email protected]
a écrit:
Voici ma solution:
demandes d'installation pip == 2.6.0
easy_install --upgrade pipA travaillé pour moi sur Centos 7
-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/certbot/certbot/issues/6328#issuecomment-482922170 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AMsov79Wu4KJJLs0jJUN-fhs6WO2YROuks5vgsKzgaJpZM4WS5Gq
.
Si quelqu'un peut fournir des instructions sur la façon de reproduire cela, idéalement dans quelque chose comme Docker, je serais heureux de jeter un autre coup d'œil, mais je pense toujours que cela ne se produit que si vous avez installé des packages Python à partir de plusieurs sources.
Cela est généralement dû à l'installation de packages à partir de yum
et pip
et en supprimant les packages que vous avez installés avec pip
et en les réinstallant avec yum
devrait résoudre le problème problème.
Je peux confirmer que cela se produit avec une installation propre de Centos 7.6 en utilisant le
Dépôt EPEL pour ajouter certbot.
Le lundi 15 avril 2019, 19:35 Brad Warren, [email protected] a écrit:
Si quelqu'un peut fournir des instructions sur la façon de reproduire cela, idéalement
quelque chose comme Docker, je serais heureux de jeter un autre coup d'œil, mais je
pense que cela ne se produit que si vous avez installé des packages Python à partir de plusieurs
sources.Cela est généralement dû à l'installation de packages à partir de yum et pip et
supprimer les packages que vous avez installés avec pip et les réinstaller
avec yum devrait résoudre le problème.-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/certbot/certbot/issues/6328#issuecomment-483346939 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AMsovzeRLjz2j0odmgWGxyyAVy9VBp3Tks5vhLhLgaJpZM4WS5Gq
.
J'ai eu ce problème (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'
et pip n'est pas installé
[bob<strong i="10">@bla</strong> ~]# pip install requests==2.6.0
-bash: pip: command not found
Je peux confirmer que cela se produit avec une installation propre de Centos 7.6 en utilisant le repo EPEL pour ajouter certbot.
Malheureusement, je ne peux pas le reproduire dans Docker ou un VPS.
J'adorerais toujours voir quelqu'un réussir à reproduire cela dans quelque chose de facilement répétable comme Docker, mais en attendant, pour quelqu'un qui rencontre le problème, quelle est la sortie des commandes suivantes
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
Intéressant. C'est la deuxième installation propre que j'ai faite pour Centos 7.
Cette fois-ci, j'ai fait une installation propre en utilisant l'ISO minimale et cela fonctionne. Je vois que le package de requêtes Centos installé est également 2.6. Il est possible que les demandes aient été mises à jour depuis le problème.
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.
Ce problème se produit pour moi sur centos 7.6 avec ovirt 4.3. Les versions de package sont
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
Il semble que quelque chose de bizarre se passe avec l'espace urllib3.contrib
noms
>>> 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']
Le problème disparaît lorsque je fais cela dans 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
Voici ma solution:
pip install requests==2.6.0 easy_install --upgrade pip
a travaillé pour moi sur CentOS 7
Merci @monkeyWie - a travaillé pour moi sur CentOS7
Voici ma solution:
pip install requests==2.6.0 easy_install --upgrade pip
pip install acme
a travaillé pour moi sur Centos 7 après avoir vu cette erreur
ERREUR: certbot 1.0.0 nécessite acme> = 0.40.0, qui n'est pas installé.
PS Installez tout à partir de pip, plutôt que des packages Centos, ils sont parfois vieux
Je peux confirmer que cela se produit avec une installation propre de Centos 7.6 en utilisant le repo EPEL pour ajouter certbot.
Malheureusement, je ne peux pas le reproduire dans Docker ou un VPS.
J'adorerais toujours voir quelqu'un réussir à reproduire cela dans quelque chose de facilement répétable comme Docker, mais en attendant, pour quelqu'un qui rencontre le problème, quelle est la sortie des commandes suivantes
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 mes résultats sont les suivants:
('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
ce qui me semble bien. mais ces autres tests semblent échouer:
$ 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.
La version de urllib3
empaquetée dans les systèmes basés sur RHEL 7 est 1.10.2 mais vous avez 1.25.7. Cela a probablement été installé via pip
. Supprimer urllib3
et le réinstaller via yum
devrait résoudre ce problème.
Si vous avez besoin d'aide supplémentaire à ce sujet, je vous recommande de publier sur https://community.letsencrypt.org où il y a un grand groupe de personnes familiarisées avec Certbot et l'administration des serveurs qui devraient être en mesure de vous aider.
JFYI. J'ai eu le même problème mais je n'ai pas pip
/ pip2
ou aucun package pip installé manuellement.
Dans mon cas, j'avais centos-release-opstools
qui a amené python2-urllib3 1.21.1-1.el7 and
python2-requests 2.19.1-4.el7`.
Après avoir désactivé ce dépôt et réinstallé les packages pertinents (ils sont renommés en python-urllib3 1.10.2-7.el7
et python-requests 2.6.0-8.el7_7
partir de CentOS 7.7), le problème a disparu.
@grossws , merci pour l'info. Vous souvenez-vous de votre message d'erreur?
Lorsque j'essaye de recréer cette configuration, Certbot plante avec:
# 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'))
En effet, le package python2-pyOpenSSL 17.3.0-3.el7
prétend qu'il nécessite python-cryptography >= 1.3.0
, mais la dépendance spécifiée dans Python est cryptography>=1.9
qui n'est pas installée.
@bmw , j'avais un stacktrace similaire à celui de https://github.com/certbot/certbot/issues/6328#issuecomment -482531925
J'ai essayé de le reproduire dans un conteneur avec juste epel-release
+ centos-release-opstools
mais j'ai le même conflit de version à propos de cryptography
. J'ai regardé le système d'origine où j'ai eu une erreur et j'ai trouvé que j'avais plus récent python2-cryptography
de centos-release-ovirt42
repo.
Donc, pour reproduire, vous pouvez exécuter le conteneur docker avec centos:7
et faire
yum install -y epel-release centos-release-opstools centos-release-ovirt42
yum install -y certbot
certbot --help`
C'est amusant (selon votre définition du plaisir).
Sur l'image Docker centos:7
, si vous exécutez:
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()'
La première commande Python réussira tandis que la seconde échouera. La seule différence est l'importation from requests_toolbelt.adapters.source import SourceAddressAdapter
.
Nous prévoyons d'abandonner le support de Python 2 dans les prochains mois, date à laquelle nous pourrons supprimer ce code. Pour cette raison, la petite équipe qui gère Certbot ne passera probablement pas beaucoup de temps sur cela nous-mêmes, mais si quelqu'un veut creuser dedans, je pense qu'il serait bon de faire rapporter ce qui cause ce problème aux responsables du paquet. .
Je rouvre ça pour l'instant.
Je pense que la supposition d'une forme de corruption est correcte. Je n'avais pas installé de pip python2, donc je ne suis pas sûr de ce que j'ai cassé. Cependant, cela a réglé les choses:
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
J'espère que cela aide quelqu'un.
Cela a fonctionné dans mon environnement (centos 7 avec urllib3 mis à jour de pip comme @bmw décrit ci-dessus .. ma commande "pip"
sudo yum install -y python2-pip
sudo pip uninstall urllib3
sudo yum install -y python-urllib3
Responsable Fedora / CentOS certbot ici: Veuillez NE JAMAIS installer de modules sur /usr/lib
utilisant pip
. Certains packages CentOS sont modifiés pour ne pas dupliquer le code existant ou pour renforcer les paramètres de sécurité. Les conditionneurs de distribution doivent s'assurer que tous les packages requis sont installés.
Vous pouvez vérifier votre installation pour les packages Python non gérés avec cette commande:
LANG=C rpm -qf /usr/lib/python2.7/site-packages/* | grep 'is not owned by any package'
Vous ne devriez pas obtenir de sortie.
L'ajout d'autres dépôts yum peut également être problématique. Fedora EPEL devrait fonctionner à 100% avec les dépôts de base de Red Hat / CentOS mais nous ne pouvons prendre en compte aucun autre dépôt.
Si vous avez uniquement activé les dépôts CentOS par défaut (+ EPEL) et que vous plantez toujours, veuillez nous en informer. La meilleure méthode est de créer un problème Bugzilla mais @ -mentioning me ici fonctionne également (pour l'instant - les responsables de certbot dans Fedora / EPEL peuvent changer).
@FelixSchwarz , qu'en est-il des packages de repo CentOS SIG comme centos-release-opstools
? J'utilise habituellement des dépôts standard + epel mais fluentd
n'est disponible que dans opstools
(
Dans certains cas, je viens de terminer la création d'environnement virtuel en utilisant python3 -mvenv /path/to/new/venv
et en y installant le logiciel requis (disons certbot
+ vérificateur DNS requis). Heureusement, cela ne pollue pas /usr/lib
.
@grossws Fedora EPEL devrait fonctionner avec tout ce qui se trouve à partir de RHEL Base (il peut donc y avoir d'autres produits Red Hat en couches qui provoquent des conflits). Toutes les autres sources peuvent être incompatibles à moins que ces dépôts soient très prudents afin de ne pas expédier les mêmes éléments que RHEL / EPEL.
Je viens de vérifier les dépôts de j'ai immédiatement remarqué quelques conflits avec Fedora EPEL:
0.5.6-5.el7
, opstools 0.4.6-3.el7
(non pertinent pour certbot
mais pour borgbackup que je maintiens également dans 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
)Cela ne signifie pas que le repo centos-opstools
ne fonctionne pas avec les packages certbot
d'EPEL, mais il y a des conflits et c'est définitivement une configuration non testée. De plus, centos-opstools
remplace un paquet dans la base RHEL, ce qui signifie que vous devriez faire très attention car cela pourrait aussi casser beaucoup de choses dans la distribution principale.
tl; dr: Si vous utilisez les packages certbot d'EPEL, vous ne devez pas utiliser d'autres dépôts yum / dnf car ils sont probablement incompatibles. Demandez au fournisseur de pension la compatibilité avec RHEL base et Fedora EPEL.
De plus, j'ai trouvé qu'il n'était pas si difficile de contribuer à Fedora EPEL, donc s'il vous manque un paquet, envisagez de devenir un responsable de paquet (envoyez-moi un ping si vous avez besoin de conseils).
Je pense que la supposition d'une forme de corruption est correcte. Je n'avais pas installé de pip python2, donc je ne suis pas sûr de ce que j'ai cassé. Cependant, cela a réglé les choses:
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
J'espère que cela aide quelqu'un.
Cela a aidé dans mon cas (d'autres solutions de ce sujet ne l'ont pas fait). Je vous remercie.
Commentaire le plus utile
Voici ma solution: