Ruby/gem 安装路径分散到各处,原因是什么?

Ruby/gem 安装路径分散到各处,原因是什么?

你能帮我理解一下我的 ruby​​ 文件夹结构吗?我不明白为什么我的 gem 到处都是,为什么它们不是可识别的命令。

我首先解释一下我的安装是什么样的:

/usr/bin/ruby
/usr/bin/ruby1.8
/usr/bin/ruby1.9.1

第一个是到 ruby​​1.9.1 的软链接,因为终端中的“ruby”命令不起作用。我对“gem”做了同样的事情。我通过下载、提取然后运行 ​​setup.rb 安装了 ruby​​gems:(我创建了“ruby”文件夹)

/home/pc/ruby/rubygems-1.7.2/setup.rb

/usr/bin/gem
/usr/bin/gem1.8
/usr/bin/gem1.9.1

我使用“sudo gem install”安装了一些 gem

> gem list

 *** LOCAL GEMS ***

 compass (0.10.6)
 haml (3.0.25)
 mustache (0.99.3)
 rake (0.8.7)

到目前为止一切顺利吗?其实并不完全如此,因为事实证明“指南针版本”命令似乎并不存在。我查看每个文件夹时,我的困惑都会增加。例如,以下路径对我来说毫无意义。为什么它会被隐藏?为什么 mustache 是这个文件夹中唯一的宝石?

/home/pc/.gem/ruby/1.9.1/cache/mustache-0.99.3.gem

首先,这里是“gem 环境”,这更没有意义,因为我已经像第一段中告诉你的那样安装了 ruby​​gems-1.7.2,但这里显示的是旧版本 1.3.7。为什么?我前天安装了 Ubuntu。

  RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [x86_64-linux]
  - INSTALLATION DIRECTORY: /var/lib/gems/1.9.1
  - RUBY EXECUTABLE: /usr/bin/ruby1.9.1
  - EXECUTABLE DIRECTORY: /var/lib/gems/1.9.1/bin
      - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /var/lib/gems/1.9.1
     - /home/pc/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

ruby --version 返回“ruby 1.8.7”...........另外,事实证明,所有 gem 都安装在这个文件夹中(mustache 也是!尽管它已经在另一个文件夹中),正如“ruby environment”所声称的那样:

/var/lib/gems/1.9.1/gems

但是这些 gem 都不起作用。除了 rake,我无法调用其中任何一个。所以这里可能是我犯了错误,我认为除了“gem install rake”之外,我还使用了“apt-get install rake”,因为命令“rake”无法识别,而命令提示符建议这样做。我可能也对 ruby​​gems 这样做了...我是 Linux 新手,我认为命令提示符知道如何正确安装这些东西。

我必须到处创建系统链接,这不正常吗?在 Windows 中我没有遇到这个问题。

答案1

我安装了 rvm,我仍然不知道为什么会出现这样的混乱,但现在我可以轻松地强制使用某个 ruby​​ 版本,并且我知道所有 gem 都安装在哪里。(安装到 rvm 目录中)对我有用。

答案2

我猜你的问题在于RubyGems手动安装而不是使用 apt-get。你可能也做了同样的事情ruby,或者你缺少一个包含你手动创建的符号链接的元包。

这也是为什么所有二进制文件所在的目录不在您的 $PATH 中的原因/var/lib/gems/1.9.1/bin。因此您无法找到这些 gem 的可执行文件。


当您从 Ruby 1.8 升级到 Ruby 1.9.3 时,使用 Ruby 1.8 安装的 gem 仍将位于 Ruby 1.8 文件夹中。您可能安装了不同版本的 RubyGems。


例如,以下路径对我来说毫无意义。为什么要隐藏它?为什么 mustache 是此文件夹中唯一的宝石?

/home/pc/.gem/ruby/1.9.1/cache/mustache-0.99.3.gem

你显然安装了 mustache (没有使用 sudo)

gem install mustache

这将为用户安装它,用户安装目录是$HOME/.gem/。该文件夹是隐藏的,因此您不会意外删除它。您可能必须将其添加到您的 $PATH(或使用 进行安装--no-user-install


解决方案:

不要只是手动下载并安装 RubyGems(和 ruby​​)。使用您的包管理器(aptitude

之后你可以决定是否要使用aptitude或安装 gems gem install通过 apt-get 或 gem 安装软件包

相关内容