"Erreur fatale: openssl / opensslv.h: Aucun fichier ou répertoire de ce type" lors de la compilation de mitmproxy

52

J'essaie d'installer le paquet mitmproxy via pip comme ceci:

$ sudo pip install mitmproxy

Il se termine avec le message d'erreur suivant:

x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c build/temp.linux-x86_64-2.7/_openssl.c -o build/temp.linux-x86_64-2.7/build/temp.linux-x86_64-2.7/_openssl.o

build/temp.linux-x86_64-2.7/_openssl.c:391:30: fatal error: openssl/opensslv.h: No such file or directory

compilation terminated.

error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

----------------------------------------
  Can't roll back cryptography; was not uninstalled
Cleaning up...
Command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-jvLTVf/cryptography/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-DrY4DI-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip-build-jvLTVf/cryptography
Storing debug log for failure in /home/niklas/.pip/pip.log

Après cela, il est un peu installé, au moins, je peux le désinstaller par la suite.

 $ mitmproxy

mène à

Traceback (most recent call last):
  File "/usr/local/bin/mitmproxy", line 7, in <module>
    from mitmproxy.main import mitmproxy
  File "/usr/local/lib/python2.7/dist-packages/mitmproxy/main.py", line 7, in <module>
    from . import version, cmdline
  File "/usr/local/lib/python2.7/dist-packages/mitmproxy/cmdline.py", line 6, in <module>
    import configargparse
ImportError: No module named configargparse
Niklas
la source
meta.askubuntu.com/questions/15739/… : Je recommande la mise à jour vers 16.04.
anonymous2

Réponses:

79

Les autres réponses ne concernent que les dépendances pour éliminer les erreurs que vous avez mentionnées. La liste de toutes les dépendances nécessaires est en réalité beaucoup plus longue.

Vous pouvez tous les installer avec:

sudo apt-get install python-pip python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev libjpeg8-dev zlib1g-dev

Ensuite, vous pouvez installer mitmproxy:

sudo pip install mitmproxy

Et lancez-le:

mitmproxy

Source: la documentation

grooveplex
la source
1
travaillé, mais en quelque sorte tué pip. J'ai dû le réinstaller. Maintenant tout fonctionne. :)
Niklas
1
@ Niklas, je suis heureux d'apprendre que cela a résolu votre problème. Passez une bonne journée!
grooveplex
66
»» fatal error: openssl/opensslv.h: No such file or directory ««

Installez openssl: sudo apt-get update && sudo apt-get install libssl-dev

Knud Larsen
la source
La même erreur s'est produite lors de la configuration de pyOpenSSL dans Ubuntu 16.04 (à l'intérieur d'un virtual python). Cette réponse a résolu mon problème. Merci
mercredi
problème résolu lors de l'installation de "pip install fabric" sur le serveur Ubuntu (stretch / sid ou Ubuntu 16.04.1 LTS).
Sergei G
1
Ceci est la réponse simple et claire pour tout ce qui repose sur pypi.python.org/pypi/cryptography/1.8.1, par exemple pypi.python.org/pypi/paramiko/2.1.2
Bruno Bronosky
1
Enregistré l'erreur lors de l'installation de hashpumpy.
NonStandardModel
J'ai eu un problème similaire en essayant d'installer keyringsur alpine, mais j'ai eu ERROR: unsatisfiable constraintsen essayant d'installer libssl-dev. A été capable de le résoudre en installant à la openssl-devplace.
cowlinator
4

Votre sortie contient en réalité deux problèmes différents (en supposant que tous les autres problèmes de dépendance soient déjà résolus). Les deux doivent être réparés.

Bibliothèques SSL manquantes

  1. Comme Knud Larsen l’a dit dans sa réponse à cette question , il vous manque les bibliothèques OpenSSL . Reportez-vous à leur réponse sur cette question pour cette question.

Modules Python manquants

  1. Il existe un script python qui fait partie de tout ce que vous exécutez et il manque un module (appelé configargparse) dont il a besoin pour s'exécuter.

    Si vous utilisez Ubuntu 15.10 ou une version plus récente , vous pouvez l’installer de cette manière sudo apt-get install python-configargparse.

    Si vous utilisez une version d’Ubuntu antérieure à 15.10, vous devrez l’installer via pippour le télécharger et le rendre disponible pour le système:sudo pip install configargparse

    (Notez que vous python pip install mitmproxyobtiendrez le même type de résolution de dépendance une fois que vous aurez résolu le problème des bibliothèques SSL manquantes. Toutefois, si ce n'est pas le cas, vous devrez installer ce module manuellement.)

REMARQUE: votre question indique que vous utilisez Ubuntu MATE 15.10. Ubuntu 15.10 pour toutes les variantes a disparu EndOfLife le 28 Juillet 2016. Vous devriez envisager la mise à niveau à 16,04, afin de recevoir un soutien continu Ubuntu et mises à jour.

Thomas Ward
la source