Ruby项目执行bundle install安装mysql2失败,openssl路径不符如何解决
这个报错常见于M系列芯片的Mac设备,ARM架构下Homebrew的默认安装路径为/opt/homebrew/,和Intel芯片的/usr/local/路径不同,mysql2编译时默认按Intel路径查找openssl库导致链接失败。
解决方案
前置检查
先确认openssl@1.1已安装,未安装执行以下命令:
brew install openssl@1.1
方法一:单独安装对应版本mysql2 gem
执行以下命令指定openssl路径编译安装:
gem install mysql2 -v '0.5.3' -- --with-opt-dir="$(brew --prefix openssl@1.1)"
如果仍报错,可完整指定lib和头文件路径:
gem install mysql2 -v '0.5.3' -- \ --with-opt-dir="$(brew --prefix openssl@1.1)" \ --with-ldflags="-L$(brew --prefix openssl@1.1)/lib" \ --with-cppflags="-I$(brew --prefix openssl@1.1)/include"
安装完成后再执行bundle install即可。
方法二:为Bundler配置编译参数(无需单独安装gem)
在项目根目录执行以下命令,给mysql2配置固定编译参数:
bundle config set --local build.mysql2 "--with-opt-dir=$(brew --prefix openssl@1.1)"
配置完成后直接执行bundle install即可正常完成依赖安装。
异常排查
如果以上操作后仍提示找不到MySQL相关库,可追加MySQL路径参数:
- 单独安装gem时在命令末尾追加
--with-mysql-dir=$(brew --prefix mysql) - Bundler配置时将上述参数追加到build.mysql2的配置值末尾即可。
内容的提问来源于stack exchange,提问作者Andre Aditya
相关产品推荐
相关产品推荐

