“Erro fatal: openssl / opensslv.h: não existe esse arquivo ou diretório” compilando mitmproxy

52

Estou tentando instalar o pacote mitmproxy via pip assim:

$ sudo pip install mitmproxy

Ele termina com a seguinte mensagem de erro:

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

Depois disso, é um pouco instalado, pelo menos eu posso desinstalá-lo depois.

 $ mitmproxy

leva 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
fonte
meta.askubuntu.com/questions/15739/… : eu recomendo atualizar para 16.04.
anonymous2

Respostas:

79

As outras respostas abordam apenas as dependências para fazer desaparecer os erros que você mencionou. A lista de todas as dependências necessárias é realmente muito mais longa.

Você pode instalá-los todos com:

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

Então você pode instalar mitmproxy:

sudo pip install mitmproxy

E execute:

mitmproxy

Fonte: a documentação

grooveplex
fonte
11
funcionou, mas de alguma forma matou pip. Teve que reinstalá-lo. Agora tudo funciona. :)
Niklas
11
@ Niklas Fico feliz em saber que resolveu seu problema. Tenha um ótimo dia!
grooveplex
66
»» fatal error: openssl/opensslv.h: No such file or directory ««

Instale o openssl: sudo apt-get update && sudo apt-get install libssl-dev

Knud Larsen
fonte
Eu recebi o mesmo erro durante a instalação do pyOpenSSL no Ubuntu 16.04 (dentro de um python virtualenv). Esta resposta resolveu meu problema. Graças
yucer
Corrigido o problema ao instalar o "pip install fabric" no servidor Ubuntu (stretch / sid ou Ubuntu 16.04.1 LTS).
Sergei G
11
Esta é a resposta simples limpa para qualquer coisa que se baseia em pypi.python.org/pypi/cryptography/1.8.1 por exemplo pypi.python.org/pypi/paramiko/2.1.2
de Bruno Bronosky
11
Salve o erro ao instalar o hashpumpy.
NonStandardModel
Eu tive um problema semelhante tentando instalar keyringem alpine, mas tem ERROR: unsatisfiable constraintsao tentar instalar libssl-dev. Foi capaz de resolvê-lo instalando openssl-dev.
cowlinator 11/01
4

Na verdade, existem dois problemas diferentes aqui na sua saída (assumindo que todos os outros problemas de dependência já foram resolvidos). Ambos precisam ser consertados.

Bibliotecas SSL ausentes

  1. Como foi afirmado por Knud Larsen na resposta a esta pergunta , você está perdendo as bibliotecas OpenSSL . Consulte a resposta deles nesta pergunta para esse problema.

Módulos Python ausentes

  1. Existe um script python que faz parte do que você está executando, e está faltando um módulo (chamado configargparse) que ele precisa executar.

    Se você estiver no Ubuntu 15.10 ou mais recente , poderá instalá-lo fazendo isso sudo apt-get install python-configargparse.

    Se você estiver em qualquer versão do Ubuntu antes da 15.10, será necessário instalá-lo via pippara fazer o download e disponibilizá-lo para o sistema:sudo pip install configargparse

    (Observe que python pip install mitmproxyatingirá o mesmo tipo de resolução de dependência depois que você corrigir o problema de bibliotecas SSL ausentes, no entanto, se isso não acontecer, por algum motivo, você precisará instalar manualmente esse módulo)

NOTA: Sua pergunta indica que você está usando o Ubuntu MATE 15.10. O Ubuntu 15.10 para todas as variantes foi lançado para o EndOfLife em 28 de julho de 2016. Você deve considerar a atualização para o 16.04, para receber suporte e atualizações contínuas do Ubuntu.

Thomas Ward
fonte