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」に見えない、とは、どういうことなのでしょうか?
「./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をよく読みましょう。
お礼
何度も回答いただき、ありがとうございました。 大変参考になりましたー