Ruby无法找到宝石....即使所有路径看起来都是正确的

时间:2011-10-24 23:02:14

标签: ruby rubygems ruby-1.9.2

安装Ubuntu 11.10,完全删除了Ruby1.8.7,然后从源代码安装了Ruby1.9.2-p290,接着是rubygems1.8.10。这是我运行安装的脚本......

#!/bin/bash
#===============================================================================
#
#          FILE:  install_ruby_1.9.sh
# 
#         USAGE:  ./install_ruby_1.9.sh 
# 
#        AUTHOR: Ryan Schulze (rs), ryan@dopefish.de
#       CREATED: 07/07/2011 11:59:37 AM CDT
#===============================================================================

Version="1.9.2-p290"
GZFile="ruby-${Version}.tar.gz"
Download="http://ftp.ruby-lang.org/pub/ruby/1.9/${GZFile}"

if [[ "$(id -u)" != "0" ]]
then
echo "You need root permission to execute this script"
exit
fi

apt-get -q update
apt-get -qy upgrade
apt-get install -qy build-essential wget zlib1g-dev libssl-dev libffi-dev autoconf

cd /usr/local/src/
test -e ${GZFile} || wget ${Download}
tar -xzf ${GZFile}
cd ruby-${Version}

autoconf
./configure --with-ruby-version=${Version} --prefix=/usr --program-suffix=${Version} 
make
make install

mkdir -p /usr/lib/ruby/gems/${Version}/bin

update-alternatives \
    --install /usr/bin/ruby ruby /usr/bin/ruby${Version} $(echo ${Version//./}|cut -d- -f1) \
    --slave   /usr/share/man/man1/ruby.1.gz ruby.1.gz /usr/share/man/man1/ruby${Version}.1 \
    --slave   /usr/lib/ruby/gems/bin        gem-bin   /usr/lib/ruby/gems/${Version}/bin \
    --slave   /usr/bin/irb  irb  /usr/bin/irb${Version} \
    --slave   /usr/bin/gem  gem  /usr/bin/gem${Version} \

    update-alternatives --config ruby
    update-alternatives --display gem >/dev/null 2>&1 && update-alternatives --remove-all gem

...

脚本运行完美,ruby工作正常....除了rubygems(也是从源代码安装):

$: irb
irb(main):001:0> require 'rubygems'
=> false

但是,它指向正确的版本:

$: which gem
/usr/bin/gem
$: file /usr/bin/gem
/usr/bin/gem: symbolic link to `/etc/alternatives/gem'
$: file /etc/alternatives/gem
/etc/alternatives/gem: symbolic link to `/usr/bin/gem1.9.2-p290'

此外,这里是宝石环境:

$: gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.10
  - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.9.2-p290/bin/
  - RUBY EXECUTABLE: /usr/bin/ruby1.9.2-p290
  - EXECUTABLE DIRECTORY: /usr/lib/ruby/gems/1.9.2-p290/bin/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.9.2-p290/bin/
     - /home/rbanerjee/.gem/ruby/1.9.2-p290
     - /usr/lib/ruby/gems/1.9.2-p290
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

我对发生的事情感到茫然。当在另一台机器中,我从1.8.7升级到1.9.1时,类似的升级也有效。我试过提供所有细节,这是一个很长的问题。任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:1)

在Ruby 1.9中,require 'rubygems'总是返回false。 Rubygems包包含在1.9中,因此您无需单独使用它。

您是否看到超出错误返回值的问题? (即你的宝石实际上没有工作吗?)