【问题标题】:Error: "Could not find rake", yet Rake is installed错误:“找不到 rake”,但 Rake 已安装
【发布时间】:2025-11-23 00:35:02
【问题描述】:

为什么我会收到此 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 `<main>'
    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 `<main>'

鉴于以下情况:

$ 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 <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [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:       ""

【问题讨论】:

  • 运行rvm get stable 没有帮助。
  • 运行 gem update 后跟 rvm gemset use global (即使“全局” gemset 是我唯一的一个也是必要的)然后 gem cleanup 也没有帮助。
  • 你也可以给which gem,这样我们就可以比较苹果和苹果了吗?

标签: ruby rubygems rake rvm


【解决方案1】:

'whereis' 二进制文件检查一组由 user.cs_path 变量设置的系统默认路径(参见 sysctl -a | grep user.cs_path),而不是实际的 $PATH 变量。因此,报告的“rake”位置将始终是该组路径中发生的任何内容,并且不是实际使用的位置,除非那确实恰好是 em>only rake 安装在系统上,因此不会出现在 $PATH 中。

请运行

which rake

查看实际使用的是哪个 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。是的,注销步骤很重要。

【讨论】:

  • 谢谢。我知道whichwhereis 之间的区别。 which rake 的输出包含在我最初的问题中,并且仍然存在于问题中。 whereis rake 的输出,我在回复@alterpub 的回复时添加了,虽然我个人看不出它会有什么帮助。很快就会提供您要求的其他信息。
  • 我现在已按要求将rvm infotype rvm | head -n1 的输出添加到问题中。再次感谢您对此进行调查。
【解决方案2】:

看起来问题正在发生,因为在我执行问题中所示命令的目录中存在一个名为 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 `<top (required)>'
    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 `<main>'

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

【讨论】: