CentOS 5.3 paco のインストールで sudo make logme に失敗した
CentOS 5.3 で、下記のように sudo make logme に失敗した。
$ sudo make logme echo /usr/local/share/paco/README | paco -lp+ paco-2.0.6; \ for dir in lib paco gpaco doc scripts; do \ ( cd $dir && make logme ) 2>/dev/null; \ done && \ echo && paco -vvfsty --sort=name paco-2.0.6 /bin/sh: paco: command not found make[1]: ディレクトリ `/usr/local/src/paco-2.0.6/lib' に入ります ( cd paco-log && make logme ) 2>/dev/null make[2]: ディレクトリ `/usr/local/src/paco-2.0.6/lib/paco-log' に入ります ls /usr/local/lib/libpaco-log* | paco -lp+ paco-2.0.6 make[2]: ディレクトリ `/usr/local/src/paco-2.0.6/lib/paco-log' から出ます make[1]: ディレクトリ `/usr/local/src/paco-2.0.6/lib' から出ます make[1]: ディレクトリ `/usr/local/src/paco-2.0.6/paco' に入ります echo /usr/local/bin/paco | paco -lp+ paco-2.0.6 make[1]: ディレクトリ `/usr/local/src/paco-2.0.6/paco' から出ます make[1]: ディレクトリ `/usr/local/src/paco-2.0.6/gpaco' に入ります make[1]: `logme' に対して行うべき事はありません. make[1]: ディレクトリ `/usr/local/src/paco-2.0.6/gpaco' から出ます make[1]: ディレクトリ `/usr/local/src/paco-2.0.6/doc' に入ります echo /usr/local/lib/pkgconfig/paco.pc /usr/local/share/man/man5/pacorc.5 /usr/local/share/man/man8/paco.8 /usr/local/etc/pacorc /usr/local/share/paco/pacorc /usr/local/share/paco/faq.txt | paco -lp+ paco-2.0.6 make[1]: ディレクトリ `/usr/local/src/paco-2.0.6/doc' から出ます make[1]: ディレクトリ `/usr/local/src/paco-2.0.6/scripts' に入ります make[1]: `logme' に対して行うべき事はありません. make[1]: ディレクトリ `/usr/local/src/paco-2.0.6/scripts' から出ます /bin/sh: line 4: paco: command not found make: *** [logme] エラー 127
sudo make logme で paco というコマンドが見つからないと出る。
今まで、CentOS 5.2 ではまったく問題がなかったのに。
$ which paco /usr/local/bin/paco
インストールされた場所は特に指定していないので /usr/local/bin 以下
$ env PATH=/usr/local/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/hoge/bin
一般ユーザで、env をすると PATH は上記のように。
[CentOS 5.3] $ sudo env
PATH=/usr/bin:/bin
CentOS 5.3 では、/usr/local/bin に PATH が通っていない。
[CentOS 5.2] $ sudo env PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/hoge/bin
ちなみに CentOS 5.2 だと PATH は一般ユーザと同じ
[CentOS 5.2] $ sudo -V Sudo version 1.6.8p12 [CentOS 5.3] $ sudo -V Sudo version 1.6.9p17
sudo のバージョンが違う。
- Sudo version 1.6.8p12 was released on November 8, 2005.
- Sudo version 1.6.9p17 was released on June 26, 2008.
で、sudo の公式サイトでは
http://www.sudo.ws/sudo/troubleshooting.html
Q) Sudo appears to be removing some variables from my environment, why?
A) Sudo removes the following "dangerous" environment variables
to guard against shared library spoofing, shell voodoo, and
kerberos server spoofing.
IFS
LOCALDOMAIN
RES_OPTIONS
HOSTALIASES
NLSPATH
PATH_LOCALE
TERMINFO
TERMINFO_DIRS
TERMPATH
TERMCAP
ENV
BASH_ENV
LC_ (if it contains a '/' or '%')
LANG (if it contains a '/' or '%')
LANGUAGE (if it contains a '/' or '%')
LD_*
_RLD_*
SHLIB_PATH (HP-UX only)
LIBPATH (AIX only)
KRB_CONF (kerb4 only)
KRBCONFDIR (kerb4 only)
KRBTKFILE (kerb4 only)
KRB5_CONFIG (kerb5 only)
VAR_ACE (SecurID only)
USR_ACE (SecurID only)
DLC_ACE (SecurID only)
とあり、sudo のバージョンがあがったことで、
あらかじめ決められた環境変数以外は消し去されてしまう?ようだ。
この問題を回避するためには、
export PATH=/usr/local/bin:$PATH alias sudo="sudo PATH=$PATH"
とかを、~/.bashrc とかに書いたりするらしい。
http://d.hatena.ne.jp/japanrock_pg/20090527/1243426081
もちろん sudo の仕様というか変わったのはあるにしても、
paco 自身を paco で管理する時の Makefile もおかしいのかな??
Makefile とかはよく分からないけど、絶対パスで指定すればいいのだから、
paco のほうのミス?でもあるのかなー。。よくある話なんだろうか。
参照
http://arika.org/diary/2009/04/24/sudo-and-env/rubyインストールしてあるのにsudoすると「/usr/bin/env: ruby: そのようなファイルやディレクトリはありません」と言われる - 基本へ帰ろう
Sudo Main Page
How does the default PATH get set on RHEL?