5

我正在尝试设置一个 puppet 节点,但 ruby​​gems 似乎没有表现。

如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过安装的二进制文件运行它rubygems (/usr/bin/facter),它抛出:

/usr/lib/ruby/1.8/facter/uptime.rb:11: undefined method `get_uptime' for Facter::Util::Uptime:Module (NoMethodError)
        from /usr/lib/ruby/gems/1.8/gems/facter-1.5.8/lib/facter/util/loader.rb:73:in `load'
        from /usr/lib/ruby/gems/1.8/gems/facter-1.5.8/lib/facter/util/loader.rb:73:in `load_file'
        from /usr/lib/ruby/gems/1.8/gems/facter-1.5.8/lib/facter/util/loader.rb:38:in `load_all'
        from /usr/lib/ruby/gems/1.8/gems/facter-1.5.8/lib/facter/util/loader.rb:33:in `each'
        from /usr/lib/ruby/gems/1.8/gems/facter-1.5.8/lib/facter/util/loader.rb:33:in `load_all'
        from /usr/lib/ruby/gems/1.8/gems/facter-1.5.8/lib/facter/util/loader.rb:30:in `each'
        from /usr/lib/ruby/gems/1.8/gems/facter-1.5.8/lib/facter/util/loader.rb:30:in `load_all'
        from /usr/lib/ruby/gems/1.8/gems/facter-1.5.8/lib/facter/util/collection.rb:90:in `load_all'
        from /usr/lib/ruby/gems/1.8/gems/facter-1.5.8/lib/facter.rb:95:in `to_hash'
        from /usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter:137
        from /usr/bin/facter:19:in `load'
        from /usr/bin/facter:19

我尝试删除 ruby​​gems 并重新安装以及重新安装 gem,但似乎没有任何效果。

我假设某些东西缓存在某处,因为当我尝试运行 puppet 时它会引发相同的错误。

有任何想法吗?

4

1 回答 1

8

看起来您可能facter在使用 ruby​​gems 安装之前已经在 ruby​​gems 之外安装了它。

您会注意到堆栈跟踪中的最终文件/usr/lib/ruby/1.8/facter/uptime.rb不是/usr/lib/ruby/gems/1.8/gems/facter-1.5.8.

您应该检查其中的文件/usr/lib/ruby/1.8/facter是否确实只是因素的旧版本,如果是,您应该能够删除它们或将它们移动到不同命名的目录,它将解决您的问题。

于 2010-09-26T18:02:45.310 回答