„Błąd krytyczny: openssl / opensslv.h: brak takiego pliku lub katalogu” kompilacja mitmproxy

52

Próbuję zainstalować pakiet mitmproxy za pośrednictwem pip w następujący sposób:

$ sudo pip install mitmproxy

Kończy się z następującym komunikatem o błędzie:

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

Po tym jest nieco zainstalowany, przynajmniej mogę go później odinstalować.

 $ mitmproxy

prowadzi do

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
źródło
meta.askubuntu.com/questions/15739/… : Polecam aktualizację do 16.04.
anonimowy2

Odpowiedzi:

79

Inne odpowiedzi odnoszą się tylko do zależności, aby wyeliminować wspomniane błędy. Lista wszystkich potrzebnych zależności jest w rzeczywistości znacznie dłuższa.

Możesz je wszystkie zainstalować za pomocą:

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

Następnie możesz zainstalować mitmproxy:

sudo pip install mitmproxy

I uruchom to:

mitmproxy

Źródło: dokumentacja

grooveplex
źródło
1
działało, ale jakoś zabiło pipa. Musiałem go ponownie zainstalować. Teraz wszystko działa. :)
Niklas
1
@Niklas Cieszę się, że to rozwiązało problem. Miłego dnia!
grooveplex,
66
»» fatal error: openssl/opensslv.h: No such file or directory ««

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

Knud Larsen
źródło
Otrzymałem ten sam błąd podczas instalacji pyOpenSSL w Ubuntu 16.04 (wewnątrz python virtualenv). Ta odpowiedź rozwiązała mój problem. Dzięki
yumper
naprawiono problem podczas instalowania „instalacji instalacyjnej pip” na serwerze Ubuntu (stretch / sid lub Ubuntu 16.04.1 LTS).
Siergiej G
1
To jest prosta, czysta odpowiedź na wszystko, co opiera się na pypi.python.org/pypi/cryptography/1.8.1, na przykład pypi.python.org/pypi/paramiko/2.1.2
Bruno Bronosky
1
Zapisano błąd podczas instalowania funkcji skrótu.
NonStandardModel
Miałem podobny problem próbuje zainstalować keyringna alpine, ale dostał ERROR: unsatisfiable constraintspodczas próby zainstalowania libssl-dev. Był w stanie go rozwiązać, instalując openssl-devzamiast tego.
cowlinator
4

W twoich wynikach są właściwie dwa różne problemy (zakładając, że wszystkie inne problemy zależności zostały już rozwiązane). Oba wymagają naprawy.

Brakujące biblioteki SSL

  1. Jak stwierdził Knud Larsen w odpowiedzi na to pytanie , brakuje Ci bibliotek OpenSSL . Zobacz ich odpowiedź na to pytanie dotyczące tego problemu.

Brakujące moduły Python

  1. Istnieje skrypt Pythona, który jest częścią wszystkiego, co uruchamiasz, i brakuje mu modułu (wywołanego configargparse), który musi uruchomić.

    Jeśli korzystasz z systemu Ubuntu 15.10 lub nowszego , możesz go zainstalować, wykonując sudo apt-get install python-configargparse.

    Jeśli korzystasz z dowolnej wersji Ubuntu przed 15.10 , musisz ją zainstalować, pipaby pobrać i udostępnić systemowi:sudo pip install configargparse

    (Pamiętaj, że python pip install mitmproxypo rozwiązaniu problemu brakujących bibliotek SSL osiągnie ten sam typ rozdzielczości zależności, jednak jeśli z jakiegoś powodu tak się nie stanie, musisz ręcznie zainstalować ten moduł)

UWAGA: Twoje pytanie mówi, że używasz Ubuntu MATE 15.10. Ubuntu 15.10 dla wszystkich wariantów zostało wydane EndOfLife 28 lipca 2016 r. Należy rozważyć aktualizację do wersji 16.04, aby otrzymywać ciągłe wsparcie i aktualizacje Ubuntu.

Thomas Ward
źródło