📅  最后修改于: 2023-12-03 15:05:41.216000             🧑  作者: Mango
在 Ubuntu 系统中,使用 Ruby 2.3.4 版本时,有时会出现 OpenSSL 相关的错误,如下面的错误信息:
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol
这是因为 Ubuntu 默认安装的 OpenSSL 版本与 Ruby 2.3.4 中所依赖的 OpenSSL 版本不兼容导致的。
可以升级系统中的 OpenSSL 版本,使其与 Ruby 2.3.4 兼容。具体操作步骤如下:
sudo apt-get update
sudo apt-get install openssl
sudo apt-get upgrade openssl
如果升级 OpenSSL 无效或不可行,可以考虑安装 Ruby 2.3.7 或更高版本,因为后续版本的 Ruby 已经解决了与 OpenSSL 不兼容的问题。
对于无法升级 OpenSSL 或更换 Ruby 版本的情况,可以尝试手动编译安装 Ruby。
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.gz
tar zxvf ruby-2.3.4.tar.gz
cd ruby-2.3.4
./configure --prefix=/usr/local/ruby-2.3.4 --with-openssl-dir=/usr/local/openssl-1.0.2l
注意:--prefix
参数指定了安装路径,--with-openssl-dir
参数指定了 OpenSSL 的安装路径,需要根据实际情况进行修改。
make && sudo make install
source ~/.bashrc
ruby -v
如果以上方法不起作用,可以考虑重新编译 OpenSSL,并加入 Ruby 的编译选项中。