本文主要是介绍ruby 安装gem报错:`SSL_set_tlsext_host_name' was not declared in this scope,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天在安装thin 这个gem时有遇到报错 error: `SSL_set_tlsext_host_name' was not declared in this scope
后来在网上查找原因,发现是因为openssl版本低导致,所以升级版本到:1.0.1e,因为安装的机器是公用机器,所以就安装到自己定义的目录下:/usr/local/openssl
./config --prefix=/usr/local/openssl --shared
make
make install
然后安装thin gem 继续报这个错误。
自己分析后确定可能是ruby用的还是系统环境老的openssl, 于是重装ruby, 并指定了openssl路径:
./configure --prefix=/usr/local/ruby-2.3.1 --with-openssl-dir=/usr/local/openssl
make
make install
重新安装ruby后安装thin gem还是没有成功。
于是重新分析问题原因,这个报错说明这个“函数”没有声明。 于是在安装目录查找了一下,发现这个函数属于tls1.h文件。那就说明新版本的openssl是没有问题。
那就是ruby 依旧调用了系统中老的openssl, 最后在/usr/include/openssl 目录下找到老版本的tls1.h, 发现没有这个函数,于是直接用升级后的版本的include/openssl目录覆盖了
/usr/include/openssl目录。
重试安装成功。
这篇关于ruby 安装gem报错:`SSL_set_tlsext_host_name' was not declared in this scope的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!