Personal tools
You are here: Home ブログ matsuyama 久しぶりに Gentoo を更新しました
Document Actions

久しぶりに Gentoo を更新しました

% esync -v # emerge --sync
% layman -s ALL
% emerge -e world

結論から言うとシステムが壊滅状態になりました。 kde とか qt 周りは凶悪すぎます。ちょっと testing 使っただけでバージョン管理がおかしくなるのはなんとかなりませんか。 java 関係のパッケージに至っては公式から本体をダウンロードしてからやり直せというメッセージを表示するためだけに一日がかりの emerge を中断してくれるという親切さ。素敵すぎます(もちろん次に実行するのは --resume --skipfirst ですよね?)。まあなんとか修復して元通り使えるようにはなりましたが、あまり腑に落ちないというか達成感がないというか。

現状、 emerge には処理するパッケージを exclude するオプションが --skipfirst しかないので world のような大規模更新をする場合は以下のような手順で行ったほうがいいかもしれません。

% emerge -epv world | awk '{ print $4 }' | perl -ne 'print "=$_" if 1.../.+/' > packages
% cat packages | xargs emerge 

更新から外したいパッケージがあれば packages を編集してそのパッケージの行を取り除いてやれば OK です。依存関係でうるさくいわれるようなら --nodeps を試してみるといいかもしれません。

ここから少し違う話題へ。「LinuxサーバーHacks2」で distcc という分散コンパイルプログラムを使ってコンパイルを速くするハックが紹介されていたのですが、そのときに呼び出す make プログラムの -j(--jobs) オプションに関して不可解な点が。以下「LinuxサーバーHack2」の202pから引用。

distccを開始する前にまずコードのビルド時にパラレルメイクを実行する方法について知っておかなければなりません。パラレルメイクを実行するには、makeコマンドで-jオプションを使用します。

dbrick@rivendel1:$ make -j3; make -j3 modules

これにより3つの子プロセスが生成されます。コンパイルの対象が常にキューに存在することにより、これらの子プロセスはプロセッサパワーを最大利用します。 通例では実行するパラレルメイクの個数はプロセッサの数に2を掛け、その数に1を足した数になります。

一方、 Gentoo distcc ドキュメント(*)は、

(-jN(NはCPUの合計数+1の二倍)を含むようにMAKEOPTSを修正する)

(*) http://www.gentoo.org/doc/ja/distcc.xml

またそれの原文(*)は、

(Modify MAKEOPTS to include -jN, where N is twice the number of CPUs +1 available)

(*) http://www.gentoo.org/doc/en/distcc.xml

となっています。正直な話「LinuxサーバーHacks2」は信用できるほどの翻訳ではありません。かといって Gentoo の翻訳ドキュメントも基本的にボランティアなのでなんともいえません(僕はこちらのほうが信用できますが)。それで肝心の原文を眺めてみても前者ともとれるし後者ともとれるし…そもそもこの通例ってどこから来ているのやら。 man ページにも情報なし。調べる気もあまりなし。

まあどちらにしろ Gentoo Handbook の 「 -j オプションはプロセッサ数の +1 にするべき」という解説は高確率で間違っていると思われるのですが、 -j オプションは気休め程度の効果しか期待できないと思うのでどうでもいいといえばどうでもいいのでしょう。

暇なときに検証してみたいと思います。

追記

手頃なパッケージで -j によるビルド速度の変化を見てみたところ結果は全然変わりませんでした。むしろ process scheduling/io scheduling 等々によっては逆に遅くなりそうな悪寒。

Category(s)
linux
The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/matsuyama/gentoo-update/tbping

Re:久しぶりに Gentoo を更新しました

Posted by matsuu at 2007-03-13 01:58
untilを使えばちょっと幸せになれるかもしれませんよ。
http://www.gentoo.org/news/ja/gwn/20061002-newsletter.xml

Re:久しぶりに Gentoo を更新しました

Posted by matsuyama at 2007-03-13 08:23
GentooJPの中の人だ。はじめまして。 until いいですね。次に更新するときに使ってみたいと思います。わがままを言えば emerge がもっと高機能になってほしいのですが(笑)。
P.S. GentooJPには近い将来お世話になるかもしれないのでその時はよろしくおねがいします。
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.