From: Akira Hayakawa Date: 2008-08-31T16:26:58+09:00 Subject: [ruby-list:45455] Re: sudo: gem: command not found On Sun, 31 Aug 2008 13:36:52 +0900 rubikitch@ruby-lang.org wrote: > From: Akira Hayakawa > 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 」は > 「sudo /usr/local/jruby/bin/jruby -S gem install 」と > する必要があると思います。うっかりしていました。 > > 面倒ならばシェルエイリアスで。 > > > やはり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