[ruby-list:41163] Re: RD と rdoc に関する newbie な質問
From:
"H.Shimura" <shimurahiroyuki@...>
Date:
2005-09-20 01:49:38 UTC
List:
ruby-list #41163
conundrum /様
志村 弘之
Windows への RDTool へのインストールにはちょっと問題があるようです。
長くなりますが、このあいだ僕がインストールしたときのメモを後ろにつけます (RD文書!)
setup.rb のバージョンと、Windows での unlink の挙動に起因するもののようです。
# 僕の時にと微妙にエラーが違うのはちょっと心配。
まとめると次のようになると思います。
(1) setup.rb 差し替え
http://www.loveruby.net/ja/prog/setup.html
(2) setup config からやり直し
(3) 次の三つのファイルを手でコピー
* dot.rd2rc
* rdblockparser.ry
* rdinlineparser.ry
(Rubyインストール先)lib\ruby\site_ruby\1.8\rd にコピー
In message "[ruby-list:41161] Re: RD と rdoc に関する newbie な質問", <BAY109-F215088B19C47FBEBDD9E82E1950@phx.gbl>,
conundrum / wrote...
>>|setup.rb:496:in `initialize': Permission denied - rdswap.rb
>(Errno::EACCES)
>>
>>|何がよくないのか、これをごらんになってピンとこられましたら、
>>|情報をいただけませんでしょうか。
>>
>>インストールにはroot権限が必要なのではないでしょうか。
>
>環境の説明を書くのを忘れていました。
>MSWin32版 - 1.8.2 、Cygwin版 - 1.8.3 です。
>両方において administrator 権限のあるアカウントで作業しているので、
>readme にかかれていた 「必要であれば su root 」は満たしていると
>思っていたんですけど、まずいでしょうかね。
---------------------------------------+---------+---------+以上 2005/9/20
= RDTool インストール不調
2005/4/9 rdtool-0.6.16 ActiveScriptRuby_1.8.1.0
ちょっと(久しぶりに)RD形式文書が使いたくて、RDToolを入れてみようとしたが、setupでエラー
* rdtool-0.6.16
* ActiveScriptRUby_1.8.1.0
== adjusting shebang: rdswap.rb でエラー
setup.rb setup でエラーになる
C:\add\ruby\rdtool\rdtool-0.6.16>setup.rb setup
---> bin
adjusting shebang: rdswap.rb
move_file rdswap.rb.tmp, rdswap.rb
rdswap.rb.tmp:true, rdswap.rb:true
C:/add/ruby/rdtool/RDTOOL~1.16/setup.rb:494:in `unlink': Permission denied - rdswap.rb
(Errno::EACCES)
from C:/add/ruby/rdtool/RDTOOL~1.16/setup.rb:494:in `move_file'
from C:/add/ruby/rdtool/RDTOOL~1.16/setup.rb:1147:in `adjust_shebang'
from C:/add/ruby/rdtool/RDTOOL~1.16/setup.rb:1138:in `open'
from C:/add/ruby/rdtool/RDTOOL~1.16/setup.rb:1138:in `adjust_shebang'
from C:/add/ruby/rdtool/RDTOOL~1.16/setup.rb:1130:in `setup_dir_bin'
from C:/add/ruby/rdtool/RDTOOL~1.16/setup.rb:1129:in `each'
from C:/add/ruby/rdtool/RDTOOL~1.16/setup.rb:1129:in `setup_dir_bin'
from C:/add/ruby/rdtool/RDTOOL~1.16/setup.rb:1323:in `__send__'
... 8 levels...
from C:/add/ruby/rdtool/RDTOOL~1.16/setup.rb:712:in `__send__'
from C:/add/ruby/rdtool/RDTOOL~1.16/setup.rb:712:in `invoke'
from C:/add/ruby/rdtool/RDTOOL~1.16/setup.rb:676:in `invoke'
from C:/add/ruby/rdtool/RDTOOL~1.16/setup.rb:1354
C:\add\ruby\rdtool\rdtool-0.6.16>
途中
move_file rdswap.rb.tmp, rdswap.rb
rdswap.rb.tmp:true, rdswap.rb:true
はデバッグ用に自分で同梱 setup.rb の move_fileメソッドに埋め込んだ puts 文
別に見ると、この時点では rdswap.rb.tmp, rdswap.rb 両方ある。
この move_fileメソッドで unlink rdswap.rb エラーになり、
呼び出してる adjust_shebangメソッドのrescueで rdswap.rb.tmpは unlink される。
rescure節での rdswap.rb.tmp の unlink はしてるけど、
こっちは `unlink': Permission denied - rdswap.rb (Errno::EACCES) になる。
途中の両方のファイルが存在する時点で、エクスプローラ-プロパティで
ファイル属性(セキュリティ、詳細)を見ても双方に違いは見えない。
ちなみに二つのファイルの違いは、最初の #!行の内容、unix-ruby系 -> Windows-ruby系。
== 手動/setup.rb更新?
ruby-1.8 で File.unlink の Windowsでの挙動が変わったとか?
半手動でファイルを置き換えてくとかも考えたが、setup.rb自体ちょっと古めなので
そっちも見てみる。
新しめの setup.rb との該当場所の比較
* move_fileメソッド
* 変わりなし
* adjust_shebangメソッド
* やってることは変わりないようだが、メソッドの呼び出しの構造とかは結構変わってる。
ファイル権限とかは特に触れてない(もともとそうだった)
=== setup.rb 差し替え
差し替えて setup.rb setup してみる。
: setup.rb.org
同梱(上記デバッグ用の改変)の改名
: setup.rb
setup-3.2.4 より (Illusrubyでいつも使ってるやつ)
setup config をやり直す必要はあったが、その後は問題なく進んだ。
setup setup, setup install も大丈夫でした。
== とは、言え
C:\Program Files\ruby-1.8\bin に入った、rd2 ファイルを rd2.rb に改名。
そうすると、コマンドプロンプトで rd2.rb とタイプしての実行が可能になる。
C:/PROGRA~1/ruby-1.8/bin/rd2.rb:79:in `load': No such file to load -- rd/dot.rd2rc (LoadError)
from C:/PROGRA~1/ruby-1.8/bin/rd2.rb:79
今度はロードエラー。そんなのは確かにきてない。
パッケージの方をみると、libディレクトリには入ってる。
新しい setup.rb が .rbファイル以外を落としなんでしょう。
中はテキスト(ruby)ファイル。
それ系が他にも二つ。
* dot.rd2rc
* rdblockparser.ry
* rdinlineparser.ry
3つのファイルを手で C:\Program Files\ruby-1.8\lib\ruby\site_ruby\1.8\rd にコピー
動きました。
== 動いた
動いた
= rd2html-extインストール不調
2005/4/10 こちらもインストールに失敗する、
* rd2html-ext-0.1.4
== setup.rb config : 警告
C:\add\ruby\rdtool\rd2html-ext-0.1.4>setup.rb config
C:/add/ruby/rdtool/RD2HTM~1.4/setup.rb:643: warning: parenthesize argument(s) for future version
setup.rb: entering config phase...
setup.rb: config done.
config自体には成功するが、警告。643行目は下記、確かにこれはつらい。
to = isdir(File.expand_path @config['so-dir'] + '/' + dest)
== setup.rb setup : エラー
C:\add\ruby\rdtool\rd2html-ext-0.1.4>setup.rb setup
C:/add/ruby/rdtool/RD2HTM~1.4/setup.rb:643: warning: parenthesize argument(s) for future version
setup.rb: entering setup phase...
setup failed
couldn't find HOME environment -- expanding `~/.rd2rc'
try "ruby setup.rb --help" for usage
同じ警告と、そして HOME だって。
C:\add\ruby\rdtool\rd2html-ext-0.1.4\setup ディレクトリ内の
rd.rb のところで起きてるエラーです。
class InstallerHook_rd < InstallerHook
def pre_setup
if File::exist?( dot = File::expand_path( "~/.rd2rc" ) )
open( dot, "a" ) do |outf|
outf.puts %q[require 'rd/head-filter']
end
end
end
end
フックファイルのようだけど、今のsetup.rbとはフックの定義が違うので、
単にsetup.rbを差し替えれば済むというもので無い様だ。
setup-3.2.4 でのフックの説明は下記。
一般には、ディレクトリに入った直後に pre-TASK.rb を、ディレクトリを出る直前に post-TASK.rb を実行し
ます。
大体、"~/.rd2rc" ファイルって何?
: rd2html-ext.rd より
:注意!
~/.rd2rcのない人は事前にrd/dot.rd2rcをコピーしてからインストールすること。
それを忘れたときにはあわてずに
$ ruby setup.rb setup
を起動すること。
== 手動インストール
基本的にはファイルを入れるだけなので、もう良いから手でインストールする。
C:\add\ruby\rdtool\rd2html-ext-0.1.4\lib\rd 内の3ファイル、
head-filter.rb,rd2html-ext-lib.rb, rd2html-ext-opt.rb を、
C:\Program Files\ruby-1.8\lib\ruby\site_ruby\1.8\rd へ。
また、フックの動作のように、rd/dot.rd2rc には「require 'rd/head-filter'」という行を追加。
まあ、本来は大本の rd/dot.rd2rc ではなくて、各自の .rd2rc を使うのが筋なんだろうけど
Windows的にはこんなものでしょう。
= Web
dot.rd2rc で検索してみたが、同様の事例がいろいろ報告されている。
志村弘之 mailto: shimurahiroyuki@obun.co.jp