如何在Ubuntu中使用宝石?

时间:2009-05-26 08:55:23

标签: ruby-on-rails ruby ubuntu rubygems capistrano

我最近升级到Ubuntu 9.04,我有使用宝石的问题。 我使用apt-get安装了Ruby,Rubygems和Rails。 rails命令可以正常工作。

然后我安装了capistrano和其他宝石,例如heroku。 为了做到这一点,我使用了命令:

sudo gem install XXX

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

bash: cap: command not found

与其他gem命令相同。

我有特别的事情要做,以便gem命令有效吗?

5 个答案:

答案 0 :(得分:138)

我的宝石在哪里?

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

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:”部分,您可以看到我的笔记本电脑上的两个地方可以存储宝石:/usr/lib/ruby/gems/1.8或我家庭目录的.gem目录。

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

由于/usr/bin位于我的路径中,因此我可以运行capmerbrails等。

更新您的路径

如果由于某种原因你的EXECUTABLE DIRECTORY不在您的路径上(例如,如果它是/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的常见问题;有时宝石环境和宝石路径不同步:

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

答案 1 :(得分:5)

如@Chris所述,您需要将gems环境添加到路径中。您可以通过以下方式执行此操作:

echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc

答案 2 :(得分:3)

宝石存储的文件夹必须位于PATH上,例如我的:

  

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

输入

检查您的路径
echo $PATH

答案 3 :(得分:1)

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

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

...谢谢

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

答案 4 :(得分:0)

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

sudo apt-get install ruby​​1.9.1-dev