You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS上用rbenv安装JRuby时遭遇OpenSSL不可用错误

rbenv安装jruby-9.4.2.0时提示OpenSSL不可用,但系统已安装多版本OpenSSL

问题描述

执行rbenv install jruby-9.4.2.0时触发OpenSSL不可用错误,尽管系统中已安装多个版本OpenSSL,且尝试了OpenSSL 3和1.1的多种配置参数,问题仍未解决。

错误日志

/var/folders/nm/c044zc5d5b505n42t9v7z4dr0000gt/T/ruby-build.20230926153740.4346.GaTTYO/jruby-9.4.2.0 /var/folders/nm/c044zc5d5b505n42t9v7z4dr0000gt/T/ruby-build.20230926153740.4346.GaTTYO ~
ERROR:  While executing gem ... (Gem::Exception)
    OpenSSL is not available. Install OpenSSL and rebuild Ruby (preferred) or use non-HTTPS sources
    /Users/2b-software-mac/.rbenv/versions/jruby-9.4.2.0/lib/ruby/stdlib/rubygems/request.rb:47:in `configure_connection_for_https'
    /Users/2b-software-mac/.rbenv/versions/jruby-9.4.2.0/lib/ruby/stdlib/rubygems/request/https_pool.rb:6:in `setup_connection'
    ...
    /Users/2b-software-mac/.rbenv/versions/jruby-9.4.2.0/bin/jgem:21:in `<main>'
    org/jruby/RubyKernel.java:1091:in `load'
    gem:4:in `<main>'

已尝试的配置方式

OpenSSL 3相关尝试

  • RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3)" rbenv install jruby-9.4.2.0
  • RUBY_CONFIGURE_OPTS=--with-openssl-dir=/opt/homebrew/Cellar/openssl@3/3.1.3 rbenv install jruby-9.4.2.0
  • RUBY_CONFIGURE_OPTS=--with-openssl-dir=/opt/local rbenv install jruby-9.4.2.0

OpenSSL 1.1相关尝试

  • LDFLAGS="-L/usr/local/opt/openssl@1.1/lib" CPPFLAGS="-I/usr/local/opt/openssl@1.1/include" CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)" RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)" rbenv install jruby-9.4.2.0

系统及软件版本

MacOS 13.5.2 (M2)

$ openssl version
OpenSSL 3.1.3 19 Sep 2023 (Library: OpenSSL 3.1.3 19 Sep 2023)

$ gem info openssl 
openssl (3.2.0, 3.0.0)

$ gem info jruby-openssl     
jruby-openssl (0.9.4)

$ java --version
openjdk 21 2023-09-19
OpenJDK Runtime Environment Homebrew (build 21)
OpenJDK 64-Bit Server VM Homebrew (build 21, mixed mode, sharing)

$ rbenv -v
rbenv 1.2.0

$ ruby-build --version
ruby-build 20230919

$ rbenv global
3.1.2

$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin22]

$ brew list openssl
/opt/homebrew/Cellar/openssl@3/3.1.3/.bottle/etc/ (7 files)
/opt/homebrew/Cellar/openssl@3/3.1.3/bin/c_rehash
/opt/homebrew/Cellar/openssl@3/3.1.3/bin/openssl
/opt/homebrew/Cellar/openssl@3/3.1.3/include/openssl/ (135 files)
/opt/homebrew/Cellar/openssl@3/3.1.3/lib/libcrypto.3.dylib
/opt/homebrew/Cellar/openssl@3/3.1.3/lib/libssl.3.dylib
/opt/homebrew/Cellar/openssl@3/3.1.3/lib/engines-3/ (3 files)
/opt/homebrew/Cellar/openssl@3/3.1.3/lib/ossl-modules/legacy.dylib
/opt/homebrew/Cellar/openssl@3/3.1.3/lib/pkgconfig/ (3 files)
/opt/homebrew/Cellar/openssl@3/3.1.3/lib/ (4 other files)
/opt/homebrew/Cellar/openssl@3/3.1.3/share/doc/ (798 files)
/opt/homebrew/Cellar/openssl@3/3.1.3/share/man/ (5533 files)

解决方案尝试

1. 为JRuby指定OpenSSL动态库路径

JRuby依赖Java环境加载OpenSSL库,安装前设置相关环境变量:

export JAVA_OPTS="-Djava.library.path=/opt/homebrew/Cellar/openssl@3/3.1.3/lib"
export JRUBY_OPTS="-J-Djava.library.path=/opt/homebrew/Cellar/openssl@3/3.1.3/lib"
RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3)" rbenv install jruby-9.4.2.0

2. 手动安装JRuby专用OpenSSL扩展

若安装时Gem无法通过HTTPS连接,临时切换HTTP源安装jruby-openssl:

# 切换到目标JRuby版本
rbenv local jruby-9.4.2.0
# 临时替换源
gem sources --remove https://rubygems.org/
gem sources --add http://rubygems.org/
# 安装扩展
gem install jruby-openssl -v 0.9.4
# 恢复HTTPS源
gem sources --remove http://rubygems.org/
gem sources --add https://rubygems.org/

3. 修复M2芯片下OpenSSL 1.1路径错误

M2芯片的Homebrew路径为/opt/homebrew而非/usr/local,修正之前的OpenSSL 1.1安装命令:

LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib" CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include" CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)" RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)" rbenv install jruby-9.4.2.0

4. 更新ruby-build到最新版本

旧版ruby-build可能存在M2芯片和OpenSSL 3兼容问题,先更新再安装:

brew upgrade ruby-build
rbenv install jruby-9.4.2.0

5. 用动态链接器指定OpenSSL路径

安装前设置DYLD_LIBRARY_PATH强制加载指定版本OpenSSL:

DYLD_LIBRARY_PATH=/opt/homebrew/Cellar/openssl@3/3.1.3/lib RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3)" rbenv install jruby-9.4.2.0

内容的提问来源于stack exchange,提问作者Dominus.Vobiscum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 01:15:56