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

WSL中用rbenv安装Ruby 3.2.1失败,求助解决方法

Ruby 3.2.1 在WSL中通过rbenv安装失败(OpenSSL扩展未编译)的解决方案

问题背景

在WSL环境下通过Homebrew安装rbenv后,执行rbenv install 3.2.1安装Ruby 3.2.1时构建失败,核心报错为Ruby openssl扩展未编译。已尝试安装libssl-dev及其他基础依赖(build-essential、libreadline-dev、zlib1g-dev),但问题仍存在。

报错日志如下:

installing bundled gem cache: /home/cristian/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/cache
The Ruby openssl extension was not compiled.
ERROR: Ruby install aborted due to missing extensions
Try running apt-get install -y libssl-dev to fetch missing dependencies.

Configure options used:
--prefix=/home/cristian/.rbenv/versions/3.2.1
--enable-shared
--with-readline-dir=/home/linuxbrew/.linuxbrew/opt/readline
--with-libyaml-dir=/home/linuxbrew/.linuxbrew/opt/libyaml
--with-gmp-dir=/home/linuxbrew/.linuxbrew/opt/gmp
LDFLAGS=-L/home/cristian/.rbenv/versions/3.2.1/lib
CPPFLAGS=-I/home/cristian/.rbenv/versions/3.2.1/include

排查与解决步骤

1. 指定正确的OpenSSL路径(核心解决方法)

Ruby 3.2.x对OpenSSL版本有明确要求,WSL系统默认的libssl-dev版本可能不兼容,且rbenv未自动识别Homebrew安装的OpenSSL路径。

  • 先确认Homebrew是否安装了OpenSSL 3.x:
brew list | grep openssl

若未安装,执行:

brew install openssl@3
  • 设置环境变量,强制rbenv编译时使用Homebrew的OpenSSL:
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@3)"
export LDFLAGS="-L$(brew --prefix openssl@3)/lib"
export CPPFLAGS="-I$(brew --prefix openssl@3)/include"
  • 重新执行安装:
rbenv install 3.2.1

2. 清理残留的编译缓存

之前的失败可能留下损坏的中间文件,导致后续编译异常:

rm -rf /home/cristian/.rbenv/versions/3.2.1
rm -rf ~/.rbenv/sources/3.2.1*

清理完成后再次尝试安装。

3. 确保Homebrew环境变量正确加载

由于rbenv是通过Homebrew安装的,需确认Homebrew的环境变量已在shell中生效。检查~/.bashrc或~/.zshrc是否包含:

eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

若未添加,将其写入配置文件后重启shell,再执行安装命令。

4. 补充安装依赖包

部分场景下还需安装libffi-dev和pkg-config以确保编译依赖完整:

sudo apt install libffi-dev pkg-config

安装完成后重新编译Ruby。


内容的提问来源于stack exchange,提问作者Cristian Rojas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:22:48