在Rails更新期间无法在本地安装Capistrano gem

时间:2019-07-03 17:20:44

标签: ruby-on-rails ruby rubygems

我正在尝试在本地安装Capistrano gem,但是在将Rails项目从Rails 4更新到Rails 5时遇到以下错误。

以下是信息:

Ruby版本:

ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin17]

宝石文件:

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '5.2.3'

...

group :development, :test do
  gem 'capistrano',  '~> 3.1'
  gem 'capistrano-rails', '~> 1.1', :require => false
  gem 'capistrano-rvm', :require => false
  gem 'capistrano-bundler', :require => false
  gem 'capistrano-thin', :require => false, :github => 'freego/capistrano-thin'
  gem 'capistrano-sidekiq', github: 'seuros/capistrano-sidekiq'
end

当我尝试bundle install所有宝石时,发现以下错误:

Traceback (most recent call last):
    2: from ./bin/bundle:3:in `<main>'
    1: from /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems.rb:263:in `bin_path'
/Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': Could not find 'bundler' (1.14.3) required by your /Users/albert/localDocuments/CodingArea/Clients/hanspeter/book/Gemfile.lock. (Gem::GemNotFoundException)
To update to the lastest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:1.14.3`

如果按照建议尝试更新捆绑程序gem,则会发现以下错误:

bundle update --bundler                                                               [2.5.0]
Your Gemfile lists the gem annotate (>= 0) more than once.
You should probably keep only one of them.
Remove any duplicate entries and specify the gem only once (per group).
While it's not a problem now, it could cause errors if you change the version of one of them later.
Fetching https://github.com/freego/capistrano-thin.git
Fetching https://github.com/seuros/capistrano-sidekiq.git
Fetching gem metadata from https://rails-assets.org/...
Fetching gem metadata from https://rails-assets.org/..
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rails-assets.org/..
Fetching gem metadata from https://rails-assets.org/..
Fetching gem metadata from https://rubygems.org/..
Fetching gem metadata from https://rails-assets.org/..
Fetching gem metadata from https://rails-assets.org/..
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies....
Bundler could not find compatible versions for gem "capistrano":
  In snapshot (Gemfile.lock):
    capistrano (= 3.4.0)

  In Gemfile:
    capistrano-bundler was resolved to 1.1.4, which depends on
      capistrano (~> 3.1)

    capistrano-rvm was resolved to 0.1.2, which depends on
      capistrano (~> 3.0)

    capistrano-sidekiq was resolved to 1.0.2, which depends on
      capistrano (>= 3.9.0)

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.

在我的Gemfile.lock中,我具有以下相关信息:

    cancancan (1.13.1)
    capistrano (3.4.0)
      i18n
      rake (>= 10.0.0)
      sshkit (~> 1.3)
    capistrano-bundler (1.1.4)
      capistrano (~> 3.1)
      sshkit (~> 1.2)
    capistrano-rails (1.1.6)
      capistrano (~> 3.1)
      capistrano-bundler (~> 1.1)
    capistrano-rvm (0.1.2)
      capistrano (~> 3.0)
      sshkit (~> 1.2)
    carrierwave (0.10.0)
      activemodel (>= 3.2.0)
      activesupport (>= 3.2.0)
      json (>= 1.7)

在文件末尾说:

BUNDLED WITH
   1.14.3

另一方面,如果我列出了我的本地宝石,则我具有以下版本的捆绑器:

gem list

捆绑器版本:

bundler (2.0.1)

我猜是因为bundle install尚不可用,所以Gemfile.lock尚未更新。

在我的本地宝石中,看不到capistrano宝石。

当我尝试安装capistrano gem时,会发生以下情况:

gem install capistrano --verbose                                                      [2.5.0]
Getting SRV record failed: DNS result has no information for _rubygems._tcp.gems.rubyforge.org
HEAD http://gems.rubyforge.org/api/v1/dependencies
301 Moved Permanently
HEAD https://rubygems.org
200 OK
Getting SRV record failed: DNS result has no information for _rubygems._tcp.gems.github.com
HEAD http://gems.github.com/api/v1/dependencies
301 Moved Permanently
HEAD http://gems.github.io/api/v1/dependencies
404 Not Found
GET http://gems.github.com/prerelease_specs.4.8.gz
301 Moved Permanently
GET http://gems.github.io/prerelease_specs.4.8.gz
404 Not Found
GET http://gems.github.com/specs.4.8.gz
301 Moved Permanently
GET http://gems.github.io/specs.4.8.gz
404 Not Found
HEAD https://api.rubygems.org/api/v1/dependencies
200 OK
GET https://rubygems.org?gems=capistrano
200 OK
ERROR:  While executing gem ... (TypeError)
    incompatible marshal file format (can't be read)
    format version 4.8 required; 60.33 given

显然,它是在https://rubygems.org?gems=capistrano网址中找到的。但随后出现此编组文件错误。我不知道该如何调试。

在调试模式下,我获得以下信息:

NOTE:  Debugging mode prints all exceptions even when rescued
Exception `LoadError' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/resolv.rb:170 - LoadError
Exception `Resolv::DNS::Config::NXDomain' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/resolv.rb:546 - _rubygems._tcp.gems.rubyforge.org
Exception `Resolv::DNS::Config::NXDomain' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/resolv.rb:546 - _rubygems._tcp.gems.rubyforge.org.local
Exception `Resolv::ResolvError' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/resolv.rb:491 - DNS result has no information for _rubygems._tcp.gems.rubyforge.org
Exception `Resolv::ResolvError' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/resolv.rb:491 - DNS result has no information for _rubygems._tcp.gems.github.com
Exception `Gem::RemoteFetcher::FetchError' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/remote_fetcher.rb:274 - bad response Not Found 404 (http://gems.github.io/api/v1/dependencies)
Exception `Gem::RemoteFetcher::FetchError' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/remote_fetcher.rb:304 - bad response Not Found 404 (http://gems.github.io/api/v1/dependencies)
Exception `Errno::EEXIST' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/fileutils.rb:232 - File exists @ dir_s_mkdir - /Users/albert/.gem/specs/gems.github.com%80
Exception `Gem::RemoteFetcher::FetchError' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/remote_fetcher.rb:274 - bad response Not Found 404 (http://gems.github.io/prerelease_specs.4.8.gz)
Exception `Gem::RemoteFetcher::FetchError' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/remote_fetcher.rb:304 - bad response Not Found 404 (http://gems.github.io/prerelease_specs.4.8.gz)
Exception `Errno::EEXIST' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/fileutils.rb:232 - File exists @ dir_s_mkdir - /Users/albert/.gem/specs/gems.github.com%80
Exception `Gem::RemoteFetcher::FetchError' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/remote_fetcher.rb:274 - bad response Not Found 404 (http://gems.github.io/specs.4.8.gz)
Exception `Gem::RemoteFetcher::FetchError' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/remote_fetcher.rb:304 - bad response Not Found 404 (http://gems.github.io/specs.4.8.gz)
Exception `Gem::RemoteFetcher::FetchError' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/spec_fetcher.rb:269 - bad response Not Found 404 (http://gems.github.io/specs.4.8.gz)
Exception `TypeError' at /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/resolver/api_set.rb:118 - incompatible marshal file format (can't be read)
    format version 4.8 required; 60.33 given
