- ベストアンサー
ruby19 -vは○、gem19 -vは×な理由
- ruby19 -vは「ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]」と表示されるが、gem19 -vは「command not found」となる。
- 「gem19 -v」を有効にするにはどうすれば良いか。
- インストール時のコマンドは「./configure --prefix=$HOME/local --program-suffix=19」で、エラーが発生している箇所は「.ext/rdoc」ディレクトリの存在に関するものである。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
installed_spec_directoriesで検索したら、いろいろ出てきました。 ようするに、それまでのgemと両方混ぜて使おうとするとよくないようです。 対策としては ・configureに--disable-gemを付けて、ruby1.9.2のgemを無効にする ・旧gem関連のファイルを削除して、ruby1.9.2のgemだけを使う。GEM_HOMEはこちらで関係ありそう のどちらからしいです。 RDocについてはわかりません。こちらでは特になにもなかったので
その他の回答 (5)
- kmee
- ベストアンサー率55% (1857/3366)
「./tool/runruby.rb:63: warning: Insecure world writable dir /virtual/ユーザー名/lib/PEAR in PATH, mode 040777」ってあったので、ただの警告だと思ってました。 実際にはここは関係無くて、その後の部分が「エラー」だとmake失敗なようです。 成功する条件は、「.ext/rdocが無い」「.ext/rdocが存在していて、かつ、正常なRDoc用のファイル構成になっている」の2つのようです。 先日インストールした1.9.3のビルド環境が残っていたので実験しました。 ・.ext/rdocの中身を消して,ディレクトリだけ残してmake →「uh-oh! RDoc had a problem:」以下のメッセージが出てmake失敗 ・ make clean-rdoc で.ext/rdocを完全に削除した後、make →正常終了 > 解凍したディレクトリ(ruby-1.9.2-p180)で、「which ruby19」とか「ruby19 -v」とかやっても全く無意味ということになるのでしょうか? man which を読みましょう。 whichはPATHから順番に探します。もし、PATHに「.」が含まれているなら、現在のディレクトリからも探します。 ビルドしたruby19のあるディレクトリで探せば、当然見付かりますが、それではインストールしたものを探していることにはなりません。 なお、セキュリティ等の理由から、PATHには.を入れないことをお勧めします。 > 一般的にmake時のエラーというのは、例えば複数個所エラーがあった場合、 > 最初のエラーが見つかった時点で、処理がストップしてしまうものでしょうか? そうです。 -k オプションでエラーを無視して進みますが、それも依存関係に問題が無い部分だけで、例えば、make -k installとしても、インストールするファイル全てが揃っていないと、そちらのビルドが先に行われます(そこでエラーがあれば、結局進みません) > また、「run with --debug for full backtrace」は、どうやるのでしょうか? この訳は「完全なバックトレースのためには(for full backtrace)『--debug』と一緒に実行してください」 です。 make --debug です。これもman make やmake --helpをよく読みましょう。
補足
回答ありがとうございました。 その後、試行錯誤して、進展したのですが、また躓いてしまいました。 <現状> > which ruby19 /virtual/ユーザー名/local/bin/ruby19 > which gem19 /virtual/ユーザー名/local/bin/gem19 lsでも存在確認しました。 > ruby19 -v ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux] ここまではいい感じです。 ところが、 > gem19 -v と打つと /virtual/ユーザー名/local/lib/rubygems/source_index.rb:68:in `installed_spec_directories': undefined method `path' for Gem:Module (NoMethodError) from /virtual/ユーザー名/local/lib/rubygems/source_index.rb:58:in `from_installed_gems' from /virtual/ユーザー名/local/lib/rubygems.rb:881:in `source_index' (中略) from /virtual/ユーザー名/local/bin/gem19:8:in `<main>' となってしまいます。 どうすれば良いのでしょうか? 「Gem」モジュールのためのパスが定義されていない? 「.bashsrc」で、「export GEM_HOME=$HOME/local/lib/ruby/gem」と記述しているのですが、何か影響しているのでしょうか? これを削除すると、普通の(gem19ではない)gemが、動かなくなると思うのですが… <インストール時に影響しているかもしれないと思われる点> ▼make make clean-rdoc make: Nothing to be done for `clean-rdoc'. となってしまったので、手動で「rdoc」ディレクトリを削除してから、「make」しました ▼make install 「make install」と打つと、また同じエラーになったため、再び「rdoc」ディレクトリを手動削除してから、「make -k install」 ところが、途中で、またもやエラーとなってしまいました。 100% [515/515] doc/re.rdoc Generating RI... make: *** [rdoc] Killed ./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb ./tool/rbinstall.rb --make="make" --dest-dir="" --extout=".ext" --mflags="-k" --make-flags="k" --data-mode=0644 --prog-mode=0755 --installed-list .installed.list --install=all --rdoc-output=".ext/rdoc" ここで、手動で(?)makeしました。 自分でも何をしているか、全然分からないのですが、参考リンク先にあったので、真似してやってみました。 具体的には、表示されたコマンド「./minirubyから-rdoc-output=".ext/rdoc"まで」をそのまま打っただけです。 そうすると、下記表示になり、特にエラーらしき記述も見当たらなかったため、最後まで行ったと思ったのですが… installing default gems: /virtual/ユーザー名/local/lib/ruby/gems/1.9.1 (cache, doc, gems, specifications) rake 0.8.7 rdoc 2.5.8 minitest 1.6.0
- kmee
- ベストアンサー率55% (1857/3366)
> /local/src/ruby-1.9.2-p180> which ruby19 > ./ruby19 これだと、コンパイルが成功した(らしい)ことしかわかりません。 別なディレクトリに移動してやってください。
補足
回答ありがとうございます。 >別なディレクトリに移動してやってください。 「which ruby19」を別ディレクトリで試したら、ノーリアクションでした。 ついでに、「ruby19 -v」も別ディレクトリで試したら、ノーリアクションでした。 ということは、そもそも、解凍したディレクトリ(ruby-1.9.2-p180)で、「which ruby19」とか「ruby19 -v」とかやっても全く無意味ということになるのでしょうか? そうすると多分、現状は、解凍しただけで終わっている状況だと思うのですが、 「./configure --prefix=$HOME/local --program-suffix=19」打った後、 「config.status: creating Makefile」となっているので、 ここは多分問題ないと思います。 その後、makeしたときに、 「run with --debug for full backtrace」 「make: *** [rdoc] Error 1」 となるのですが、 一般的にmake時のエラーというのは、例えば複数個所エラーがあった場合、 最初のエラーが見つかった時点で、処理がストップしてしまうものでしょうか? 具体的には、 「make: *** [rdoc] Error 1」の意味としては、 ・エラー内容は一つだけだった ・あくまでも最初のエラー内容を表示してるだけ 何れの可能性が高いかを知りたいです。 また、「run with --debug for full backtrace」は、どうやるのでしょうか? 試しに、「make --debug for full backtrace」 とやってみたのですが、うまくいきませんでした…
- notnot
- ベストアンサー率47% (4900/10358)
./configure --prefix=$HOME/local --program-suffix=19 して、 make make install したのなら、 $HOME/local/bin/ruby19 $HOME/local/bin/gem19 などが出来ているはずです。 出来ていないとしたら、どこかで間違えているか、確認方法を間違えているかですが、 お書きの質問文や補足からではわかりません。
補足
回答ありがとうございます。 >$HOME/local/bin/ruby19 >$HOME/local/bin/gem19 >などが出来ているはずです。 確認したらありませんでした…
- kmee
- ベストアンサー率55% (1857/3366)
> 今、試したら、 > > which ruby > /virtual/ユーザー名/local/bin/ruby > となりました。 「ruby19」を探すのにrubyでは探せません。 which ruby19 です。 gem19が正常にインストールできていたら、ruby19と同じ場所にあるはずです。 存在を確認するにはlsを使えばいいです。
補足
回答ありがとうございました。 /local/src/ruby-1.9.2-p180> which ruby19 ./ruby19 lsでも存在確認しました。 が、同じ場所にgem19が見当たりません。 どうやら、gem19インストールに失敗しているみたいです。 gem19をインストールするに辺り、何か特別な「.bashrc」記述が必要なのでしょうか? 「RUBYLIB=」とか「GEM_HOME=」とか、gem19用の書き方があれば教えてください。 ちなみに、現状は、 > gem -v 1.3.6 /local/src/ruby-1.9.2-p180> which gem /virtual/ユーザー名/local/bin/gem です
- kmee
- ベストアンサー率55% (1857/3366)
command not found だったら、gem19のインストールができてない、ってことは無いですか? そのruby19が確かにそこでインストールしたものかwhich等で確認取れてますか? > <インストールする際に打ったコマンド> > /local/src/ruby-1.9.2-p180> ./configure --prefix=$HOME/local --program-suffix=19 だけだと、コンパイルの準備ができただけでインストールはされませんが。 RDocは関係無いでしょう。 辞書片手にでも翻訳してみればわかりますが 「すでにあるディレクトリに上書きしちゃうリスクは避けたいから、rdoc用には空のディレクトリを用意してね」 と言ってるだけです。
補足
回答ありがとうございます。 >command not found だったら、gem19のインストールができてない、ってことは無いですか? 有り得ます。どうやって、確認したら良いでしょうか? >そのruby19が確かにそこでインストールしたものかwhich等で確認取れてますか? 確認取れてません。 今、試したら、 > which ruby /virtual/ユーザー名/local/bin/ruby となりました。 ちなみに、 「ruby -v」と打つと、 ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux] となります。(多分、こっちは以前入れたヤツです) >だけだと、コンパイルの準備ができただけでインストールはされませんが。 その後、 「make」 「make install」と打ちました。 >RDocは関係無いでしょう。 ありがとうございます。 ネットを見ると、 >1.9にはgemが同梱されている >このあと RubyGems も必要になりますが、Ruby1.9.2 からは デフォルトで入ってるのでインストールする必要はありません のような記述もあったのですが、 そうだとすると、1.9を入れたら、自動的にgemも入るようになったのかな? と思ったのですが、そういうわけでもないのでしょうか?
お礼
何度も回答いただき、ありがとうございました。 大変参考になりましたー