📜  ubuntu 中 ruby 2.3.4 的 openssl 错误 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:05:41.216000             🧑  作者: Mango

Ubuntu 中 Ruby 2.3.4 的 OpenSSL 错误

问题描述

在 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 版本

可以升级系统中的 OpenSSL 版本,使其与 Ruby 2.3.4 兼容。具体操作步骤如下:

  1. 更新 apt-get 软件源:
sudo apt-get update
  1. 安装 OpenSSL:
sudo apt-get install openssl
  1. 升级 OpenSSL 至最新版本:
sudo apt-get upgrade openssl
方案二:安装 Ruby 2.3.7 或更高版本

如果升级 OpenSSL 无效或不可行,可以考虑安装 Ruby 2.3.7 或更高版本,因为后续版本的 Ruby 已经解决了与 OpenSSL 不兼容的问题。

方案三:手动编译安装 Ruby

对于无法升级 OpenSSL 或更换 Ruby 版本的情况,可以尝试手动编译安装 Ruby。

  1. 下载 Ruby 源代码:
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.gz
  1. 解压源代码:
tar zxvf ruby-2.3.4.tar.gz
  1. 进入解压后的目录:
cd ruby-2.3.4
  1. 配置编译选项:
./configure --prefix=/usr/local/ruby-2.3.4 --with-openssl-dir=/usr/local/openssl-1.0.2l

注意:--prefix 参数指定了安装路径,--with-openssl-dir 参数指定了 OpenSSL 的安装路径,需要根据实际情况进行修改。

  1. 编译并安装:
make && sudo make install
  1. 配置环境变量:
source ~/.bashrc
  1. 验证 Ruby 版本:
ruby -v

如果以上方法不起作用,可以考虑重新编译 OpenSSL,并加入 Ruby 的编译选项中。