安装依赖OpenSSL的Ruby Gem失败,如何适配Homebrew安装的OpenSSL?
解决Ruby Gem安装时找不到OpenSSL头文件的问题
方法1:临时指定OpenSSL路径安装
直接在gem install命令中通过参数指定对应OpenSSL版本的路径,按需选择:
使用OpenSSL@3
gem install [你的Gem名称] -- --with-openssl-dir=/opt/homebrew/opt/openssl@3
使用OpenSSL@1.1
gem install [你的Gem名称] -- --with-openssl-dir=/opt/homebrew/opt/openssl@1.1
方法2:设置全局环境变量(永久生效)
将OpenSSL路径加入shell环境变量,让Ruby编译时自动识别:
- 打开你的shell配置文件(zsh为
~/.zshrc,bash为~/.bash_profile) - 添加对应版本的环境变量配置:
- 针对OpenSSL@3:
export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH" export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib" export CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include" export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@3/lib/pkgconfig" - 针对OpenSSL@1.1:
export PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH" export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib" export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include" export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@1.1/lib/pkgconfig"
- 针对OpenSSL@3:
- 重新加载配置文件:
source ~/.zshrc # 对应bash执行source ~/.bash_profile - 执行常规的Gem安装命令:
gem install [你的Gem名称]
方法3:通过Ruby版本管理工具指定OpenSSL路径
如果用rbenv或rvm管理Ruby,可重新编译Ruby并绑定指定的OpenSSL版本:
rbenv场景
RUBY_CONFIGURE_OPTS="--with-openssl-dir=/opt/homebrew/opt/openssl@3" rbenv install [Ruby版本号]
rvm场景
rvm install [Ruby版本号] --with-openssl-dir=/opt/homebrew/opt/openssl@3
需要使用OpenSSL@1.1时,将上述命令中的openssl@3替换为openssl@1.1即可。
内容的提问来源于stack exchange,提问作者yegor256
相关产品推荐
相关产品推荐

