如何在Ubuntu中使用gems?


76

我最近升级到Ubuntu 9.04,使用gem时遇到问题。我使用apt-get安装了Ruby,Rubygems和Rails。该rails命令确实起作用。

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

sudo gem install XXX

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

bash: cap: command not found

与其他gem命令相同。

我有什么特别的事情可以执行gem命令吗?


这个问题在superuser.com中不是更合适吗?
Thiago Diniz 2010年

@ThiagoDiniz还是在askubuntu.com中
Eliran Malka

Answers:


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:”部分,则可以看到gems可以存储在笔记本电脑的两个位置:/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宝石也不会加载”突出显示了使用多个不同版本的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


如何编辑$ PATH,使其包含安装了gem的两个目录?谢谢
亚瑟

我做到了:sudo ln -s /var/lib/gems/1.8/gems/capistrano-2.5.5/bin/cap / usr / local / bin / cap ln:创建符号链接`/ usr / local / bin / cap ':文件存在,但不起作用!它仍然得到:bash:cap:找不到命令这是我的$ PATH:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr /游戏:/ opt / real / RealPlayer:/var/lib/gems/1.8:/home/arthur/.gem/ruby/1.8
亚瑟

现在可以了。我将路径更改为:/var/lib/gems/1.8/bin:/home/arthur/.gem/ruby/1.8/bin
亚瑟

有没有办法将EXECUTABLE_DIRECTORY更改为更标准的内容,例如/ usr / bin或/ usr / local / bin?在我的路径中添加/var/lib/gems/1.8/bin效果不佳,特别是因为其中包含版本号。
基夫

当我想在系统级别进行更改时,我必须在/etc/environment
dolzenko

5

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

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

3

存放宝石的文件夹必须在您的PATH上,例如我的是:

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

输入以下内容检查您的路径

echo $PATH

1
感谢您的答复这是〜/ .gem / ruby​​ / 1.8 / bin的内容:activerecord-2.3.2 activesupport-2.3.2 heroku-0.9.1 json-1.1.6 rails-2.3.2当我从以下位置安装capistrano时我的主文件夹〜,它不在该文件夹中。此外,heroku gem在正确的文件夹中,但heroku命令不起作用。这也是$ PATH命令返回的内容:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / games
亚瑟

您的rails gem是否有效?请在路径中添加文件夹〜/ .gem / ruby​​ / 1.8 / bin并尝试
victor hugo

我问了一个问题以知道如何编辑$ PATH: 在Linux上stackoverflow.com/questions/910088/how-can-i-edit-the-path- on Linux
Arthur

1

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

我遇到的解决方案是在我的$ PATH中添加“ /var/lib/gems/1.8/bin”:export PATH = $ PATH:/var/lib/gems/1.8/bin但这并没有保存...如何保存我的路径?

谢谢...

解决:关闭或导出PATH = $ PATH:/var/lib/gems/1.8/bin no〜/ .bashrc!=]


2
要保存路径,请查看我问的另一个问题:stackoverflow.com/questions/910088/…–
亚瑟

0

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

须藤apt-get install ruby​​1.9.1-dev

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.