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

 更新时间:2017年07月06日 10:37:49   作者:bladestone  
最近在安装scrapy过程中碰到了openssl某个文件找不到的问题,通过查找相关的资料进行了解决,下面这篇文章主要给大家分享了关于Linux中openssl/opensslv.h找不到问题的解决方法,需要的朋友可以参考借鉴,下面来一起看看吧。

前言

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

一、 scrapy以及安装过程

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

   >> pip install scrapy

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

 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 

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

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

相关文章

  • Centos7.4服务器安装apache及安装过程出现的问题解决方法

    Centos7.4服务器安装apache及安装过程出现的问题解决方法

    这篇文章主要介绍了Centos7.4服务器安装apache及安装过程出现的问题解决方法,结合实例形式分析了Centos7.4服务器安装apache相关命令、配置操作及端口占用等常见问题解决方法,需要的朋友可以参考下
    2019-03-03
  • Linux的第二网卡的配置全过程

    Linux的第二网卡的配置全过程

    这篇文章主要介绍了Linux的第二网卡的配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • linux中sed命令的使用与注意小结

    linux中sed命令的使用与注意小结

    sed本身也是一个管道命令,可以分析standard input的,sed可以将数据进行替换、删除、新增、选取特定行等。下面这篇文章主要介绍了linux中sed命令的用法和注意事项,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • linux curl命令详解及实例分享

    linux curl命令详解及实例分享

    curl命令使用了libcurl库来实现,libcurl库常用在C程序中用来处理HTTP请求,curlpp是libcurl的一个C++封装,这几个东西可以用在抓取网页、网络监控等方面的开发,而curl命令可以帮助来解决开发过程中遇到的问题。
    2014-08-08
  • Apache 支持CGI程序和SSI程序的设置方法

    Apache 支持CGI程序和SSI程序的设置方法

    在这里,网页教学网和大家探讨如何修改服务器选项让服务器能提供简单的动态网页内容,也就是支持CGI程序及 Server-Side Include(SSI)程序。
    2009-10-10
  • windows apache多端口虚拟主机配置方法

    windows apache多端口虚拟主机配置方法

    有很多朋友喜欢在windows下使用apache作为web服务器,有时候想用非80端口提供服务,因为未备案域名都是封了80端口,提供下载的时候可以用别的端口了,这里简单分享下,方便需要的朋友
    2013-03-03
  • 在 Linux 命令行发送邮件的 5 种方法(推荐)

    在 Linux 命令行发送邮件的 5 种方法(推荐)

    这篇文章主要介绍了在 Linux 命令行发送邮件的 5 种方法,本教程中包含了最流行的 5 个命令行邮件客户端,你可以选择其中一个,需要的朋友可以参考下
    2019-12-12
  • Apache Spark详解(推荐)

    Apache Spark详解(推荐)

    spark.executor.memory以及其他Spark配置参数既可以在代码中设置,也可以在其他几个地方设置,具体取决于你的使用场景和偏好,这篇文章主要介绍了Apache Spark详解,需要的朋友可以参考下
    2024-07-07
  • linux使用docker-compose部署软件配置详解

    linux使用docker-compose部署软件配置详解

    这篇文章主要给大家介绍了关于linux使用docker-compose部署软件配置的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • Linux下一只五颜六色的「猫」

    Linux下一只五颜六色的「猫」

    这篇文章主要介绍了Linux下一只五颜六色的「猫」,在 Linux 下,此猫非彼猫,这里的 cat 并不代表猫,而是单词 concatenate 的缩写,主要给大家介绍了 ccat 的用法,需要的朋友可以参考下
    2020-07-07

最新评论