rbenv安装不下载ruby版本

Jer*_*ome 4 openssl rbenv ruby-on-rails-4

使用rbenv安装ruby版本会rbenv install -l返回正确的列表.然而

$ rbenv install 2.3.4 -v
Run Code Online (Sandbox Code Playgroud)

下载失败,即使它可以通过浏览器下载.关于openssl的不正确版本的预感(由于某些遥远的记忆存在这些问题 - 过去的版本? - 在详细模式中支持):

ruby-build: use openssl from homebrew 
/var/folders/kV/kVDOSPkcEuqSVnTjenAVRE+++TI/-Tmp-/ruby-build.20170601122915.1010 ~ Downloading ruby-2.3.4.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.4.tar.bz2 
curl: (35)    error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version 
error: failed to download ruby-2.3.4.tar.bz2
Run Code Online (Sandbox Code Playgroud)

怎么克服?我可以指向rbenv使用下载的tarball吗?

Ski*_*tro 8

原因是因为rbenv使用旧系统curl和旧系统openssl,它对协议TLS v 1.1-1.3一无所知.对我来说,使用brew 安装新版本的curlopenssl可以完成这项工作:

brew install openssl@1.1
brew install curl
Run Code Online (Sandbox Code Playgroud)

然后将已安装的curl添加到PATH(默认路径之前,即/ usr/bin),并确保实际brew版本的openssl也存在(将其添加到./bash_profile或./zshrc等):

export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"
export PATH="/usr/local/opt/curl/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

您可以确保在重新启动终端后尝试使用此程序的最新版本

which -a openssl
which -a curl
openssl version -a
curl -V
Run Code Online (Sandbox Code Playgroud)

前两个命令应该输出程序的所有路径,但顶部的命令应该是brew版本.最后两个命令应显示最新版本的程序(现在为我提供1.1.0f和7.55).现在试试

rbenv install [version]
Run Code Online (Sandbox Code Playgroud)

适用于启用SIP的MacOS Sierra.