Linux中openssl/opensslv.h找不到問(wèn)題的解決方法
前言
眾所周知scrapy是Python中鼎鼎大名的爬蟲(chóng)框架,在安裝scrapy過(guò)程中碰到了openssl某個(gè)文件找不到的問(wèn)題,并進(jìn)行了分析,記錄之。
一、 scrapy以及安裝過(guò)程
Scrapy是python中鼎鼎大名的爬蟲(chóng)框架,筆者在Centos 7系統(tǒng)之上進(jìn)行安裝,發(fā)現(xiàn)了如下問(wèn)題:
>> pip install scrapy
由于安裝過(guò)程中的過(guò)程信息比較多,這里只列出了其中的關(guān)鍵片段信息:
running egg_info writing requirements to src/cryptography.egg-info/requires.txt writing src/cryptography.egg-info/PKG-INFO writing top-level names to src/cryptography.egg-info/top_level.txt writing dependency_links to src/cryptography.egg-info/dependency_links.txt writing entry points to src/cryptography.egg-info/entry_points.txt reading manifest file 'src/cryptography.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' no previously-included directories found matching 'docs/_build' warning: no previously-included files matching '*' found under directory 'vectors' writing manifest file 'src/cryptography.egg-info/SOURCES.txt' running build_ext generating cffi module 'build/temp.linux-x86_64-2.7/_padding.c' creating build/temp.linux-x86_64-2.7 generating cffi module 'build/temp.linux-x86_64-2.7/_constant_time.c' generating cffi module 'build/temp.linux-x86_64-2.7/_openssl.c' building '_openssl' extension creating build/temp.linux-x86_64-2.7/build creating build/temp.linux-x86_64-2.7/build/temp.linux-x86_64-2.7 gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -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:434:30: fatal error: openssl/opensslv.h: No such file or directory #include <openssl/opensslv.h> ^ compilation terminated. error: command 'gcc' failed with exit status 1 ---------------------------------------- Command "/usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-hRMlG0/cryptography/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-ReCoWo-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-hRMlG0/cryptography/ [root@AY131203102210033c39Z ~]# yum install openssl build/temp.linux-x86_64-2.7/_openssl.c:434:30: fatal error: openssl/opensslv.h: No such file or directory ^C Exiting on user cancel.
由于確實(shí)openssl.c文件而安裝失敗了,貌似沒(méi)有找到對(duì)應(yīng)的文件
二、問(wèn)題分析
首先懷疑openssl沒(méi)有安裝,故先進(jìn)行openssl的檢查:
>> yum info openssl
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * epel: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Installed Packages Name : openssl Arch : x86_64 Epoch : 1 Version : 1.0.1e Release : 60.el7_3.1 Size : 1.5 M Repo : installed Summary : Utilities from the general purpose cryptography library with TLS implementation URL : http://www.openssl.org/ License : OpenSSL Description : The OpenSSL toolkit provides support for secure communications between : machines. OpenSSL includes a certificate management tool and shared : libraries which provide various cryptographic algorithms and : protocols.
基于其中的信息可以得知,openssl是一家安裝過(guò)了,怎么還是會(huì)缺少openssl.c的文件呢?
經(jīng)過(guò)一番思考,豁然發(fā)現(xiàn)一個(gè)基本規(guī)則, openssl已經(jīng)安裝二進(jìn)制的可執(zhí)行程序,而這里的安裝scrapy則需要的是openssl的源文件程序,比如openssl.h。故這里需要補(bǔ)充安裝的是openssh.h的開(kāi)發(fā)版,其中包含相關(guān)的安裝源代碼文件。
三、問(wèn)題的解決
在確認(rèn)了問(wèn)題之后,接下來(lái)就是安裝openssl-devel的安裝包了:
>> yum install openssl-devel
在安裝完成之后,重新安裝scrapy,就可以順利安裝成功了
總結(jié)
推而廣之,在Linux系統(tǒng)中都存在類似的問(wèn)題,在安裝特定安裝包的過(guò)程中,其依賴某些第三方開(kāi)發(fā)包,會(huì)曝出某些文件找不到的錯(cuò)誤,一般情況下是需要安裝依賴包的開(kāi)發(fā)版本的。 這個(gè)規(guī)則應(yīng)該是通用的。
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Centos7.4服務(wù)器安裝apache及安裝過(guò)程出現(xiàn)的問(wèn)題解決方法
這篇文章主要介紹了Centos7.4服務(wù)器安裝apache及安裝過(guò)程出現(xiàn)的問(wèn)題解決方法,結(jié)合實(shí)例形式分析了Centos7.4服務(wù)器安裝apache相關(guān)命令、配置操作及端口占用等常見(jiàn)問(wèn)題解決方法,需要的朋友可以參考下2019-03-03Apache 支持CGI程序和SSI程序的設(shè)置方法
在這里,網(wǎng)頁(yè)教學(xué)網(wǎng)和大家探討如何修改服務(wù)器選項(xiàng)讓服務(wù)器能提供簡(jiǎn)單的動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)容,也就是支持CGI程序及 Server-Side Include(SSI)程序。2009-10-10在 Linux 命令行發(fā)送郵件的 5 種方法(推薦)
這篇文章主要介紹了在 Linux 命令行發(fā)送郵件的 5 種方法,本教程中包含了最流行的 5 個(gè)命令行郵件客戶端,你可以選擇其中一個(gè),需要的朋友可以參考下2019-12-12