2010年9月8日水曜日

(FreeBSD) portsで「grep: write error: パイプが破壊されてました」(grep: write error: Broken pipe)

しばらく前から、portupgradeを実行すると、「grep: write error: パイプが破壊されてました」なんていうエラーが出るようになりました。



# portupgrade -F libxul-1.9.0.17_2
** Makefile possibly broken: www/libxul:
        grep: write error: パイプが破壊されてました
        libxul-1.9.2.8



/usr/local/sbin/portupgrade:1473:in `get_pkgname': Makefile broken (MakefileBrokenError)
        from /usr/local/sbin/portupgrade:623
        from /usr/local/sbin/portupgrade:614:in `each'
        from /usr/local/sbin/portupgrade:614
        from /usr/local/sbin/portupgrade:588:in `catch'
        from /usr/local/sbin/portupgrade:588
        from /usr/local/lib/ruby/1.8/optparse.rb:1310:in `call'
        from /usr/local/lib/ruby/1.8/optparse.rb:1310:in `parse_in_order'
        from /usr/local/lib/ruby/1.8/optparse.rb:1306:in `catch'
        from /usr/local/lib/ruby/1.8/optparse.rb:1306:in `parse_in_order'
        from /usr/local/lib/ruby/1.8/optparse.rb:1254:in `catch'
        from /usr/local/lib/ruby/1.8/optparse.rb:1254:in `parse_in_order'
        from /usr/local/lib/ruby/1.8/optparse.rb:1248:in `order!'
        from /usr/local/lib/ruby/1.8/optparse.rb:1241:in `order'
        from /usr/local/sbin/portupgrade:565:in `main'
        from /usr/local/lib/ruby/1.8/optparse.rb:791:in `initialize'
        from /usr/local/sbin/portupgrade:229:in `new'
        from /usr/local/sbin/portupgrade:229:in `main'
        from /usr/local/sbin/portupgrade:2213



表示されるメッセージはLANGとかで変わってしまうので、英語なら「grep: writing output: Broken pipe」です。



このメッセージ、portupgradeではなくて、普通にmakeしただけでも出たりします



# make
grep: write error: Broken pipe
===>  Vulnerability check disabled, database not found
===>  License check disabled, port has not defined LICENSE
===>  Found saved configuration for libxul-1.9.0.14
===>  Extracting for libxul-1.9.2.8
=> MD5 Checksum OK for xulrunner-1.9.2.8.source.tar.bz2.
=> SHA256 Checksum OK for xulrunner-1.9.2.8.source.tar.bz2.
===>   libxul-1.9.2.8 depends on file: /usr/local/bin/perl5.8.9 - found



grep: writing output: Broken pipeが怒濤のごとく大量に流れたりするものの、そう表示されるだけで、とくに弊害がなさそうに思えることもあれば、最初の例のように、portupgradeが動かなくなることも。

検索してみたら、このgrepでBroken pipeが出る現象は、シェルとしてtcshを使っていると起きて、bashにすれば大丈夫のこと。



# bash
[root@hoge /var/db/pkg]# portupgrade -F libxul-1.9.0.17_2
--->  Fetching the distfile(s) for 'libxul-1.9.2.8' (www/libxul)
--->  Fetching '/usr/ports/www/libxul'
===>  License check disabled, port has not defined LICENSE
===>  Found saved configuration for libxul-1.9.0.15
=> xulrunner-1.9.2.8.source.tar.bz2 doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/1.9.2.8/source/.
fetch: http://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/1.9.2.8/source/xulrunner-1.9.2.8.source.tar.bz2: Moved Temporarily
=> Attempting to fetch from http://mirror3.mirrors.tds.net/pub/mozilla.org/xulrunner/releases/1.9.2.8/source/.
xulrunner-1.9.2.8.source.tar.bz2                7% of   48 MB   42 kBps 18m05s



ははは、本当ですね。不思議だ。
原因は、シェルによって、signalのハンドリング方法が違う、ってところにあるらしいです。



ま、いいか[E:coldsweats01]



20100907



0 件のコメント:

コメントを投稿