错误:“找不到耙子”,但安装了Rake

为什么我收到此Rake错误:

$ rake --version /Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find rake (>= 0) amongst [] (Gem::LoadError) from /Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec' from /Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems.rb:1231:in `gem' from /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/bin/rake:18:in `' from /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `eval' from /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:14:in `' 

鉴于以下情况:

 $ gem list *** LOCAL GEMS *** bundler (1.1.3) rake (0.9.2.2) rubygems-bundler (1.0.2) rvm (1.11.3.3) $ which rake /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/bin/rake 

具体来说:这个错误消息源于一个错误 ,还是一个配置问题 (如果是后者,那么哪些步骤可以解决它)?


更新:按要求提供额外的终端输出:

 $ which gem /Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194/bin/gem $ whereis rake /usr/bin/rake $ echo $PATH # I've edited the output as one item per line for easier reading /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/bin: /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194@global/bin: /Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194/bin: /Volumes/Data/sampablokuper/.rvm/bin: /opt/local/bin: /opt/local/sbin: /usr/bin: /bin: /usr/sbin: /sbin: /usr/local/bin: /usr/texbin: /usr/X11/bin: /usr/local/git/bin: /Library/Application Support/VMware Fusion: /Volumes/Data/sampablokuper/bin: /Volumes/Data/sampablokuper/.rvm/bin $ type rvm | head -n1 rvm is a function $ rvm info ruby-1.9.3-p194: system: uname: "Darwin spksmb.lan 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386" bash: "/bin/bash => GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)" zsh: "/bin/zsh => zsh 4.3.9 (i386-apple-darwin10.0)" rvm: version: "rvm 1.14.3 (stable) by Wayne E. Seguin , Michal Papis  [https://rvm.io/]" updated: "9 hours 36 minutes 53 seconds ago" ruby: interpreter: "ruby" version: "1.9.3p194" date: "2012-04-20" platform: "x86_64-darwin10.8.0" patchlevel: "2012-04-20 revision 35410" full_version: "ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin10.8.0]" homes: gem: "/Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194" ruby: "/Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194" binaries: ruby: "/Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194/bin/ruby" irb: "/Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194/bin/irb" gem: "/Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194/bin/gem" rake: "/Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/bin/rake" environment: PATH: "/Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/bin:/Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194@global/bin:/Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194/bin:/Volumes/Data/sampablokuper/.rvm/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/usr/X11/bin:/usr/local/git/bin:/Library/Application Support/VMware Fusion:/Volumes/Data/sampablokuper/bin" GEM_HOME: "/Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194" GEM_PATH: "/Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194:/Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194@global" MY_RUBY_HOME: "/Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194" IRBRC: "/Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194/.irbrc" RUBYOPT: "" gemset: "" 

‘whereis’二进制文件检查由user.cs_path变量设置的一组系统缺省路径(请参阅sysctl -a | grep user.cs_path ),而不是实际的$ PATH变量。 因此报告的’rake’位置将始终是在该组路径中发生的任何事情,而不是实际使用的路径,除非确实恰好是系统上安装的唯一 rake,因此不会出现在$ PATH中。

请跑

 which rake 

看看实际使用的是哪个耙子。 如果它报告/ usr / bin / rake而不是某些路径,例如/Users/me/.rvm/gems/ruby-1.9.3-p194@global/bin/rake那么肯定有问题。

请包括

 rvm info 

输出并确保

 type rvm | head -n1 

报告“rvm是一个函数”。 如果它报告的不是其他任何内容,那么您的安装会搞砸,在这种情况下,您应该使用rvm implode删除rvm安装,完全注销,然后完全重新安装RVM。 是的,注销步骤很重要。

由于我在执行问题中显示的命令的目录中存在一个名为Gemfile的文件, Gemfile包含以下内容,因此看起来问题正在发生:

 source 'https://rubygems.org' gemspec 

删除或重命名该文件会产生以下结果(是的!):

 $ rake --version rake, version 0.9.2.2 

相比之下,保留Gemfile,但从目录中删除或重命名myproject.gemspec文件会产生以下结果:

 $ rake --version /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.4/lib/bundler/dsl.rb:48:in `gemspec': There are no gemspecs at /Volumes/Data/spikes/myproject. (Bundler::InvalidOption) from /Volumes/Data/spikes/myproject/Gemfile:4:in `evaluate' from /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.4/lib/bundler/dsl.rb:7:in `instance_eval' from /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.4/lib/bundler/dsl.rb:7:in `evaluate' from /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.4/lib/bundler/definition.rb:18:in `build' from /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.4/lib/bundler.rb:135:in `definition' from /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/gems/bundler-1.1.4/lib/bundler.rb:123:in `load' from /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194@global/gems/rubygems-bundler-1.0.3/lib/rubygems-bundler/noexec.rb:41:in `candidate?' from /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194@global/gems/rubygems-bundler-1.0.3/lib/rubygems-bundler/noexec.rb:60:in `setup' from /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194@global/gems/rubygems-bundler-1.0.3/lib/rubygems-bundler/noexec.rb:75:in `' from /Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require' from /Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require' from /Volumes/Data/sampablokuper/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require' from /Volumes/Data/sampablokuper/.rvm/gems/ruby-1.9.3-p194/bin/ruby_noexec_wrapper:9:in `
'

rake --version的行为受到这些文件的存在/不存在/内容的强烈影响这一事实确实让我感到错误,我将相应地提交错误报告。