我如何在 Ubuntu 中使用 gems? [英] How do I use gems with Ubuntu?

查看:36
本文介绍了我如何在 Ubuntu 中使用 gems?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

然后我安装了 capistrano 和其他 gems,比如 heroku.为了做到这一点,我使用了以下命令:

sudo gem install XXX

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

bash: cap: command not found

其他 gem 命令也一样.

我有什么特别的事情要做才能让 gem 命令起作用吗?

解决方案

我的 Gems 在哪里?

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

chris@chris-laptop:~$ gem 环境RubyGems 环境:- 红宝石版本:1.3.2- 红宝石版本:1.8.7 (2008-08-11 patchlevel 72) [i486-linux]- 安装目录:/usr/lib/ruby/gems/1.8- 红宝石可执行文件:/usr/bin/ruby1.8- 可执行目录:/usr/bin- 红宝石平台:- 红宝石- x86-linux- 宝石路径:-/usr/lib/ruby/gems/1.8-/home/chris/.gem/ruby/1.8- 宝石配置:- :update_sources =>真的- :详细=>真的- :基准=>错误的- :backtrace =>错误的- :bulk_threshold =>1000- 远程资源:

如果您查看GEM PATHS:"部分,您会发现 gems 可以存储在我笔记本电脑上的两个位置:/usr/lib/ruby/gems/1.8/usr/lib/ruby/gems/1.8code>.gem 目录在我的家目录中.

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

因为 /usr/bin 在我的路径中,所以我可以运行 capmerbrails 等.

更新你的路径

如果由于某种原因您的可执行目录不在您的路径上(例如,如果它是/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/gameschris@chris-laptop:~$chris@chris-laptop:~$ export PATH=$PATH:/var/lib/gems/1.8/binchris@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/binchris@chris-laptop:~$

我的 Gem 无法加载!

"即使安装了 Ruby gems 也不会加载" 突出显示使用多个不同版本的 Ruby 的常见问题;有时 Gem 环境和 Gem 路径不同步:

rb(main):003:0>宝石路径=>[/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]irb(main):004:0>出口

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

:~/$ gem envRubyGems 环境:- 红宝石版本:1.3.7- 红宝石版本:1.9.1 (2009-05-12 patchlevel 129) [x86_64-linux]- 安装目录:/opt/ruby1.9/lib/ruby/gems/1.9.1- 红宝石可执行文件:/opt/ruby1.9/bin/ruby1.9- 可执行目录:/opt/ruby1.9/bin- 红宝石平台:- 红宝石- x86_64-linux- 宝石路径:-/opt/ruby1.9/lib/ruby/gems/1.9.1-/home/mark/.gem/ruby/1.9.1- 宝石配置:- :update_sources =>真的- :详细=>真的- :基准=>错误的- :backtrace =>错误的- :bulk_threshold =>1000- 远程资源:- http://rubygems.org/

仔细看gem环境的输出:

 - GEM 路径:-/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.>

I recently upgraded to Ubuntu 9.04 and I have issues using gems. I installed Ruby, Rubygems and Rails using apt-get. The rails command does work.

I then installed capistrano and other gems, such as heroku. In order to do that, I used the command:

sudo gem install XXX

When I want to use the cap command it does not work:

bash: cap: command not found

It is the same with the other gem commands.

Do I have something particular to do so that the gem commands work?

解决方案

Where are my Gems?

You can find where your gems are stored using the gem environment command. For example:

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:

If you look at the "GEM PATHS:" section you can see that gems can be stored in two places on my laptop: /usr/lib/ruby/gems/1.8 or in the .gem directory in my home dir.

You can also see that executables are stored in EXECUTABLE DIRECTORY which in this case is /usr/bin.

Because /usr/bin is in my path this lets me run cap, merb, rails etc.

Updating your PATH

If for some reason your EXECUTABLE DIRECTORY isn't on your path (for example if it is /var/lib/gems/1.8/bin) then you need to update your PATH variable.

Assuming that you are using the bash shell. You can do this quickly for the current session by typing the following at the shell prompt; let's pretend that you want to add /var/lib/gems/1.8/bin to the path:

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

and press return. That appends the new directory to the end of the current path. Note the colon between $PATH and /var/lib/gems/1.8/bin

To set the value for all sessions you will need to edit either your .profile or .bashrc file and add the same line to the end of the file. I usually edit my .bashrc file for no reason other than that's what I've always done. When finished, save the file and then refresh your environment by typing:

bash

at the shell prompt. That will cause the .bashrc to get reread.

At any point you can check the current value of $PATH by typing

echo $PATH

at the shell prompt.

Here's a sample from one of my own servers, where my username is "chris" and the machine name is "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:~$ 

My Gem won't load!

"Ruby gems won't load even though installed" highlights a common problem using multiple different versions of Ruby; Sometimes the Gem environment and Gem path get out of sync:

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

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

Any Ruby process here is looking only in one place for its 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/

Look carefully at the output of gem environment:

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

This isn't the same path as returned by Gem.path:

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

It's hard to say what exactly caused lib/ruby to change to lib/ruby1.9 but most likely the developer was working with multiple Ruby versions. A quick mv or ln will solve the problem.

If you do need to work with multiple Ruby versions then you really should be using rvm.

这篇关于我如何在 Ubuntu 中使用 gems?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