"Error fatal: openssl / opensslv.h: no existe tal archivo o directorio" compilando mitmproxy

52

Estoy tratando de instalar el paquete mitmproxy a través de pip como este:

$ sudo pip install mitmproxy

Termina con el siguiente mensaje de error:

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

Después de esto, está algo instalado, al menos puedo desinstalarlo después.

 $ mitmproxy

lleva a

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
fuente
meta.askubuntu.com/questions/15739/… : Recomiendo actualizar a 16.04.
anonymous2

Respuestas:

79

Las otras respuestas solo abordan las dependencias para hacer que los errores que mencionó desaparezcan. La lista de todas las dependencias necesarias es en realidad mucho más larga.

Puede instalarlos todos con:

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

Entonces puedes instalar mitmproxy:

sudo pip install mitmproxy

Y ejecútalo:

mitmproxy

Fuente: la documentación

grooveplex
fuente
1
funcionó, pero de alguna manera mató pip. Tuve que reinstalarlo. Ahora todo funciona. :)
Niklas
1
@Niklas Me alegra saber que resolvió tu problema. ¡Que tengas un gran día!
grooveplex
66
»» fatal error: openssl/opensslv.h: No such file or directory ««

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

Knud Larsen
fuente
Recibí el mismo error durante la configuración de pyOpenSSL en Ubuntu 16.04 (dentro de un python virtualenv). Esta respuesta resolvió mi problema. Gracias
yucer
Se solucionó el problema al instalar "pip install fabric" en el servidor de Ubuntu (stretch / sid o Ubuntu 16.04.1 LTS).
Sergei G
1
Esta es la respuesta simple y limpia para cualquier cosa que se base en pypi.python.org/pypi/cryptography/1.8.1, por ejemplo pypi.python.org/pypi/paramiko/2.1.2
Bruno Bronosky
1
Se guardó el error al instalar hashpumpy.
NonStandardModel
Tenía un problema similar de instalarlo keyringen alpine, pero llegué ERROR: unsatisfiable constraintsal intentar instalar libssl-dev. Fue capaz de resolverlo instalando en su openssl-devlugar.
Cowlinator
4

En realidad, hay dos problemas diferentes aquí en su salida (suponiendo que todos los demás problemas de dependencia ya estén resueltos). Ambos necesitan reparaciones.

Faltan bibliotecas SSL

  1. Como declaró Knud Larsen en su respuesta a esta pregunta , le faltan las bibliotecas OpenSSL . Consulte su respuesta a esta pregunta para ese problema.

Módulos faltantes de Python

  1. Hay un script de Python que es parte de lo que sea que esté ejecutando, y le falta un módulo (llamado configargparse) que necesita ejecutar.

    Si está en Ubuntu 15.10 o más reciente , puede instalarlo haciendo sudo apt-get install python-configargparse.

    Si tiene alguna versión de Ubuntu anterior a 15.10 , deberá instalarla pippara descargarla y ponerla a disposición del sistema:sudo pip install configargparse

    (Tenga en cuenta que python pip install mitmproxylogrará el mismo tipo de resoluciones de dependencia una vez que solucione el problema de las bibliotecas SSL faltantes, sin embargo, si no lo hace por alguna razón, tendrá que instalar manualmente ese módulo)

NOTA: Su pregunta indica que está utilizando Ubuntu MATE 15.10. Ubuntu 15.10 para todas las variantes se convirtió en EndOfLife el 28 de julio de 2016. Debería considerar actualizar a 16.04 para recibir soporte y actualizaciones continuas de Ubuntu.

Thomas Ward
fuente