bar_1

contents_map

2010年12月7日火曜日

Ruby/Cygwinでrdoc-dataのgemインストールがおかしいことの対処方法


WindowsXPマシン上のCygwin環境のRubyの mechanize を、gemインストールで1.0.0 に更新したのだけど、ドキュメント関係が何かオカシイ。調べていた途中で、rdoc, rdoc-dataがインストールされていないことも、判明した。

で、例によってトラブったのだが、ググッたところどうも解説法が見つからないようなので、原因について調査を進めていった。最終的には、解決(rdocとrdoc-dataをインストールし、使用できるようにすること)にいたった。

原因はくだらないが知らなければ誰もが引っかかると思うので、ここに記す。


環境は
$ uname -srvmpio
CYGWIN_NT-5.1 1.7.7(0.230/5/3) 2010-08-31 09:58 i686 unknown unknown Cygwin
$ ruby --version
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
$ gem --version
1.3.7
である。


■忙しい人のために
解決手順は、以下の通りである:
  1. gemインストール(rdoc)
    gem install rdoc
  2. gemインストール(rdoc-data)
    gem install rdoc-data
  3. rdoc-data修正
    s/local\///
  4. 修正済みrdoc-dataの実行
    cp rdoc-data /usr/bin; rdoc-data --install
  5. gemインストールの確認
  6. rdocドキュメントの確認


■1.gemインストール(rdoc)
$ gem install rdoc -y
INFO: `gem install -y` is now default and will be removed
INFO: use --ignore-dependencies to install only the gems you list
RDoc 2.5 did not save method parameters, so you should upgrade your rdoc-data
gem to a version >= 2.5.3.
To have ri data for core and stdlib you'll need to:
gem install rdoc-data
then run:
rdoc-data --install
To have ri data for you gems you'll also need to run:
gem rdoc --all --overwrite
If you don't want to rebuild the rdoc for `gem server`, add --no-rdoc.
Successfully installed rdoc-2.5.11
1 gem installed
Installing ri documentation for rdoc-2.5.11...
Installing RDoc documentation for rdoc-2.5.11...
rdocはインストールされたらようだ。
$ gem which rdoc
/cygdrive/d/home/gems/rdoc-2.5.11/lib/rdoc.rb

■2.gemインストール(rdoc-data)
$ gem install rdoc-data
To install ri data for RDoc 2.5+ run:
rdoc-data
Successfully installed rdoc-data-2.5.3
1 gem installed
Installing ri documentation for rdoc-data-2.5.3...
Installing RDoc documentation for rdoc-data-2.5.3...

■3.rdoc-data修正
インストールしても、なぜかコマンド:rdoc-data は、/usr/bin/配下にコピー
されない。このため、手動でコピーする:
$ cd ${GEM_HOME}/gems/rdoc-data-2.5.3/bin
$ cp -i rdoc-data /usr/bin/.
だがここで、rdoc-dataを実行すると:
bash: /usr/bin/rdoc-data: /usr/local/bin/ruby: bad interpreter: Permission denied
というエラーが発生する。
そこで rdoc-data の中身をみると、6行からなる単なるrubyスクリプトである:
#!/usr/local/bin/ruby -w
require 'rubygems'
require 'rdoc/data'
RDoc::Data.run
一行目のrubyのパスが間違っている。このため、rdoc-dataの一行目を以下のように、修正する
#!/usr/local/bin/ruby -w
->#!/usr/bin/ruby -w

■4.rdoc-dataの実行
rdocインストール時のログの続き(rdoc-data --install)を実行する:
$ rdoc-data --install
$ gem rdoc --all --overwrite
Installing ri documentation for appengine-apis-0.0.16...
Installing ri documentation for appengine-apis-0.0.18...
Installing ri documentation for appengine-rack-0.0.9...
Installing ri documentation for appengine-rack-0.0.11...
Installing ri documentation for appengine-sdk-1.3.4...
Installing ri documentation for appengine-sdk-1.3.5...
Installing ri documentation for appengine-tools-0.0.13...
Installing ri documentation for appengine-tools-0.0.15...
Installing ri documentation for bundler08-0.8.5...
Installing ri documentation for google-appengine-0.0.13...
Installing ri documentation for google-appengine-0.0.15...
Installing ri documentation for jruby-jars-1.4.1...
Installing ri documentation for jruby-jars-1.5.1...
Installing ri documentation for jruby-rack-1.0.1...
Installing ri documentation for mechanize-1.0.0...
Installing ri documentation for nokogiri-1.4.4...
Installing ri documentation for rack-1.1.0...
Installing ri documentation for rdoc-2.5.11...
Installing ri documentation for rdoc-data-2.5.3...
Installing ri documentation for rubygems-update-1.3.7...
Installing ri documentation for rubyzip-0.9.4...
Installing RDoc documentation for appengine-apis-0.0.16...
Installing RDoc documentation for appengine-apis-0.0.18...
Installing RDoc documentation for appengine-rack-0.0.9...
Installing RDoc documentation for appengine-rack-0.0.11...
Installing RDoc documentation for appengine-sdk-1.3.4...
Installing RDoc documentation for appengine-sdk-1.3.5...
Installing RDoc documentation for appengine-tools-0.0.13...
Installing RDoc documentation for appengine-tools-0.0.15...
Installing RDoc documentation for bundler08-0.8.5...
Installing RDoc documentation for google-appengine-0.0.13...
Installing RDoc documentation for google-appengine-0.0.15...
Installing RDoc documentation for jruby-jars-1.4.1...
Installing RDoc documentation for jruby-jars-1.5.1...
Installing RDoc documentation for jruby-rack-1.0.1...
Installing RDoc documentation for mechanize-1.0.0...
Installing RDoc documentation for rack-1.1.0...
Installing RDoc documentation for rdoc-2.5.11...
Installing RDoc documentation for rdoc-data-2.5.3...
Installing RDoc documentation for rubygems-update-1.3.7...
Installing RDoc documentation for rubyzip-0.9.4...

