Linux中openssl/opensslv.h找不到问题的解决方法

吾爱主题 阅读:185 2024-04-05 13:51:24 评论:0

前言

众所周知scrapy是Python中鼎鼎大名的爬虫框架,在安装scrapy过程中碰到了openssl某个文件找不到的问题,并进行了分析,记录之。

一、 scrapy以及安装过程

Scrapy是python中鼎鼎大名的爬虫框架,笔者在Centos 7系统之上进行安装,发现了如下问题:

   >> pip install scrapy

由于安装过程中的过程信息比较多,这里只列出了其中的关键片段信息:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 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.

由于确实openssl.c文件而安装失败了,貌似没有找到对应的文件

二、问题分析

首先怀疑openssl没有安装,故先进行openssl的检查:

  >> yum info openssl

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 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是一家安装过了,怎么还是会缺少openssl.c的文件呢?

经过一番思考,豁然发现一个基本规则, openssl已经安装二进制的可执行程序,而这里的安装scrapy则需要的是openssl的源文件程序,比如openssl.h。故这里需要补充安装的是openssh.h的开发版,其中包含相关的安装源代码文件。

三、问题的解决

在确认了问题之后,接下来就是安装openssl-devel的安装包了:

  >> yum install openssl-devel

在安装完成之后,重新安装scrapy,就可以顺利安装成功了

总结

推而广之,在Linux系统中都存在类似的问题,在安装特定安装包的过程中,其依赖某些第三方开发包,会曝出某些文件找不到的错误,一般情况下是需要安装依赖包的开发版本的。 这个规则应该是通用的。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。

原文链接:http://blog.csdn.net/blueheart20/article/details/65653670

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容