【问题标题】:Can't install chef, gem version conflict with net-ssh net-ssh-multi net-ssh-gateway无法安装 chef,gem 版本与 net-ssh net-ssh-multi net-ssh-gateway 冲突
【发布时间】:2013-01-22 04:24:32
【问题描述】:

使用 rvm 和一个空的 gemset,我得到了这个:

$ gem install chef --no-ri --no-rdoc
ERROR:  While executing gem ... (Gem::DependencyError)
    Unable to resolve dependencies: chef requires net-ssh (~> 2.2.2); net-ssh-multi requires net-ssh (>= 2.6.5); net-ssh-gateway requires net-ssh (>= 2.6.5)

我尝试通过安装较早版本的 net-ssh-gateway 和 net-ssh-multi 来解决此问题,但 net-ssh-multi 1.1 版安装 1.1.2 让我感到困惑。

【问题讨论】:

  • 我想我有一个解决方法:

标签: rubygems chef-infra net-ssh


【解决方案1】:

这是我第一个成功的解决方法:

gem install net-ssh -v 2.2.2 --no-ri --no-rdoc
gem install net-ssh-gateway -v 1.1.0 --no-ri --no-rdoc --ignore-dependencies
gem install net-ssh-multi -v 1.1.0 --no-ri --no-rdoc --ignore-dependencies
gem install chef --no-ri --no-rdoc

【讨论】:

  • 由于 nginx 源食谱的兼容性,我不得不使用低于 11 的 Chef 版本,并且您的解决方法帮助了很多 :) 谢谢!
  • 是的,我发现了同样的问题……我的食谱需要 Chef 11 进行一些认真的工作。同时,这个序列让我在 Chef 10.16.4 中得到引导。谢谢你的^
【解决方案2】:

这是由于 net-ssh-multi 的更新将所需的 net-ssh 版本提高到 >= 2.6.5。 Chef 团队已经在开发一个新版本。目前,您可以使用

gem install chef --pre --no-ri --no-rdoc

【讨论】:

  • 我认真地挖掘互联网。发现了一个难以理解的错误,后来谷歌,我找到了我确切问题的完美答案 - 19小时前发布。啊,Stack Overflow - 如果没有你,我们会在哪里?
【解决方案3】:

此序列将在正在引导的服务器上安装 10.16.4 版 Chef,并解决版本冲突:

gem install net-ssh -v 2.2.2 --no-ri --no-rdoc
gem install net-ssh-gateway -v 1.1.0 --ignore-dependencies --no-ri --no-rdoc
gem install net-ssh-multi -v 1.1.0 --ignore-dependencies --no-ri --no-rdoc
gem install chef --no-rdoc --no-ri -v 10.16.4

【讨论】:

    【解决方案4】:

    Bundler 可以毫不费力地协商这些模糊的依赖关系。这是使用 Bundler 魔术安装 Chef 的单线:

    echo -e "source :rubygems\ngem 'chef'" > Gemfile && bundle
    

    或者您可以使用Opscode recommended installer。这是 Ubuntu 的单行代码:

    curl -L https://www.opscode.com/chef/install.sh | sudo bash
    

    【讨论】:

      【解决方案5】:

      我有办法让 chef 10.12.0 gem 安装在 Ruby 1.8.7 上。我不得不稍微调整 Mojo 的答案才能完成这项工作。

      在 Mojo 序列中的前面步骤之后,gem install chef -v 10.12.0 失败了:

      ERROR: Error installing chef: mime-types requires Ruby version >= 1.9.2.

      我通过强制使用恰好可以完成工作的旧版本 (1.21) 的 mime 类型来解决此错误。

      整件事是:

      gem install net-ssh -v 2.2.2 --no-ri --no-rdoc
      gem install net-ssh-gateway -v 1.1.0 --ignore-dependencies --no-ri --no-rdoc
      gem install net-ssh-multi -v 1.1.0 --ignore-dependencies --no-ri --no-rdoc
      gem install mime-types -v 1.21 --no-ri --no-rdoc
      gem install chef --no-rdoc --no-ri -v 10.12.0
      

      【讨论】:

        【解决方案6】:

        Bundler很好的解决了这个问题

        mkdir /tmp/install-chef
        pushd /tmp/install-chef
        gem install bundler
        echo -e "source 'https://rubygems.org'\ngem 'chef', '= 10.18.2'" > Gemfile
        bundle install
        popd
        rm -rf /tmp/install-chef
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-01
          • 2013-06-22
          • 1970-01-01
          • 2016-04-30
          • 1970-01-01
          相关资源
          最近更新 更多