もう修正されてしまったのですが、今朝、なんだこりゃと思った障害。
portmasterを実行したら、fetchがすべてNo address recordと表示されてエラーになる。
portmasterが原因ではなくて、portsの問題らしい。
たとえば
root@somehost:/usr/ports/graphics/ImageMagick # make
===> Found saved configuration for ImageMagick-6.8.9.3,1
===> ImageMagick-6.8.9.3,1 depends on file: /usr/local/sbin/pkg - found
=> ImageMagick-6.8.9-3.tar.xz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch http://www.imagemagick.org/download/ImageMagick-6.8.9-3.tar.xz
fetch: http://www.imagemagick.org/download/ImageMagick-6.8.9-3.tar.xz: No address record
=> Attempting to fetch http://www.imagemagick.org/download/legacy/ImageMagick-6.8.9-3.tar.xz
fetch: http://www.imagemagick.org/download/legacy/ImageMagick-6.8.9-3.tar.xz: No address record
=> Attempting to fetch http://servingzone.com/mirrors/ImageMagick/ImageMagick-6.8.9-3.tar.xz
fetch: http://servingzone.com/mirrors/ImageMagick/ImageMagick-6.8.9-3.tar.xz: No address record
=> Attempting to fetch http://mirror.checkdomain.de/imagemagick/ImageMagick-6.8.9-3.tar.xz
fetch: http://mirror.checkdomain.de/imagemagick/ImageMagick-6.8.9-3.tar.xz: No address record
以下省略
fetchを実行するのは、
/usr/ports/Mk/bsd.port.mk
のなかにある
if ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} ${FETCH_AFTER_ARGS}; then \
と書いてあるところ。
いったいどんなコマンドが実行されているんだろう?と、ちょっと小細工して調べてみたら、こんな感じだった。
/usr/bin/env -i PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin SSL_NO_VERIFY_PEER=1 SSL_NO_VERIFY_HOSTNAME=1 /usr/bin/fetch -Fpr -S 7555684 ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.8.9-3.tar.xz
fetch: ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.8.9-3.tar.xz: No address record
fetchコマンドに指定しているオプションがおかしいのか?と思ったら、そうではなくて、先頭にある「/usr/bin/env -i」が原因だった。
「-i」オプションがあると、もともと設定している環境変数を引き継がなくなるとのこと。
つまり、環境変数http_proxyやftp_proxyなどが、fetchへ渡されなくなってしまう、ということだった。
あーあー、納得です。だからNo address recordなんですね。
直接インターネットに接続しておらず、proxyサーバが必須な環境(しかもDNSで名前解決もできない)の場合、proxyサーバを使わずに、自力でダウンロードしてしまうわけですか。
/usr/ports/Mk/bsd.commands.mk
というファイルで
SETENV?= /usr/bin/env -i PATH="${PATH}"
と書いてあったのですが、それが間違い。
SETENV?= /usr/bin/env
ですね・・・
http://svnweb.freebsd.org/ports/head/Mk/bsd.commands.mk?r1=358219&r2=358268
を見れば、何がどうなったのか、一目瞭然。5時間ほどたって、修正されていました[E:coldsweats01]
なぜこうなった!
0 件のコメント:
コメントを投稿