我最近升级到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 命令生效吗?
我最近升级到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 命令生效吗?
您可以使用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:
/usr/lib/ruby/gems/1.8
或在我的主目录中的.gem
目录中。/usr/bin
。/usr/bin
在我的路径中,这使我能够运行cap
,merb
,rails
等。/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提示符下,输入source ~/.bashrc
命令可以重新读取.bashrc
文件。
您可以随时通过输入echo $PATH
来检查当前$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
:~/$ 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 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
上进行更改。 - Ev Dolzhenkobash
并不会刷新您的环境,它只是在当前终端中打开一个新的 shell。 (您甚至可以使用Ctrl-D返回到原始 shell。)新环境确实包括来自更新的.bashrc
文件的信息,但您真正需要的是通过源代码文件来更新当前 shell:$ . ~/.bashrc
。(您也可以使用source
命令,但.
更简短。) - mhartl正如@Chris所指出的,您需要将gems环境添加到您的路径中。您可以通过以下方式实现:
echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc
存储宝石的文件夹必须在您的PATH中,例如我的路径是:
/home/victor/.gem/ruby/1.8/bin
通过输入以下命令检查您的路径:
echo $PATH
在安装rubygems时,我遇到了问题,现在在ubuntu 9.04中。我注意到在“gem environment”中,可执行目录是“/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 但它没有被保存...我该如何保存我的路径?
谢谢...
我解决了:将export PATH=$PATH:/var/lib/gems/1.8/bin添加到~/.bashrc中!=]
mkmf是ruby1.9.1-dev软件包的一部分。该软件包包含扩展Ruby 1.9.1的库所需的头文件。您需要执行以下操作安装ruby1.9.1-dev软件包:
sudo apt-get install ruby1.9.1-dev