MacOS系统安装Colorls时报Failed to build gem native extension错误如何解决
macOS安装colorls报「Failed to build gem native extension」错误的解决方案
该报错本质是编译Ruby gem原生扩展时缺少必要的编译依赖、或者使用了 macOS 系统自带的受SIP保护的Ruby环境导致权限不足,可按以下优先级尝试修复:
- 第一步:确认Xcode命令行工具已安装并完成许可认证
- 执行安装命令:
xcode-select --install,按照弹出窗口指引完成安装 - 若已安装,执行命令确认许可已同意:
sudo xcodebuild -license accept
- 执行安装命令:
- 第二步:替换系统自带Ruby环境(最稳妥的通用解决方案)
macOS自带的Ruby环境受系统完整性保护(SIP)限制,直接用sudo安装gem大概率会出现权限或编译问题,推荐用Homebrew安装独立Ruby环境:- 执行命令安装Ruby:
brew install ruby - 安装完成后按照终端输出的提示,将Ruby的可执行文件路径添加到对应shell配置文件中:
- 若使用zsh(macOS默认shell),将提示的export语句添加到
~/.zshrc文件 - 若使用bash,添加到
~/.bash_profile文件
- 若使用zsh(macOS默认shell),将提示的export语句添加到
- 执行
source ~/.zshrc(或对应配置文件)使配置生效,执行which ruby确认输出路径为/usr/local/bin/ruby(Intel芯片)或/opt/homebrew/bin/ruby(Apple Silicon芯片),而非/usr/bin/ruby - 此时直接执行
gem install colorls即可,无需加sudo
- 执行命令安装Ruby:
- 第三步:缺失libffi依赖的修复方案
若替换Ruby环境后仍报错,大概率是缺少libffi编译依赖:- 执行
brew install libffi安装依赖 - 执行如下指定libffi路径的命令安装colorls:
PKG_CONFIG_PATH="$(brew --prefix libffi)/lib/pkgconfig" gem install colorls
- 执行
- 第四步:Apple Silicon芯片设备额外排查点
若使用M1/M2等Apple Silicon芯片的设备,可先安装Rosetta2转译层后再尝试安装:- 执行命令安装Rosetta2:
softwareupdate --install-rosetta - 重启终端后重新执行安装命令
- 执行命令安装Rosetta2:
内容的提问来源于stack exchange,提问作者user1941537
相关产品推荐
相关产品推荐

