Projet

Général

Profil

Bug #38017

authentic2_auth_fc:Plugin ImportError('No module named Crypto.Cipher',)

Ajouté par Thomas Noël il y a plus de 4 ans. Mis à jour il y a plus de 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
27 novembre 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Sur une installation toute neuve du paquet authentic2-multitenant, j'ai cette erreur :

# apt install authentic2-multitenant
...
Paramétrage de authentic2-multitenant (2.18-1~eob90+1) ...
Generating a secret key....done
[....] Updating authentic2: authentic2-multitenant[info] Applying new migrations ...
No handlers could be found for logger "authentic2.plugins" 
Traceback (most recent call last):
  File "/usr/lib/authentic2/manage.py", line 21, in <module>
    execute_from_command_line(sys.argv[:1] + argv)
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 308, in execute
    settings.INSTALLED_APPS
  File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 56, in __getattr__
    self._setup(name)
  File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 41, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 110, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/usr/lib/python2.7/dist-packages/authentic2/settings.py", line 113, in <module>
    MIDDLEWARE_CLASSES = plugins.register_plugins_middleware(MIDDLEWARE_CLASSES)
  File "/usr/lib/python2.7/dist-packages/authentic2/plugins.py", line 102, in register_plugins_middleware
    for plugin in get_plugins(group_name):
  File "/usr/lib/python2.7/dist-packages/authentic2/plugins.py", line 56, in get_plugins
    raise PluginError('unable to load entrypoint %s' % entrypoint, e)
authentic2.plugins.PluginError: ('unable to load entrypoint authentic2-auth-fc = authentic2_auth_fc:Plugin', ImportErr
or('No module named Crypto.Cipher',))
[info] .. done.
[info] Collect static files...
No handlers could be found for logger "authentic2.plugins" 
Traceback (most recent call last):
  File "/usr/lib/authentic2/manage.py", line 21, in <module>
    execute_from_command_line(sys.argv[:1] + argv)
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 308, in execute
    settings.INSTALLED_APPS
  File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 56, in __getattr__
    self._setup(name)
  File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 41, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 110, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/usr/lib/python2.7/dist-packages/authentic2/settings.py", line 113, in <module>
    MIDDLEWARE_CLASSES = plugins.register_plugins_middleware(MIDDLEWARE_CLASSES)
  File "/usr/lib/python2.7/dist-packages/authentic2/plugins.py", line 102, in register_plugins_middleware
    for plugin in get_plugins(group_name):
  File "/usr/lib/python2.7/dist-packages/authentic2/plugins.py", line 56, in get_plugins
    raise PluginError('unable to load entrypoint %s' % entrypoint, e)
authentic2.plugins.PluginError: ('unable to load entrypoint authentic2-auth-fc = authentic2_auth_fc:Plugin', ImportErr
or('No module named Crypto.Cipher',))
[info] .. done.
. ok 
Created symlink /etc/systemd/system/multi-user.target.wants/authentic2-multitenant.service → /lib/systemd/system/authe
ntic2-multitenant.service.
Job for authentic2-multitenant.service failed because the control process exited with error code.
See "systemctl status authentic2-multitenant.service" and "journalctl -xe" for details.
invoke-rc.d: initscript authentic2-multitenant, action "start" failed.
● authentic2-multitenant.service - Authentic 2 (multitenants)
   Loaded: loaded (/lib/systemd/system/authentic2-multitenant.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Wed 2019-11-27 17:27:39 CET; 10ms ago
  Process: 23605 ExecStartPre=/usr/bin/authentic2-multitenant-manage migrate_schemas --noinput (code=exited, status=1/
FAILURE)

nov. 27 17:27:39 lille-vm3 systemd[1]: authentic2-multitenant.service: Unit entered failed state.
nov. 27 17:27:39 lille-vm3 systemd[1]: authentic2-multitenant.service: Failed with result 'exit-code'.
dpkg: erreur de traitement du paquet authentic2-multitenant (--configure) :
 le sous-processus script post-installation installé a retourné une erreur de sortie d'état 1
Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u12) ...
Des erreurs ont été rencontrées pendant l'exécution :
 authentic2-multitenant
E: Sub-process /usr/bin/dpkg returned an error code (1)

Fichiers


Demandes liées

