Mac上Chef Workstation的knife命令报错,OpenSSL版本冲突求助
问题:Mac上Chef Workstation安装后OpenSSL版本冲突导致UI和knife命令故障
现象1:Chef Workstation UI弹出JavaScript错误
A JavaScript error occurred in the main process Uncaught Exception: Error: Command failed: /opt/chef-workstation/bin/ohai os platform platform_family platform_version kernel/machine <internal:/opt/chef-workstation/embedded/lib/ruby/3.1.0/rubygems/core_ext/ kernel_require.rb>:85:in 'require': dlopen(/Users/ralphmira/.chef/gem/ruby/ 3.1.0/gems/openssl-3.2.0/lib/openssl.bundle, 0x0009): tried: '/Users/ ralphmira/.chef/gem/ruby/3.1.0/gems/openssl-3.2.0/lib/openssl.bundle' (code signature in <403F00BB-D10A-3EB2-B1CC-3C91802BC874> '/Users/ ralphmira/.chef/gem/ruby/3.1.0/gems/openssl-3.2.0/lib/openssl.bundle' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs), /System/Volumes/Preboot/Cryptexes/OS/Users/ ralphmira/.chef/gem/ruby/3.1.0/gems/openssl-3.2.0/lib/openssl.bundle' (no such file), '/Users/ralphmira/.chef/gem/ruby/3.1.0/gems/openssl-3.2.0/lib/ openssl.bundle' (code signature in <403F00BB-D10A-3EB2- B1CC-3C91802BC874> '/Users/ralphmira/.chef/gem/ruby/3.1.0/gems/ openssl.bundle' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs) - /Users/ ralphmira/.chef/gem/ruby/3.1.0/gems/openssl-3.2.0/lib/openssl.bundle (LoadError) from <internal:/opt/chef-workstation/embedded/lib/ruby/3.1.0/rubygems/ core_ext/kernel_require.rb>:85:in 'require' from /Users/ralphmira/.chef/gem/ruby/3.1.0/gems/openssl-3.2.0/lib/ openssl.rb: 13:in *<top (required)> from <internal:/opt/chef-workstation/embedded/lib/ruby/3.1.0/rubygems/ core_ext/kernel_require.rb>:85 in 'require' from <internal:/opt/chef-workstation/embedded/lib/ruby/3.1.0/rubygems/ core_ext/kernel_require.rb>:85:in 'require' from /opt/chef-workstation/bin/ohai:9:in <main>' at checkExecSyncError (node:child_process:905:11) at execFileSync (node:child_process:941:15) at func (node:electron/js2c/node_init:2:2214) at queryOhai (/Applications/Chef Workstation App.app/Contents/Resources/ app.asar/src/helpers/chef_workstation.js:203:14) at Object.getPlatformInfo (/Applications/Chef Workstation App.app/ Contents/Resources/app.asar/src/helpers/chef_workstation.js:184:10) at new OmnitruckUpdateChecker (/Applications/Chef Workstation App.app/ Contents/Resources/app.asar/src/omnitruck-update-checker/omnitruck- update-checker.js:14:41) at new Main (/Applications/Chef Workstation App.app/Contents/Resources/ app.asar/src/main.js:24:39) at Object.<anonymous> (Applications/Chef Workstation App.app/Contents/ Resources/app.asar/src/app.js:4:1) at Module._compile (node:internal/modules/cjs/loader:1391:14)
现象2:knife命令执行失败
➜ ~ knife -v /opt/chef-workstation/embedded/lib/ruby/3.1.0/rubygems/specification.rb:2278:in `check_version_conflict': can't activate openssl-3.2.0, already activated openssl-3.0.1 (Gem::LoadError) from /opt/chef-workstation/embedded/lib/ruby/3.1.0/rubygems/specification.rb:1415:in `activate' from /opt/chef-workstation/embedded/lib/ruby/3.1.0/rubygems/core_ext/kernel_gem.rb:68:in `block in gem' from /opt/chef-workstation/embedded/lib/ruby/3.1.0/rubygems/core_ext/kernel_gem.rb:68:in `synchronize' from /opt/chef-workstation/embedded/lib/ruby/3.1.0/rubygems/core_ext/kernel_gem.rb:68:in `gem' from /usr/local/bin/knife:311:in `<main>'
已尝试的无效操作
- 重新安装Chef Workstation
- 通过brew卸载Chef Workstation、Ruby、OpenSSL并清理
- 尝试将OpenSSL从3.4.0降级到3.2.0,但brew无法找到对应版本
可能诱因
两周前曾安装Jekyll用于GitHub Pages文档制作,当前Ruby 3.4.1已丢失,Jekyll也无法使用
解决方案
1. 清理用户目录下的Chef gem缓存
Chef Workstation自带独立的Ruby环境,用户目录下的.chef/gem会干扰自带环境的依赖,直接删除该目录:
rm -rf ~/.chef/gem
2. 隔离Chef Workstation与系统Ruby环境
Chef Workstation的命令(如knife、ohai)应该优先使用自带的Ruby环境,检查你的Shell配置文件(~/.zshrc或~/.bash_profile),确保Chef的路径在系统Ruby之前:
# 在Shell配置文件中添加或修改: export PATH="/opt/chef-workstation/bin:$PATH"
添加后执行source ~/.zshrc(或对应Shell的配置文件)使变更生效。
3. 修复系统Ruby与Jekyll环境(可选)
如果你需要恢复Jekyll,使用Ruby版本管理器(如rbenv或rvm)隔离不同Ruby版本,避免直接修改系统Ruby:
- 安装rbenv:
brew install rbenv rbenv init - 安装Ruby 3.4.1:
rbenv install 3.4.1 rbenv global 3.4.1 - 重新安装Jekyll:
gem install jekyll bundler
4. 重新验证Chef Workstation功能
- 重启Chef Workstation UI,检查是否还弹出JS错误
- 执行
knife -v确认命令正常工作
内容的提问来源于stack exchange,提问作者Ralph Lawrence Mira
相关产品推荐
相关产品推荐

