MacOS Sonoma 14.6.1环境下Ruby 2.6.10安装eventmachine 1.2.7失败,请求解决方法
MacOS Sonoma 14.6.1环境下Ruby 2.6.10安装eventmachine 1.2.7失败,请求解决方法
我完全能理解你给Jekyll博客执行bundle install时卡在上eventmachine安装的烦躁,结合你贴出的错误日志和mkmf.log内容,问题根源其实是两个:Ruby开发头文件缺失和OpenSSL依赖版本不兼容/路径找不到,下面给你一步步落地的解决办法:
一、先解决Ruby头文件缺失问题(ruby/config.h找不到)
系统自带的Ruby默认没有包含完整的开发头文件,加上MacOS Sonoma的SDK路径变化,导致编译eventmachine的C扩展时找不到必要的头文件,解决步骤:
- 安装或更新Xcode命令行工具:
打开终端执行:
如果已经安装,终端会提示“xcode-select: error: command line tools are already installed, use "Software Update" to install updates”;如果未安装,会弹出安装引导窗口,按照提示完成即可。xcode-select --install
二、解决OpenSSL依赖问题
从mkmf.log里的package configuration for openssl is not found可以看出,旧版本Ruby(2.6.10)和MacOS Sonoma自带的OpenSSL版本不兼容,且eventmachine 1.2.7对OpenSSL 3.x支持不佳,我们需要手动指定兼容的OpenSSL版本:
- 用Homebrew安装OpenSSL 1.1(eventmachine 1.2.7的兼容版本):
brew install openssl@1.1 - 设置环境变量,让bundler在安装时使用这个OpenSSL路径:
export LDFLAGS="-L$(brew --prefix openssl@1.1)/lib" export CPPFLAGS="-I$(brew --prefix openssl@1.1)/include" export PKG_CONFIG_PATH="$(brew --prefix openssl@1.1)/lib/pkgconfig" - 重新执行bundle安装:
bundle install
三、备选方案:用Ruby版本管理器规避系统Ruby的坑
系统自带的Ruby经常会有权限、依赖冲突的问题,长期来看,用rbenv或rvm这类版本管理器安装Ruby会更省心:
- 安装rbenv和ruby-build:
brew install rbenv ruby-build - 初始化rbenv(根据你的shell类型,比如zsh就执行下面的命令,bash的话替换成
~/.bashrc):echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc source ~/.zshrc - 安装Ruby 2.6.10:
rbenv install 2.6.10 - 在你的Jekyll博客目录下设置本地Ruby版本:
rbenv local 2.6.10 - 最后重新执行bundle install:
bundle install
备注:内容来源于stack exchange,提问作者k-debugger




