2006-08-12(Sat) [長年日記]
_ [FreeBSD]portsで FETCH_CMD=wgetでエラーになったら DISABLE_SIZE=yesもいる。
防火壁の内側からだと、fetchでftp://につなぎにいくとどうもとってこれなかったりするみたいなので、wgetしたれ!とするとエラーになるときが。しかもエラーメッセージがわけのわからんことに。
wget: unknown option -- Usage: wget [OPTION]... [URL]...
ぐぐってみても日本語でずばりと書いたのがなかったのでしばし考える... FETCH_CMD=wgetのかわりに FETCH_CMD=echo したらコマンドラインでるんじゃね?
bsd02# make FETCH_CMD=echo fetch NOTE: You can enable pthread support by defining WITH_PTHREADS variable, but not recommended since this might break some ruby apps. => ruby-1.8.4.tar.gz doesn't seem to exist in /usr/ports/distfiles/ruby. => Attempting to fetch from ftp://ftp.iij.ad.jp/pub/lang/ruby/1.8/. -S 4312965 ftp://ftp.iij.ad.jp/pub/lang/ruby/1.8/ruby-1.8.4.tar.gz
なんだこの -S って。そりゃーwgetにはないわな。ちゅーわけで調査。
bsd02# pwd /usr/ports/Mk bsd02# grep -- '-S' * bsd.port.mk:X_SERVER_PORT= ${PORTSDIR}/x11-servers/XFree86-4-Server bsd.port.mk:# Avoid -S for 4.7 and earlier since it causes fetch errors bsd.port.mk:FETCH_BEFORE_ARGS+= $${CKSIZE:+-S $$CKSIZE}
bsd.port.mkにあるらしい。該当箇所。
.if exists(/usr/bin/fetch) FETCH_CMD?= /usr/bin/fetch -ARr FETCH_REGET?= 1 .if ${OSVERSION} >= 480000 && !defined(DISABLE_SIZE) # Avoid -S for 4.7 and earlier since it causes fetch errors FETCH_BEFORE_ARGS+= $${CKSIZE:+-S $$CKSIZE} .endif .else FETCH_CMD?= /usr/bin/ftp FETCH_REGET?= 0 .endif
4.8以降で、DISABLE_SIZEが定義されてない場合は -S のあとにCKSIZEを付加するらしい。CKSIZEってfetchしてくるサイズチェックなんだろう。たぶん。じゃあこうすればいいの?
bsd02# rm /usr/ports/distfiles/ruby/ruby-1.8.4.tar.gz bsd02# make FETCH_CMD=echo DISABLE_SIZE=yes fetch NOTE: You can enable pthread support by defining WITH_PTHREADS variable, but not recommended since this might break some ruby apps. => ruby-1.8.4.tar.gz doesn't seem to exist in /usr/ports/distfiles/ruby. => Attempting to fetch from ftp://ftp.iij.ad.jp/pub/lang/ruby/1.8/. ftp://ftp.iij.ad.jp/pub/lang/ruby/1.8/ruby-1.8.4.tar.gz
なるほどこれで -S が消えるね。わーい。
その後1
/etc/make.confに定義してずっとwgetだぜ!と意気込んでみたものの、たまに失敗することもあるみたいで意味不明。fetchできないときにwget使うオプションとして考えておくか。とほほ。
その後2
本エントリを書くときにあらためてぐぐって一発目のメールを良く見ると
やったことがそのまま書いてある...最初にぱっと見てたはずなんだけど...orz