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.0RUBY_CONFIGURE_OPTS=--with-openssl-dir=/opt/homebrew/Cellar/openssl@3/3.1.3 rbenv install jruby-9.4.2.0RUBY_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
相关产品推荐
相关产品推荐