Lié à Combo - Development #43563: Des tests de combo sont cassés en python3.8Fermé03 juin 2020

Actions

Révisions associées

Révision 0fc5a971 (diff)
Ajouté par Thomas Noël il y a plus de 4 ans

crypto: use pycrytodomex, replace Crypto with Cryptodome (#38017)

mainly because Debian python-cryptodome package use pycrytodomex, which
is a library independent of the old PyCrypto, available under the
Cryptodome name.

Historique

#1

Mis à jour par Paul Marillonnet il y a plus de 4 ans

  • Assigné à mis à Paul Marillonnet
#2

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

Ça vient normalement de python-pycryptodome qui sur stretch vient de stretch-backports. J'ai vérifié on a bien une dépendance sur python-pycryptodome je ne vois pas comment ça a pu s'installer sans.

#3

Mis à jour par Thomas Noël il y a plus de 4 ans

Avec python-pycryptodome installé :

entrouvert@lille-vm3:/etc/nginx/sites-enabled$ apt-cache policy python-pycryptodome 
python-pycryptodome:
  Installé : 3.4.7-1~bpo9+1
  Candidat : 3.4.7-1~bpo9+1
 Table de version :
 *** 3.4.7-1~bpo9+1 100
        100 http://deb.debian.org/debian stretch-backports/main amd64 Packages
        100 /var/lib/dpkg/status
entrouvert@lille-vm3:/etc/nginx/sites-enabled$ python -c "import Crypto" 
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named Crypto

parce que ça s'appelle en fait Cryptodome ... (/usr/lib/python2.7/dist-packages/Cryptodome)

#4

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

Le cryptodome de Debian n'est pas le cryptodome de pypi mais cryptodomex avec un nouveau nom de package (voir https://pycryptodome.readthedocs.io/en/latest/src/installation.html).

#5

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

On doit adapter le code pour faire un try/excep ImportError et tester les deux noms.

#6

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

Aussi en attendant faire apt install python-crypto c'est pour cela que ça fonctionne en recette (python-crypto est déjà là).

#7

Mis à jour par Thomas Noël il y a plus de 4 ans

Benjamin Dauvergne a écrit :

Aussi en attendant faire apt install python-crypto c'est pour cela que ça fonctionne en recette (python-crypto est déjà là).

Yep j'avais rapidement tapé cela, c'est ce qui m'avait fait piger que cryptodome (celui de Debian) ne remplaçait pas Crypto.

#8

Mis à jour par Thomas Noël il y a plus de 4 ans

(zut, désolé Paul j'avais pas vu que tu avais pris le ticket... donc j'ai rapidement pondu ce patch. Il est testé "à la main" en modifiant le setup.py pour indiquer pycryptodomex à la place de pycryptodome)

#9

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

  • Statut changé de Solution proposée à Solution validée

Tant qu'à faire je me dis qu'on pourrait juste passer sur cryptodomex puisque c'est ça que Debian distribue (je veux dire mettre cryptodomex définitivement dans setup.py).

#10

Mis à jour par Thomas Noël il y a plus de 4 ans

Benjamin Dauvergne a écrit :

Tant qu'à faire je me dis qu'on pourrait juste passer sur cryptodomex puisque c'est ça que Debian distribue (je veux dire mettre cryptodomex définitivement dans setup.py).

J'ai pensé à ça aussi, et virer les ImportError, ça éviterait toute embrouille future. Voici donc un autre patch (pushé dans la branche wip/38017). Appelons-le "le patch domex", et faites votre choix entre les deux !

#11

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

  • Statut changé de Solution proposée à Solution validée

C'est parti pour le 2ème patch.

#12

Mis à jour par Thomas Noël il y a plus de 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 0fc5a97113a45117a5ff4e52e86f8a247c3eaed6
Author: Thomas NOËL <tnoel@entrouvert.com>
Date:   Wed Nov 27 23:24:00 2019 +0100

    crypto: use pycrytodomex, replace Crypto with Cryptodome (#38017)

    mainly because Debian python-cryptodome package use pycrytodomex, which
    is a library independent of the old PyCrypto, available under the
    Cryptodome name.

#13

Mis à jour par Frédéric Péters il y a plus de 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#14

Mis à jour par Nicolas Roche il y a presque 4 ans

Formats disponibles : Atom PDF