From: "H.Shimura" Date: 2005-09-20T10:49:38+09:00 Subject: [ruby-list:41163] Re: RD と rdoc に関する newbie な質問 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 な質問", , 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