2007/11/01

Mac OS X 10.5 RubyGems

■ OS X 10.5 の Ruby
% which ruby
/usr/bin/ruby

% ls -l /usr/bin/ruby
lrwxr-xr-x 1 root wheel 76 10 28 19:17 /usr/bin/ruby -> ../../System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby

% ruby -v
ruby 1.8.6 (2007-06-07 patchlevel 36) [universal-darwin9.0]

% ruby -e '$LOAD_PATH.each{|x| p x}'
"/Library/Ruby/Site/1.8"
"/Library/Ruby/Site/1.8/powerpc-darwin9.0"
"/Library/Ruby/Site/1.8/universal-darwin9.0"
"/Library/Ruby/Site"
"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8"
"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/powerpc-darwin9.0"
"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0"
"."


% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby
total 16
drwxr-xr-x 139 root wheel 4726 10 28 19:15 1.8
drwxr-xr-x 3 root wheel 102 9 24 14:55 gems
lrwxr-xr-x 1 root wheel 47 10 28 19:15 site_ruby -> ../../../../../../../../../../Library/Ruby/Site
lrwxr-xr-x 1 root wheel 47 10 28 19:15 user-gems -> ../../../../../../../../../../Library/Ruby/Gems

■ OS X 10.5 の RubyGems
# 正しくインストールされている?

% gem help

RubyGems is a sophisticated package manager for Ruby.  This is a
basic help message containing pointers to more information.
以下略

# ちゃんと表示した。

# バージョン
% gem -v
0.9.4

% gem environment
RubyGems Environment:
  - VERSION: 0.9.4 (0.9.4)
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8
  - GEM PATH:
     - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
     - /Library/Ruby/Gems/1.8
  - REMOTE SOURCES:
     - http://gems.rubyforge.org
# gem メインディレクトリ
% gem environment gemdir
/Library/Ruby/Gems/1.8

# ここで疑問。gemdir が示すパスは、/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/ かと思いきや、ユーザ用のディレクトリパスが表示された。これは正しいことなんだろうか?

■ gem コマンドの練習
# web 上で参考になるところ
http://jp.rubyist.net/magazine/?0010-PackageManagement
http://rubygems.org/

# 「プログラミング Ruby 」を読みながら...
# インストールされているパッケージ一覧

% gem list -l

*** LOCAL GEMS ***

actionmailer (1.3.3)
    Service layer for easy email delivery and testing.

actionpack (1.13.3)
    Web-flow and rendering framework putting the VC in MVC.

actionwebservice (1.2.3)
    Web service support for Action Pack.

以下略


# インストール済のパッケージから sqlite で検索。

% gem query -ln sqlite

*** LOCAL GEMS ***

sqlite3-ruby (1.2.1)
    SQLite3/Ruby is a module to allow Ruby scripts to interface with a
    SQLite3 database.


# リモートサーバを対象に blue で検索(query).
% gem query -rn blue

# リモートサーバから BlueCloth をダウンロードしてインストール(install)
% sudo gem install -r BlueCloth
# バージョンを指定しなければ自動的に最新版バージョンが選択されるそうだ。「プログラミング Ruby 」には -r がついていたけど、 -r はつけなくてもよいのかもしれない?これ不明。

# OS X の場合、もしも結果が can't find header files for ruby だったら
http://trac.macosforge.org/projects/ruby/wiki/Troubleshooting#IcannotbuildrubymysqlonLeopardwithmysql.combinaries

によると、 「Optional Installs / Xcode Tools directory on the Leopard DVD」
だそうだ。このページは
「I cannot build ruby-mysql on Leopard with mysql.com binaries」
な、時に助かりそう。

# layout
# gems/1.8/
% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/
total 8
drwxr-xr-x 32 root wheel 1088 10 28 19:15 cache
drwxr-xr-x 32 root wheel 1088 10 28 19:15 doc
drwxr-xr-x 32 root wheel 1088 10 28 19:15 gems
-rw-r--r-- 1 root wheel 4 9 24 10:51 source_cache
drwxr-xr-x 32 root wheel 1088 10 28 19:15 specifications

# gems/1.8/cache/
% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/cache/
total 7872
-rw-r--r-- 1 root wheel 41984 9 24 14:30 RedCloth-3.0.4.gem
-rw-r--r-- 1 root wheel 84480 9 24 14:28 actionmailer-1.3.3.gem
-rw-r--r-- 1 root wheel 607232 9 24 14:28 actionpack-1.13.3.gem
以下略

