如何通过bundle config设置gem安装时生效的环境变量(M1 Mac安装ffi问题)
解决方案
方法1:单次执行bundle install时临时注入环境变量
直接在安装命令前加对应的环境变量即可,仅当前次安装生效:
PKG_CONFIG_PATH="/opt/homebrew/opt/libffi/lib/pkgconfig" bundle install
方法2:给bundle设置ffi持久编译参数(推荐)
不需要配置环境变量,直接指定libffi的安装路径给ffi扩展的编译脚本即可,配置后永久生效,后续执行bundle install无需额外加参数:
bundle config build.ffi --with-libffi-dir=/opt/homebrew/opt/libffi
如果想限制仅当前项目生效,加--local参数即可:
bundle config --local build.ffi --with-libffi-dir=/opt/homebrew/opt/libffi
方法3:全局配置环境变量
如果需要所有场景安装ffi都自动生效,直接把环境变量写入你当前shell的配置文件(比如zsh对应~/.zshrc,bash对应~/.bash_profile):
export PKG_CONFIG_PATH="/opt/homebrew/opt/libffi/lib/pkgconfig"
写入后执行source ~/.zshrc(替换为你自己的shell配置文件路径)生效即可。
之前的配置不生效的原因:
BUNDLE_BUILD__FFI对应的配置内容会直接传递给ffi gem的扩展编译脚本,而非作为shell环境变量前置解析,所以直接把环境变量字符串写入该配置无法被识别。
内容的提问来源于stack exchange,提问作者Brandon
相关产品推荐
相关产品推荐

