On Sun, 31 Aug 2008 13:36:52 +0900
rubikitch / ruby-lang.org wrote:

> From: Akira Hayakawa <ruby / i-mail.jp>
> Subject: [ruby-list:45450] Re: sudo: gem: command not found
> Date: Sun, 31 Aug 2008 12:50:51 +0900
> 
> おそらく「sudo ruby -S gem」で解決していると思いますが…
> 
> 「sudo jruby -S gem install <package_name>」は
> 「sudo /usr/local/jruby/bin/jruby -S gem install <package_name>」と
> する必要があると思います。うっかりしていました。
> 
> 面倒ならばシェルエイリアスで。
> 
> > やはりjruby/bin経由だと、sudoが許してくれないという仕様なんですか。
> 
> おおかたrootの$PATHに /usr/local/jruby/bin が含まれていないからでしょう。
akira@akira-desktop:/usr/local/rubygems-1.2.0$ sudo sh -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

本当ですね。echo $PATHしか知らないので、一体、これで何が起こったのかさっぱり分かりません。
シェルも覚えないといけないんですよね・・・
~/.profileに書いてあるのはユーザのPATHなんですか。そういえばそうですね。

> 
> $ sudo sh -c 'echo $PATH'
> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
> 
> > 何ででしょう。利益ないと思いますが。
> 
> セキュリティの観点からrootの$PATHは最小限にしておくべきです。
> $PATHが通ってない実行ファイルをsudoで実行するには、
> フルパスで指定しなさいということだと思います。
勉強になります。

> 
> > /usr/local/binにシンボリックリンク貼って逃げるのは簡単ですが、
> > 以降すべて、jruby/binを回避する為にシンボリックリンクを貼るハメになりませんか?
> 
> コンピュータの世界では「yak shaving」が日常茶飯事です。○○を解決するに
> は××を解決しないといけない、××を解決するには△△を解決しないといけ
> ない〜という感じで、すべての問題にまじめに取り組むと(人間が)スタック
> オーバーフローしてしまいます。だから、とりあえず逃げの一手を打ってオー
> バーフローを防ぐことはよくやります。
> 
> シンボリックリンクという逃げの一手を打って、先に問題『EmacsでのRuby環境
> を整える』を解決したほうが精神衛生上良いと思います。解決したら改めてシ
> ンボリックリンクを削除し、sudoの問題解決をしてみては。

実はjrubyを消せば、何もかもうまく行く事に気づいてしまいましたが、今更戻れません。
卒論で使う言語をjrubyにしようかpure javaにしようか必死で迷っていたのです。
EclipseのDLTKが未完成だという事でjrubyの線は消えてしまったわけですが、
何日もrubyの下調べに使ってしまったので、今更引けなくなってしまいました。
未来の自分の為にruby-listで勉強した事をドキュメントにまとめてたりします。

> 
> --
> rubikitch
> Blog: http://d.hatena.ne.jp/rubikitch/
> Site: http://www.rubyist.net/~rubikitch/
> 
> 


-- 
Akira Hayakawa <ruby / i-mail.jp>