使用rbenv安装Ruby 3.1.2遇缺失扩展错误,求解决方案
使用rbenv安装Ruby 3.1.2时出现yaml扩展未编译错误
安装Ruby 3.1.2时触发如下构建失败错误:
BUILD FAILED (macOS 12.4 using ruby-build 20220713) Inspect or clean up the working tree at /var/folders/bw/rs138g1n5zv_qwn7_7kggc9r0000gq/T/ruby-build.20220719230321.35067.BRya3b Results logged to /var/folders/bw/rs138g1n5zv_qwn7_7kggc9r0000gq/T/ruby-build.20220719230321.35067.log Last 10 log lines: The Ruby yaml extension was not compiled. ERROR: Ruby install aborted due to missing extensions Configure options used: --prefix=/Users/some_user/.rbenv/versions/3.1.2 --with-openssl-dir=/Users/some_user/.rbenv/versions/3.1.2/openssl --enable-shared --with-readline-dir=/usr/local/opt/readline CC=clang LDFLAGS=-L/Users/some_user/.rbenv/versions/3.1.2/lib CPPFLAGS=-I/Users/some_user/.rbenv/versions/3.1.2/include
已尝试的操作:
- 执行
brew update、brew install ruby-build、brew install rbenv后运行rbenv install 3.1.2 - 重新安装rbenv和ruby-build
- 尝试安装Ruby 3.1.0(出现相同错误)
- 设置环境变量后安装:
RUBY_CONFIGURE_OPTS="--with-openssl-dir=`brew --prefix openssl` --with-readline-dir=`brew --prefix readline` --with-libyaml-dir=`brew --prefix libyaml`" rbenv install 3.1.2
当前rbenv版本为1.2.0,求解决方法。
解决步骤
- 确保libyaml安装完好
执行brew install libyaml,若已安装则执行brew reinstall libyaml修复可能损坏的文件。 - 清理ruby-build临时文件
删除本次安装的临时工作目录:
或者直接清理所有ruby-build临时文件:rm -rf /var/folders/bw/rs138g1n5zv_qwn7_7kggc9r0000gq/T/ruby-build.20220719230321.35067.BRya3brm -rf /var/folders/bw/rs138g1n5zv_qwn7_7kggc9r0000gq/T/ruby-build.* - 调整环境变量设置方式
先手动获取依赖的绝对路径:
然后将这些路径直接写入配置变量,避免动态获取可能的路径问题,例如:brew --prefix openssl brew --prefix readline brew --prefix libyamlRUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/local/opt/openssl --with-readline-dir=/usr/local/opt/readline --with-libyaml-dir=/usr/local/opt/libyaml" rbenv install 3.1.2 - 检查Xcode Command Line Tools完整性
执行xcode-select --install安装完整的命令行工具,若已安装则执行xcode-select --reset重置后再尝试安装。 - 排除环境变量干扰
先清空可能冲突的LDFLAGS和CPPFLAGS,再执行安装:unset LDFLAGS CPPFLAGS RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl) --with-readline-dir=$(brew --prefix readline) --with-libyaml-dir=$(brew --prefix libyaml)" rbenv install 3.1.2
内容的提问来源于stack exchange,提问作者mr_muscle
相关产品推荐
相关产品推荐

