解決済み

ruby19 -vは○、gem19 -vは×な理由

  • 暇なときにでも
  • 質問No.7331438
  • 閲覧数783
  • ありがとう数1
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 61% (476/777)

ruby19 -vは使えるのに、gem19 -vが使えない

▽ruby1.9をcoreserverとmacのホームディレクトリにインストール - Born Neet]
  http://blog.bornneet.com/Entry/282/
を参考に、レンタルサーバに「ruby-1.9.2-p180」をインストールしようとしています。

「ruby19 -v」と打つと、「ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]」と表示されるのですが、
「gem19 -v」と打つと、「command not found」となってしまいます。

「gem19 -v」を有効にするには、どうすれば良いでしょうか?

<インストールする際に打ったコマンド>
/local/src/ruby-1.9.2-p180> ./configure --prefix=$HOME/local --program-suffix=19

<エラーと思われる箇所>
make[1]: Leaving directory `/virtual/ユーザー名/local/src/ruby-1.9.2-p180'
Generating RDoc documentation
./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb ./tool/runruby.rb --extout=.ext -- "./bin/rdoc" --no-force-update --all --ri --op ".ext/rdoc" "."
./tool/runruby.rb:63: warning: Insecure world writable dir /virtual/ユーザー名/lib/PEAR in PATH, mode 040777
uh-oh! RDoc had a problem:

Directory .ext/rdoc already exists, but it looks like it isn't an RDoc directory.

Because RDoc doesn't want to risk destroying any of your existing files,
you'll need to specify a different output directory name (using the --op <dir>
option)

「RDoc」ってドキュメント(?)だから関係ないようにも思うのですが、何か影響しているのでしょうか?

.ext/rdoc は既に存在しているけど、「RDoc directory」に見えない、とは、どういうことなのでしょうか?

質問者が選んだベストアンサー

  • 回答No.6

ベストアンサー率 55% (1857/3366)

installed_spec_directoriesで検索したら、いろいろ出てきました。
ようするに、それまでのgemと両方混ぜて使おうとするとよくないようです。
対策としては
・configureに--disable-gemを付けて、ruby1.9.2のgemを無効にする
・旧gem関連のファイルを削除して、ruby1.9.2のgemだけを使う。GEM_HOMEはこちらで関係ありそう
のどちらからしいです。

RDocについてはわかりません。こちらでは特になにもなかったので
お礼コメント
re999

お礼率 61% (476/777)

何度も回答いただき、ありがとうございました。

大変参考になりましたー
投稿日時 - 2012-03-25 14:10:54

その他の回答 (全5件)

  • 回答No.5

ベストアンサー率 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をよく読みましょう。
補足コメント
re999

お礼率 61% (476/777)

回答ありがとうございました。

その後、試行錯誤して、進展したのですが、また躓いてしまいました。

<現状>
> 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
投稿日時 - 2012-03-01 01:52:38
  • 回答No.4

ベストアンサー率 55% (1857/3366)

> /local/src/ruby-1.9.2-p180> which ruby19
> ./ruby19

これだと、コンパイルが成功した(らしい)ことしかわかりません。
別なディレクトリに移動してやってください。
補足コメント
re999

お礼率 61% (476/777)

回答ありがとうございます。

>別なディレクトリに移動してやってください。

「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」
とやってみたのですが、うまくいきませんでした…
投稿日時 - 2012-02-29 11:47:22
  • 回答No.3

ベストアンサー率 48% (4407/9074)

./configure --prefix=$HOME/local --program-suffix=19
して、
make
make install
したのなら、
$HOME/local/bin/ruby19
$HOME/local/bin/gem19
などが出来ているはずです。

出来ていないとしたら、どこかで間違えているか、確認方法を間違えているかですが、
お書きの質問文や補足からではわかりません。
補足コメント
re999

お礼率 61% (476/777)

回答ありがとうございます。

>$HOME/local/bin/ruby19
>$HOME/local/bin/gem19
>などが出来ているはずです。

確認したらありませんでした…
投稿日時 - 2012-02-29 11:26:19
  • 回答No.2

ベストアンサー率 55% (1857/3366)

> 今、試したら、
> > which ruby
> /virtual/ユーザー名/local/bin/ruby
> となりました。

「ruby19」を探すのにrubyでは探せません。
which ruby19
です。

gem19が正常にインストールできていたら、ruby19と同じ場所にあるはずです。
存在を確認するにはlsを使えばいいです。
補足コメント
re999

お礼率 61% (476/777)

回答ありがとうございました。

/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
です
投稿日時 - 2012-02-28 09:28:45
  • 回答No.1

ベストアンサー率 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用には空のディレクトリを用意してね」
と言ってるだけです。
補足コメント
re999

お礼率 61% (476/777)

回答ありがとうございます。

>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も入るようになったのかな? と思ったのですが、そういうわけでもないのでしょうか?
投稿日時 - 2012-02-28 00:57:37
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