77

我最近升级到 Ubuntu 9.04,但我在使用 gems 时遇到了问题。我使用 apt-get 安装了 Ruby、Rubygems 和 Rails。该rails命令确实有效。

然后我安装了 capistrano 和其他 gem,比如 heroku。为此,我使用了以下命令:

sudo gem install XXX

当我想使用该cap命令时它不起作用:

bash: cap: command not found

其他 gem 命令也是如此。

我有什么特别的事情要做以使 gem 命令起作用吗?

4

5 回答 5

139

我的宝石在哪里?

gem environment您可以使用该命令找到您的 gem 的存储位置。例如:

chris@chris-laptop:~$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.2

  - RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby1.8
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
     - /home/chris/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:

如果您查看“GEM PATHS:”部分,您会看到 gem 可以存储在我笔记本电脑上的两个位置:/usr/lib/ruby/gems/1.8或者在.gem我的主目录中的目录中。

您还可以看到可执行文件存储在 EXECUTABLE DIRECTORY 中,在本例中为/usr/bin.

因为/usr/bin在我的路上,这让我可以跑步capmerb等等rails

更新你的路径

如果由于某种原因您的可执行目录不在您的路径上(例如,如果它是 /var/lib/gems/1.8/bin),那么您需要更新您的 PATH 变量。

假设您使用的是 bash shell。您可以通过在 shell 提示符下键入以下内容为当前会话快速执行此操作;假设您要添加/var/lib/gems/1.8/bin到路径中:

export PATH=$PATH:/var/lib/gems/1.8/bin

然后按回车。这会将新目录附加到当前路径的末尾。$PATH注意和之间的冒号/var/lib/gems/1.8/bin

要为所有会话设置值,您需要编辑您的.profile.bashrc文件并将同一行添加到文件末尾。我通常.bashrc无缘无故地编辑我的文件,这就是我一直在做的事情。完成后,保存文件,然后通过键入以下内容刷新您的环境:

bash

在 shell 提示符下。这将导致.bashrc被重读。

$PATH在任何时候,您都可以通过键入来检查当前值

echo $PATH

在 shell 提示符下。

这是我自己的一台服务器的示例,其中我的用户名是“chris”,机器名称是“chris-laptop”:

chris@chris-laptop:~$ 
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
chris@chris-laptop:~$ 
chris@chris-laptop:~$ export PATH=$PATH:/var/lib/gems/1.8/bin
chris@chris-laptop:~$ 
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
chris@chris-laptop:~$ 

我的宝石无法加载!

Ruby gems won't load even though installed ” 突出了使用多个不同版本的 Ruby 的常见问题;有时 Gem 环境和 Gem 路径会不同步:

rb(main):003:0> Gem.path

=> ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
irb(main):004:0> exit

这里的任何 Ruby 进程都只在一个地方寻找它的 Gems。

:~/$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.9.1 (2009-05-12 patchlevel 129) [x86_64-linux]
  - INSTALLATION DIRECTORY: /opt/ruby1.9/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: /opt/ruby1.9/bin/ruby1.9
  - EXECUTABLE DIRECTORY: /opt/ruby1.9/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /opt/ruby1.9/lib/ruby/gems/1.9.1
     - /home/mark/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

仔细看gem环境的输出:

  - GEM PATHS:
     - /opt/ruby1.9/lib/ruby/gems/1.9.1

这与 Gem.path 返回的路径不同:

["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]

很难说到底是什么导致lib/ruby了这种变化,lib/ruby1.9但很可能开发人员正在使用多个 Ruby 版本。一个快速mvln将解决问题。

如果您确实需要使用多个 Ruby 版本,那么您真的应该使用rvm

于 2009-05-26T10:23:38.997 回答
5

正如@Chris 所指出的,您需要将 gems 环境添加到您的路径中。您可以通过以下方式做到这一点:

echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc
于 2011-08-08T20:09:33.100 回答
3

存储gem 的文件夹必须在您的 PATH 上,例如我的文件夹是:

/home/victor/.gem/ruby/1.8/bin

通过键入检查您的路径

echo $PATH
于 2009-05-26T09:07:20.650 回答
1

它看到在安装 ruby​​gems 时,现在在 ubuntu 9.04 中,我遇到了这个问题。我注意到在“gem 环境”中,可执行目录是“/var/lib/gems/1.8/bin”,而不是“/usr/bin”...这是 ruby​​gems 或 ubuntu 9.04 的问题??

我遇到的解决方案是将“/var/lib/gems/1.8/bin”添加到我的 $PATH 这样做: export PATH=$PATH:/var/lib/gems/1.8/bin 但它没有被保存...我怎样才能保存我的路径?

谢谢...

解决:coloquei o export PATH=$PATH:/var/lib/gems/1.8/bin no ~/.bashrc!=]

于 2009-05-27T00:02:57.703 回答
0

mkmf 是 ruby​​1.9.1-dev 软件包的一部分。此包包含 Ruby 1.9.1 扩展库所需的头文件。您需要通过执行以下操作安装 ruby​​1.9.1-dev 软件包:

sudo apt-get install ruby​​1.9.1-dev

于 2013-04-02T11:36:20.517 回答