■5.gemインストールの確認
$ gem which rdoc
/cygdrive/d/home/gems/rdoc-2.5.11/lib/rdoc.rb
$ gem which rdoc-data
ERROR: Can't find ruby library file or shared library rdoc-data

$ gem list
*** LOCAL GEMS ***
appengine-apis (0.0.18, 0.0.16)
appengine-rack (0.0.11, 0.0.9)
appengine-sdk (1.3.5, 1.3.4)
appengine-tools (0.0.15, 0.0.13)
bundler08 (0.8.5)
google-appengine (0.0.15, 0.0.13)
jruby-jars (1.5.1, 1.4.1)
jruby-rack (1.0.1)
mechanize (1.0.0)
nokogiri (1.4.4)
rack (1.1.0)
rdoc (2.5.11)
rdoc-data (2.5.3)
rubygems-update (1.3.7)
rubyzip (0.9.4)
gem whichで、rdoc-dataが表示されないのは、データだからだろ・・・おそらく。
■6.rdocドキュメントの確認
rdocドキュメントは、GEMのホームディレクトリ/doc/ 配下に入っている
$ gem which mechanize
/cygdrive/d/home/cygwin/gems/mechanize-1.0.0/lib/mechanize.rb
$ gem which rack
/usr/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack.rb

である場合、rdocはそれぞれ
/cygdrive/d/home/cygwin/doc/mechanize-1.0.0/rdoc/
/usr/lib/ruby/gems/1.8/doc/rack-1.1.0/rdoc/
に格納される。
実際のファイルを確認してみよう。
$ ls -l /cygdrive/d/home/cygwin/doc/mechanize-1.0.0/rdoc/
total 348
-rw-r--r--+ 1 **** ???? 38689 2010-12-07 11:03 CHANGELOG_rdoc.html
-rw-r--r--+ 1 **** ???? 13592 2010-12-07 11:03 EXAMPLES_rdoc.html
-rw-r--r--+ 1 **** ???? 8523 2010-12-07 11:03 FAQ_rdoc.html
-rw-r--r--+ 1 **** ???? 14771 2010-12-07 11:03 GUIDE_rdoc.html
-rw-r--r--+ 1 **** ???? 27080 2010-12-07 11:03 LICENSE_rdoc.html
-rw-r--r--+ 1 **** ???? 15940 2010-12-07 11:03 Manifest_txt.html
drwxr-xr-x+ 1 **** ???? 0 2010-12-07 11:03 Mechanize/
-rw-r--r--+ 1 **** ???? 123205 2010-12-07 11:03 Mechanize.html
drwxr-xr-x+ 1 **** ???? 0 2010-12-07 11:03 Net/
-rw-r--r--+ 1 **** ???? 9274 2010-12-07 11:03 Net.html
-rw-r--r--+ 1 **** ???? 10455 2010-12-07 11:03 README_rdoc.html
-rw-r--r--+ 1 **** ???? 10620 2010-12-07 11:03 WWW.html
-rw-r--r--+ 1 **** ???? 3589 2010-12-07 11:03 created.rid
drwxr-xr-x+ 1 **** ???? 0 2010-12-07 11:03 images/
-rw-r--r--+ 1 **** ???? 38368 2010-12-07 11:03 index.html
drwxr-xr-x+ 1 **** ???? 0 2010-12-07 11:03 js/
drwxr-xr-x+ 1 **** ???? 0 2010-12-07 11:03 lib/
-rw-r--r--+ 1 **** ???? 12560 2010-12-07 11:03 rdoc.css

参考までに、rackパッケージのものも
$ ls -l /usr/lib/ruby/gems/1.8/doc/rack-1.1.0/rdoc/
total 176
drwxr-xr-x+ 1 **** ???? 0 2010-12-07 11:04 FCGI/
-rw-r--r-- 1 **** ???? 9421 2010-12-07 11:04 FCGI.html
-rw-r--r-- 1 **** ???? 9264 2010-12-07 11:04 KNOWN-ISSUES.html
-rw-r--r-- 1 **** ???? 29728 2010-12-07 11:04 README.html
drwxr-xr-x+ 1 **** ???? 0 2010-12-07 11:04 Rack/
-rw-r--r-- 1 **** ???? 31164 2010-12-07 11:04 Rack.html
-rw-r--r-- 1 **** ???? 19074 2010-12-07 11:04 SPEC.html
-rw-r--r-- 1 **** ???? 3334 2010-12-07 11:04 created.rid
drwxr-xr-x+ 1 **** ???? 0 2010-12-07 11:04 images/
-rw-r--r-- 1 **** ???? 46651 2010-12-07 11:04 index.html
drwxr-xr-x+ 1 **** ???? 0 2010-12-07 11:04 js/
drwxr-xr-x+ 1 **** ???? 0 2010-12-07 11:04 lib/
-rw-r--r-- 1 **** ???? 12560 2010-12-07 11:04 rdoc.css

■References
http://docs.rubygems.org/read/chapter/11
■余談
ところで、なぜか gem list したときにまだ、
cygwin warning:
MS-DOS style path detected: C:\Documents and Settings\All Users\Application Data/gemrc
Preferred POSIX equivalent is: /cygdrive/c/Documents and Settings/All Users/Application Data/gemrc
と出る場合があるんだよね…もう一度同じコマンド実行すると、出なかったり。
まだなにかそんな項目を使っている設定が残っている…?

0 件のコメント:

コメントを投稿

何かありましたら、どうぞ: