2007年11月 6日
Debian(sarge)でsudo gem〜ってしたいんだけど、動かない(未解決)
- コメントする
- トラックバック (1)
- カテゴリー:プログラム
$ sudo gem install railsってな感じになるんですが、Debian(Sarge)だと
sudo: gem: command not foundって動かないんですよ。gemをフルパスで指定すると
$ sudo /opt/local/bin/gem install rails /opt/local/bin/gem:9:in `require': no such file to load -- rubygems (LoadError) from /opt/local/bin/gem:9今度は環境変数GEM_HOMEも参照できない模様。しょうがないので、suしてgemしてたんですが、いい加減、気にくわないので、ちゃんと調べてみた。でも、解決しなかった! 問題点は2つありまして
- 環境変数PATHが使えない
- 環境変数GEM_HOMEが使えない
Sudo before 1.6.8 p12, when the Perl taint flag is off, does not clear the (1) PERLLIB, (2) PERL5LIB, and (3) PERL5OPT environment variables, which allows limited local users to cause a Perl script to include and execute arbitrary library files that have the same name as library files that are included by the script.ブラックリスト方式からホワイトリスト方式なったと。同時にリストを操作する方法も追加されたので、変更してみました。スーパーユーザでvisudoを実行すると/etc/sudoersがエディタで開かれるので以下の行を追加。
Defaults env_keep+="PATH GEM_HOME RUBYLIB"env_keepという変数に+=で値を追加しています。PATHとGEM_HOMEとRUBYLIB。詳しくはsudoers(5)を参照してください。 これで後者は解決しました。gemをフルパスで指定すると無事に起動しました。しかし、PATHについては利用してくれない・・・。 いろいろを見てみたところ、
$ echo $PATH /opt/local/rubygems/bin:/opt/local/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin $ printenv PATH /opt/local/rubygems/bin:/opt/local/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin $ sudo echo $PATH /opt/local/rubygems/bin:/opt/local/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin $ sudo printenv PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin変数には設定されているけど、環境変数には設定されていない・・・?sudoが強制的に初期化している気がします。初期値がどこに入っているのかを探したのですが、見つからず。そろそろソースコード見なきゃいけない領域に入ってしまったので、後日に回します。 しかし、まぁ
$ sudo `which gem` install railsで実行できるようになったのは、小さいながらも成果だと思いたい。
Trackback on "Debian(sarge)でsudo gem〜ってしたいんだけど、動かない(未解決)"
以下1件のトラックバックはこのページのエントリー"Debian(sarge)でsudo gem〜ってしたいんだけど、動かない(未解決)"を参照しています。
このエントリーのトラックバックURL:
"Debian(sarge)でsudo gem〜ってしたいんだけど、動かない(未解決)"へのコメントはまだありません。