Mac High Sierra系统安装Sass时gem原生扩展构建失败求助
嘿,我之前也踩过这个坑!在Mac High Sierra上用系统自带的Ruby安装Sass时,经常会因为Ruby头文件缺失和系统权限限制导致gem的原生扩展编译失败。先还原你遇到的具体报错:
MBP-de-Patricia:~ patricia$ sudo gem install sass
Password:
Building native extensions. This could take a while...
ERROR: Error installing sass:
ERROR: Failed to build gem native extension.
current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.9.23/ext/ffi_c
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby -r ./siteconf20180318-892-l1v6lp.rb extconf.rb
mkmf.rb can't find header files for ruby at /System/Library...
下面给你几个实用的解决步骤:
1. 先补上缺失的开发依赖
报错核心是找不到Ruby头文件,这是因为系统默认没装基础开发工具。执行以下命令安装Xcode命令行工具:
xcode-select --install
弹出安装窗口后点击「安装」,等待完成即可,这一步能补上编译所需的所有头文件。
2. 用Ruby版本管理器绕开系统Ruby(推荐长期方案)
系统自带的Ruby版本偏旧,而且Apple对它的权限管控极严,很容易出各种奇怪问题。建议用rbenv来独立管理你的Ruby环境:
- 先装Homebrew(如果还没装):
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - 安装rbenv:
brew install rbenv - 初始化rbenv,按照提示把配置添加到你的shell配置文件(比如
~/.bash_profile或~/.zshrc):rbenv init - 重启终端后,安装一个稳定的Ruby版本(比如2.7.6,按需选择即可):
rbenv install 2.7.6 - 设置全局使用这个Ruby版本:
rbenv global 2.7.6 - 最后安装Sass:
gem install sass
3. 临时快速解决(不推荐长期使用)
如果你不想折腾版本管理器,也可以尝试把Sass安装到用户目录,绕开系统权限限制:
gem install sass --user-install
不过前提还是要先完成第一步的Xcode命令行工具安装,否则还是会缺头文件。
内容的提问来源于stack exchange,提问作者patt caba