# gems/1.8/gems/ # %gem list -l で表示される全てのパッケージと一致。
% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/
total 0
drwxr-xr-x 4 root wheel 136 9 24 14:30 RedCloth-3.0.4
drwxr-xr-x 3 root wheel 102 9 24 14:30 actionmailer-1.3.3
drwxr-xr-x 3 root wheel 102 9 24 14:30 actionpack-1.13.3
以下略

# gems/1.8/specifications/
% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/specifications/
total 392
-rw-r--r-- 1 root wheel 1966 9 24 14:30 RedCloth-3.0.4.gemspec
-rw-r--r-- 1 root wheel 4077 9 24 14:28 actionmailer-1.3.3.gemspec
-rw-r--r-- 1 root wheel 14837 9 24 14:28 actionpack-1.13.3.gemspec
以下略

# gems/1.8/gems/RedCloth-3.0.4/
% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/RedCloth-3.0.4/
total 0
drwxr-xr-x 3 root wheel 102 9 24 14:30 bin
drwxr-xr-x 3 root wheel 102 9 24 14:30 lib

# gems/1.8/gems/RedCloth-3.0.4/bin/
% ls -l /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/RedCloth-3.0.4/bin/
total 8
-rw-r--r-- 1 root wheel 76 9 24 14:30 redcloth

# RedCloth-3.0.4 ちゃんと動くか試す

require 'rubygems'
require 'redcloth'
r = RedCloth.new( "h1. A <b>bold</b> man", [:filter_html] )
p r.to_html
exit
# =>
"<h1>A <b>bold</b> man</h1>"

# 動いた

■ 次、ユーザ用に用意されているディレクトリ
% cd /Library/Ruby/
% ls -l Gems/1.8/
total 8
drwxrwxr-x 2 root admin 68 9 24 10:51 cache
drwxrwxr-x 2 root admin 68 9 24 10:51 doc
drwxrwxr-x 2 root admin 68 9 24 10:51 gems
-rw-rw-r-- 1 root admin 4 9 24 10:51 source_cache
drwxrwxr-x 2 root admin 68 9 24 10:51 specifications

# 自分でまだ何もインストールしてないから下記ディレクトリの中身は全部空っぽ。
/Library/Ruby/Gems/1.8/cache/
/Library/Ruby/Gems/1.8/doc/
/Library/Ruby/Gems/1.8/gems/
/Library/Ruby/Gems/1.8/specifications/

memo
OS X 10.5 での Ruby 標準ライブラリのディレクトリパス
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8

OS X 10.5 での gem パッケージがおかれているディレクトリパス
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems

OS X 10.5 での ユーザがインストールしたパッケージが配置されるディレクトリパス
/Library/Ruby/Gems/1.8/gems

■ gem update
なーんも考えないで
% sudo gem update --system
gem そのもののアップデートした...

% gem list -l
空っぽになったよ。しかも gem のバージョンは変化なし。失敗した。ちなみに私がこれを実行したのは 2007-10-28 デス

% gem environment
RubyGems Environment:
  - VERSION: 0.9.4 (0.9.4)
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/
  - GEM PATH:
     - /Library/Ruby/Gems/
  - REMOTE SOURCES:
     - http://gems.rubyforge.org

GEM PATH から、/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8 が消えてる。
なので、さっきまで読み込んでたパッケージを読み込んでない。RedCloth などはロードされなくなった。

pre-install されていたもの (/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8)
とは別のユーザ用ディレクトリに(/Library/Ruby/Gems) 新規インストールされてましたん。そういうものなのかな?。
そか、これが気にいらない人は自分でロードするパスをかえれってことなのかな。

memo
OS X 10.5 では gem そのものをアップデートすると
/Library/Ruby/Gems/
に最新版 gem が新規にインストールされる。と。
これを意図する人にとっては好都合なのでしょう。

# 上記の内容に関わらず、全体を通して私がなにか大きな勘違いや間違いをしているのに気づいた方がいらっしゃいましたら,ご指摘していただければ幸いです。
midorex at gmail.com

--imported_from
http://www.midore.net/daybook/2007/11/1193924661.html

0 件のコメント: