ユーザ用ツール

サイト用ツール


rubygems

rubygems

http://rubygems.org/

/usr/bin/gem

ruby -d における挙動

ruby_inline における誤解と脱線の記録。

$ ruby -d inline_sample.rb
Exception `LoadError' at /usr/local/lib/site_ruby/1.8/rubygems.rb:1106 - no such file to load -- rubygems/defaults/operating_system
$ gem -v
1.3.3
$ which gem
/usr/bin/gem
$ which gem1.8
/usr/bin/gem1.8
$ gem1.8 -v
1.3.3

gems をバージョンアップしてみた。

$ sudo gem install rubygems-update-1.3.5.gem 
[sudo] password for nishi: 
Successfully installed rubygems-update-1.3.5
1 gem installed
Installing ri documentation for rubygems-update-1.3.5...

$ which update_rubygems
/usr/bin/update_rubygems
$ sudo update_rubygems
Installing RubyGems 1.3.5
RubyGems 1.3.5 installed
....
RubyGems installed the following executables:
	/usr/bin/gem1.8

$ gem1.8 -v
1.3.5
$ gem -v
1.3.5
$ ruby -d inline_sample.rb
Exception `LoadError' at /usr/local/lib/site_ruby/1.8/rubygems.rb:1113 - no such file to load -- rubygems/defaults/operating_system

ためしに touch してみる。

$ sudo mkdir /usr/local/lib/site_ruby/1.8/rubygems/defaults
$ sudo touch /usr/local/lib/site_ruby/1.8/rubygems/defaults/operating_system.rb

$ ruby -d inline_sample.rb
Exception `NoMethodError' at /usr/lib/ruby/1.8/rational.rb:78 - undefined method `gcd' for Rational(1, 2):Rational
Exception `LoadError' at /usr/local/lib/site_ruby/1.8/rubygems/config_file.rb:34 - no such file to load -- Win32API
Exception `LoadError' at /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31 - no such file to load -- inline
RubyInline v 3.8.2
Exception `LoadError' at /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31 - no such file to load -- inline/Inline_Test_dc80.so
Exception `LoadError' at /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:38 - no such file to load -- inline/Inline_Test_dc80.so
/home/nishi/.ruby_inline/Inline_Test_dc80.so is up to date
Exception `NoMethodError' at inline_sample.rb:32 - undefined method `plus_inline' for #<Test:0xb7cee804>
inline_sample.rb:32: undefined method `plus_inline' for #<Test:0xb7cee804> (NoMethodError)

test.rb で確認。

#!/usr/bin/ruby
require "rubygems"
$ ruby -d test.rb 
Exception `LoadError' at /usr/local/lib/site_ruby/1.8/rubygems.rb:1113 - no such file to load -- rubygems/defaults/operating_system
Exception `NoMethodError' at /usr/lib/ruby/1.8/rational.rb:78 - undefined method `gcd' for Rational(1, 2):Rational
Exception `LoadError' at /usr/local/lib/site_ruby/1.8/rubygems/config_file.rb:34 - no such file to load -- Win32API

そもそも -d はデバッグオプションなのだが、-d で上記のエラーを出すことは別に異常ではないらしい。

Ubuntu における /usr/bin/gem

/etc/alternatives によって gem1.8 を参照するように指定されている。

rubygems1.9 をインストールした場合にはこの仕組みで切り替えることになる?

以下、Ubuntu Linux 9.04 にて。

$ gem -v
1.3.1
$ ls -l /usr/bin/gem
lrwxrwxrwx 1 root root 21 2008-12-26 23:21 /usr/bin/gem -> /etc/alternatives/gem*
$ ls -l /etc/alternatives/gem
lrwxrwxrwx 1 root root 15 2009-04-30 16:44 /etc/alternatives/gem -> /usr/bin/gem1.8*
$ ls -l /usr/bin/gem1.8
-rwxr-xr-x 1 root root 785 2009-03-25 22:56 /usr/bin/gem1.8*

Ubuntu で rubygems1.8 パッケージを使わない gem1.8

Ubuntu 版の gem は /var/lib/gems/1.8 にパッケージを入れるが、 オリジナルの rubygems の挙動に従いたい。

ディストリビューションのアップグレードの影響を受けないようにしたい。

$ sudo apt-get remove rubygems1.8
$ tar xvfz rubygems-1.3.5
$ cd rubygems-1.3.5
$ sudo ruby setup.rb

/usr/bin/gem1.8 がインストールされる。

下記が対応していることが確認できる。

$ ls /usr/lib/ruby/gems/1.8/gems
$ gem1.8 list

/var/lib/gems/1.8 を消去しても問題がないはず。

rubygems.txt · 最終更新: 2012/04/03 21:09 by Takuya Nishimoto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki