如何修复 'An error occurred while installing rake (10.5.0), and Bundler cannot continue.' 错误

How to fix 'An error occurred while installing rake (10.5.0), and Bundler cannot continue.' error

这发生在虚拟盒子 运行ning ubuntu 14.04 中。 (主机是 ubuntu 18.04)我正在尝试获取 rails 3.2.22.5 运行 ruby 2.2.5。到目前为止,我已经尝试使用 rbenv、rvm 和源代码安装 ruby,所有这些都在单独的 virtualbox vm 上,都以同样的错误结束...

I 运行 bundle install 这给了我这个错误,

Fetching gem metadata from http://rubygems.org/.............
Fetching rake 10.5.0
Bundler::GemspecError: Could not read gem at /home/vagrant/rg/vendor/bundle/ruby/2.2.0/cache/rake-10.5.0.gem. It may >be corrupted.
An error occurred while installing rake (10.5.0), and Bundler cannot >continue.
Make sure that `gem install rake -v '10.5.0' --source 'http://rubygems.org/'` succeeds before bundling.

In Gemfile:
  auto_tagger was resolved to 0.2.10, which depends on
    capistrano was resolved to 3.4.1, which depends on
     rake

好的,那应该很容易解决,对吧? 我运行gem install rake -v '10.5.0' --source 'http://rubygems.org/'

Successfully installed rake-10.5.0
Parsing documentation for rake-10.5.0
Done installing documentation for rake after 0 seconds
1 gem installed

我可以用 rake --version

查看

rake, version 10.5.0

是的,我清除了缓存文件,结果是:

Fetching gem metadata from http://rubygems.org/.............
Fetching rake 10.5.0
Retrying download gem from http://rubygems.org/ due to error (2/4): Errno::ENOLCK No locks available @ rb_file_flock - /home/vagrant/rg/vendor/bundle/ruby/2.2.0/cache/rake-10.5.0.gemBundler::GemspecError: Could not read gem at /home/vagrant/rg/vendor/bundle/ruby/2.2.0/cache/rake-10.5.0.gem. It may be corrupted.
An error occurred while installing rake (10.5.0), and Bundler cannot continue.
Make sure that `gem install rake -v '10.5.0' --source 'http://rubygems.org/'` succeeds before bundling.

这是所有内容的版本

Ruby version: 2.2.5
Bundler version: 1.17.3
RubyGems version: 2.4.5.1
Rake version: 10.5.0

请注意,这是在一台新机器上。我从我的旧机器上打包了 vagrant box 并转移到新机器上,然后转到 运行 bundle exec rails s 并意识到 rails 没有安装,即使我所有的文件夹和文件都安装了......所以我进入了这个兔子洞,试图获得环境设置,从而在 3 个单独的虚拟机上尝试 rbenv、rvm 和源代码。

在过去的 3 天里,我已经尝试了所有我能在网上找到的东西,并且花了 15 个多小时才得到这个 运行ning。不用说,我们将不胜感激任何帮助。我开始希望我从来没有买过这台漂亮闪亮的新笔记本电脑....

您的最后一个清单

Retrying download gem from http://rubygems.org/ due to error (2/4): Errno::ENOLCK No locks available

这表明您正在使用不提供锁定的文件系统。您需要锁定以防止系统中的两个进程同时访问同一个文件。

请尝试运行这个:

touch foo
flock foo echo test1 & flock foo test2
rm foo

如果成功 - 对你来说很好,我们可以尝试在其他地方找到问题。但是,如果失败了,你唯一的(可能......)解决方案是让你的文件系统成为一个文件锁定机制(它可能与流浪汉有关,我对此没有太多经验,但可能有问题它是如何安装的)。

最后的问题是锁定导致的,使用 nfs 挂载。

如果您在使用 vagrant 时遇到此问题,请查看此答案 from another thread.

它为我修复了锁定错误。