ERROR:  While executing gem ... (TypeError)
    incompatible marshal file format (can't be read)
    format version 4.8 required; 60.33 given
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/resolver/api_set.rb:118:in `load'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/resolver/api_set.rb:118:in `versions'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/resolver/api_set.rb:55:in `find_all'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/resolver/composed_set.rb:55:in `block in find_all'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/resolver/composed_set.rb:54:in `map'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/resolver/composed_set.rb:54:in `find_all'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/resolver/best_set.rb:31:in `find_all'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/resolver/installer_set.rb:155:in `find_all'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/resolver/installer_set.rb:56:in `add_always_install'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/dependency_installer.rb:478:in `resolve_dependencies'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/commands/install_command.rb:194:in `install_gem'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/commands/install_command.rb:255:in `block in install_gems'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/commands/install_command.rb:251:in `each'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/commands/install_command.rb:251:in `install_gems'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/commands/install_command.rb:158:in `execute'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/command.rb:313:in `invoke_with_build_args'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/command_manager.rb:171:in `process_args'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/command_manager.rb:141:in `run'
    /Users/albert/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems/gem_runner.rb:59:in `run'
    /Users/albert/.rbenv/versions/2.5.0/bin/gem:21:in `<main>'

我的宝石来源是:

*** CURRENT SOURCES ***

http://gems.rubyforge.org/
http://gems.github.com
https://rubygems.org/

有人可以帮助我找到问题并安装Capistrano吗?

0 个答案:

没有答案