2011-10-24 27 views
1

安裝了Ubuntu 11.10,完全刪除了Ruby1.8.7,然後從源代碼安裝了Ruby1.9.2-p290,接着安裝了rubygems1.8.10。下面是我跑的安裝腳本...Ruby找不到寶石....即使所有路徑似乎都是正確的

#!/bin/bash 
#=============================================================================== 
# 
#   FILE: install_ruby_1.9.sh 
# 
#   USAGE: ./install_ruby_1.9.sh 
# 
#  AUTHOR: Ryan Schulze (rs), [email protected] 
#  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 

...

腳本完美運行,而紅寶石工作得很好....除了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時,類似的升級也起作用。我試圖提供所有的細節,這是一個長期的問題。任何幫助都將不勝感激。

+0

「哪個irb」指向/ usr/bin/irb? –

+0

儘管由於Dylan的回答下面的問題已經解決了一段時間,但感謝您指出這一點。是的,'哪個irb'確實返回'/ usr/bin/irb' –

回答

1

在Ruby 1.9中,require 'rubygems'總是返回false。 Rubygems包包含在1.9中,所以你不需要單獨要求它。

您是否看到超出假回報值的問題? (即你的寶石沒有實際工作嗎?)

+0

謝謝你的回覆。這是Ruby1.9.x的情況,還是僅僅1.9.2及更高版本(未來)?我之前有1.9.1,經常用irb測試所有的寶石,而且我的第一行總是「需要rubygems」,這完全是出於習慣。無論如何,在閱讀你的回覆後,我跑去要求我所有的寶石,他們似乎工作得很好!謝謝你:-) 呃......現在我花了半天的時間,對此感到很蠢! –

+0

我沒有安裝1.9.1,所以我不能肯定地說。但是,「假」返回值不一定會造成任何問題。你仍然可以使用'require'my_gem''語句來跟蹤它,它應該可以正常工作。 –

相關問題