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?