"Kesalahan fatal: openssl / opensslv.h: Tidak ada file atau direktori" mengkompilasi mitmproxy

52

Saya mencoba menginstal paket mitmproxy via pip seperti ini:

$ sudo pip install mitmproxy

Itu berakhir dengan pesan kesalahan berikut:

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

Setelah ini agak terinstal, setidaknya saya bisa uninstall setelahnya.

 $ mitmproxy

mengarah ke

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
sumber
meta.askubuntu.com/questions/15739/… : Saya sarankan memperbarui ke 16.04.
anonymous2

Jawaban:

79

Jawaban lain hanya mengatasi ketergantungan untuk membuat kesalahan yang Anda sebutkan hilang. Daftar semua dependensi yang dibutuhkan sebenarnya jauh lebih lama.

Anda dapat menginstal semuanya dengan:

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

Kemudian Anda dapat menginstal mitmproxy:

sudo pip install mitmproxy

Dan jalankan:

mitmproxy

Sumber: dokumentasi

grooveplex
sumber
1
bekerja, tetapi entah bagaimana membunuh pip. Harus menginstalnya kembali. Sekarang semuanya berfungsi. :)
Niklas
1
@ Niklas Saya senang mendengar bahwa itu memecahkan masalah Anda. Semoga hari mu menyenangkan!
grooveplex
66
»» fatal error: openssl/opensslv.h: No such file or directory ««

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

Knud Larsen
sumber
Saya memang menerima kesalahan yang sama selama pengaturan pyOpenSSL di Ubuntu 16.04 (di dalam python virtualenv). Jawaban ini memecahkan masalah saya. Terima kasih
yucer
memperbaiki masalah ketika menginstal "pip install fabric" di server Ubuntu (stretch / sid atau Ubuntu 16.04.1 LTS).
Sergei G
1
Ini adalah jawaban bersih sederhana untuk apa pun yang bergantung pada pypi.python.org/pypi/cryptography/1.8.1 misalnya pypi.python.org/pypi/paramiko/2.1.2
Bruno Bronosky
1
Disimpan kesalahan saat menginstal hashpumpy.
NonStandardModel
Aku punya masalah yang sama mencoba untuk menginstal keyringpada alpine, tapi punya ERROR: unsatisfiable constraintsketika mencoba untuk menginstal libssl-dev. Mampu menyelesaikannya dengan menginstal openssl-devsebagai gantinya.
cowlinator
4

Sebenarnya ada dua masalah berbeda di sini di output Anda (dengan asumsi semua masalah ketergantungan lainnya sudah diselesaikan). Keduanya perlu diperbaiki.

Pustaka SSL hilang

  1. Seperti yang dinyatakan oleh Knud Larsen dalam jawaban mereka untuk pertanyaan ini , Anda kehilangan perpustakaan OpenSSL . Lihat jawaban mereka pada pertanyaan ini untuk masalah itu.

Modul Python Tidak Ada

  1. Ada skrip python yang merupakan bagian dari apa pun yang Anda jalankan, dan tidak ada modul (disebut configargparse) yang perlu dijalankan.

    Jika Anda menggunakan Ubuntu 15.10 atau lebih baru , Anda dapat menginstalnya dengan melakukan sudo apt-get install python-configargparse.

    Jika Anda menggunakan versi Ubuntu sebelum 15.10, Anda harus menginstalnya pipuntuk mengunduhnya dan membuatnya tersedia untuk sistem:sudo pip install configargparse

    (Catatan yang python pip install mitmproxyakan mencapai jenis resolusi ketergantungan yang sama setelah Anda memperbaiki masalah pustaka SSL yang hilang, namun jika tidak karena alasan tertentu Anda harus menginstal modul itu secara manual)

CATATAN: Pertanyaan Anda menyatakan bahwa Anda menggunakan Ubuntu MATE 15.10. Ubuntu 15.10 untuk semua varian telah menjadi EndOfLife pada 28 Juli 2016. Anda harus mempertimbangkan untuk meningkatkan ke 16,04, agar dapat menerima dukungan dan pembaruan Ubuntu yang berkelanjutan.

Thomas Ward
sumber