我最近升级到Ubuntu 9.04,使用gem时遇到问题。我使用apt-get安装了Ruby,Rubygems和Rails。该rails
命令确实起作用。
然后,我安装了capistrano和其他宝石,例如heroku。为了做到这一点,我使用了以下命令:
sudo gem install XXX
当我想使用cap
命令不起作用时:
bash: cap: command not found
与其他gem命令相同。
我有什么特别的事情可以执行gem命令吗?
我最近升级到Ubuntu 9.04,使用gem时遇到问题。我使用apt-get安装了Ruby,Rubygems和Rails。该rails
命令确实起作用。
然后,我安装了capistrano和其他宝石,例如heroku。为了做到这一点,我使用了以下命令:
sudo gem install XXX
当我想使用cap
命令不起作用时:
bash: cap: command not found
与其他gem命令相同。
我有什么特别的事情可以执行gem命令吗?
Answers:
您可以使用以下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
在我的道路这让我跑cap
,merb
,rails
等。
如果由于某种原因您的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版本。快速mv
或ln
将解决问题。
如果确实需要使用多个Ruby版本,那么您确实应该使用rvm。
/etc/environment
存放宝石的文件夹必须在您的PATH上,例如我的是:
/home/victor/.gem/ruby/1.8/bin
输入以下内容检查您的路径
echo $PATH
可以看出,现在在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!=]