You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法加载Ruby gkms插件:hiera/eyaml/encryptors/gkms加载错误求助

解决hiera-eyaml-gkms插件加载错误(LoadError: cannot load such file -- hiera/backend/eyaml/encryptors/gkms)

错误日志

/Library/Ruby/Site/2.6.0/rubygems/core_ext/kernel_require.rb:85:in `require': cannot load such file -- hiera/backend/eyaml/encryptors/gkms (LoadError)
    from /Library/Ruby/Site/2.6.0/rubygems/core_ext/kernel_require.rb:85:in `require'
    from /Users/user/.gem/ruby/2.6.0/gems/hiera-eyaml-3.4.0/lib/hiera/backend/eyaml/encryptor.rb:17:in `find'
    from /Users/user/.gem/ruby/2.6.0/gems/hiera-eyaml-3.4.0/lib/hiera/backend/eyaml/subcommands/encrypt.rb:79:in `execute'
    from /Users/user/.gem/ruby/2.6.0/gems/hiera-eyaml-3.4.0/lib/hiera/backend/eyaml/CLI.rb:46:in `execute'
    from /Users/user/.gem/ruby/2.6.0/gems/hiera-eyaml-3.4.0/bin/eyaml:21:in `<top (required)>'
    from /Users/user/.gem/ruby/2.6.0/bin/eyaml:25:in `load'
    from /Users/user/.gem/ruby/2.6.0/bin/eyaml:25:in `<main>'

当前环境信息

  • eyaml版本:
❯ eyaml version
[hiera-eyaml-core] hiera-eyaml (core): 3.4.0
  • Ruby版本:
❯ ruby -v
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin22]
  • 已安装的关键gem:
❯ gem list
*** LOCAL GEMS ***
...
google-cloud-kms (2.0.0)
hiera-eyaml (3.4.0)
hiera-eyaml-gkms (0.2.0)
...
  • $PATH配置:
export PATH="/opt/homebrew/opt/ruby/bin:/opt/homebrew/lib/ruby/gems/3.1.0/bin:$PATH" 
  • $LOAD_PATH信息:
irb(main):001> puts $LOAD_PATH
/opt/homebrew/lib/ruby/site_ruby/3.3.0
/opt/homebrew/lib/ruby/site_ruby/3.3.0/arm64-darwin22
/opt/homebrew/lib/ruby/site_ruby
/opt/homebrew/lib/ruby/vendor_ruby/3.3.0
/opt/homebrew/lib/ruby/vendor_ruby/3.3.0/arm64-darwin22
/opt/homebrew/lib/ruby/vendor_ruby
/opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0
/opt/homebrew/Cellar/ruby/3.3.0/lib/ruby/3.3.0/arm64-darwin22

已尝试的排查步骤

  • 重装不同版本的hiera-eyaml、hiera-eyaml-gkms gem
  • 更新gem库
  • 重装Ruby(当前为brew安装的3.3.0)
  • 更新$PATH环境变量

解决方案建议

从错误日志可以看出,当前执行的eyaml命令实际调用的是Ruby 2.6.0环境下的版本(路径/Users/user/.gem/ruby/2.6.0/bin/eyaml),但你当前使用的是Ruby 3.3.0,二者环境不匹配导致无法找到gkms加密器文件。以下是具体修复步骤:

1. 确认eyaml命令的实际路径

执行以下命令查看eyaml的位置:

which eyaml

如果输出指向Ruby 2.6.0的路径(如/Users/user/.gem/ruby/2.6.0/bin/eyaml),说明系统优先使用了旧版本的命令。

2. 清理旧版本gem并重新安装到正确环境

# 卸载所有版本的相关gem
gem uninstall -a hiera-eyaml hiera-eyaml-gkms

# 确认当前gem命令属于brew安装的Ruby 3.3.0
which gem
# 预期输出:/opt/homebrew/opt/ruby/bin/gem

# 重新安装gem
gem install hiera-eyaml hiera-eyaml-gkms

3. 验证gkms加密器文件存在

执行以下命令查看hiera-eyaml-gkms的安装文件:

gem contents hiera-eyaml-gkms

确保输出中包含hiera/backend/eyaml/encryptors/gkms.rb文件,比如类似路径:

/opt/homebrew/lib/ruby/gems/3.3.0/gems/hiera-eyaml-gkms-0.2.0/lib/hiera/backend/eyaml/encryptors/gkms.rb

4. 修正$PATH配置

更新你的shell配置文件(如~/.zshrc或~/.bashrc),确保brew的Ruby路径优先级最高,且版本匹配当前Ruby 3.3.0:

export PATH="/opt/homebrew/opt/ruby/bin:/opt/homebrew/lib/ruby/gems/3.3.0/bin:$PATH"

执行以下命令刷新环境:

source ~/.zshrc # 或source ~/.bashrc,根据你的shell类型选择

5. 验证环境一致性

执行以下命令确认所有工具都指向Ruby 3.3.0环境:

ruby -v # 输出ruby 3.3.0...
gem -v # 对应3.3.0的gem版本(通常为3.5.x)
which eyaml # 输出/opt/homebrew/lib/ruby/gems/3.3.0/bin/eyaml
eyaml version # 显示hiera-eyaml 3.4.0,且路径为brew相关目录

完成以上步骤后,重新尝试使用gkms插件加密文件,应该可以解决加载错误。

内容的提问来源于stack exchange,提问作者adrianno.86

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:28:11