你能帮我理解一下我的 ruby 文件夹结构吗?我不明白为什么我的 gem 到处都是,为什么它们不是可识别的命令。
我首先解释一下我的安装是什么样的:
/usr/bin/ruby
/usr/bin/ruby1.8
/usr/bin/ruby1.9.1
第一个是到 ruby1.9.1 的软链接,因为终端中的“ruby”命令不起作用。我对“gem”做了同样的事情。我通过下载、提取然后运行 setup.rb 安装了 rubygems:(我创建了“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 环境”,这更没有意义,因为我已经像第一段中告诉你的那样安装了 rubygems-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”无法识别,而命令提示符建议这样做。我可能也对 rubygems 这样做了...我是 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 安装软件包。