如何运行Chef Knife插件?KnifeSpork安装后运行报错求助
解决方法
核心原因
你遇到的报错是因为Chef Workstation自带独立的Ruby运行环境,和你通过RVM管理的系统Ruby环境互相隔离:
- 第一次报错是因为你把knife-spork安装到了RVM的Ruby gem库中,而Chef自带的knife命令只会读取自身内嵌环境的gem,识别不到RVM安装的插件
- 第二次报错是因为bundle关联的是RVM的Ruby gem集,和Chef内嵌环境的依赖版本不匹配
推荐解决方案(最稳妥)
直接使用Chef Workstation自带的gem管理工具安装插件,适配性最高:
- 执行命令安装knife-spork到Chef内置环境:
chef gem install knife-spork
- 直接运行插件命令验证:
knife spork info
正常会输出KnifeSpork的版本、配置等相关信息,代表运行成功。
可选方案(需使用项目Gemfile场景)
如果你需要在项目Gemfile中管理knife插件依赖,按以下步骤操作:
- 临时关闭当前Shell的RVM Ruby环境,切换到系统默认的Chef Workstation Ruby:
rvm use system
- 确认当前knife命令来自Chef Workstation:
which knife # 正常输出应为/opt/chef-workstation/bin/knife(Mac)或/usr/bin/knife(Linux)
- 使用Chef自带的bundle安装依赖:
bundle install
- 执行插件命令:
bundle exec knife spork info
常见异常排查
如果安装后依然提示找不到spork子命令:
- 检查PATH环境变量,确保Chef Workstation的bin目录优先级高于RVM的bin目录
- 执行
gem list knife-spork和chef gem list knife-spork,确认插件是安装在Chef的gem库中
内容的提问来源于stack exchange,提问作者Artur
相关产品推荐
相关产品推荐

