バイナリパッケージを経由して代理ビルドしてみた

昨日Atomマシンにemerge -uD worldかけました。
distcc美味しいですわー、などと紅茶をすすらずに眺めていたらgccのビルドがちっとも進みません。これは・・・
\自分で用意したgcc使ってるからdistcc仕事してない/
待ち切れないので別マシンでバイナリパッケージ作ったというお話。

(必要なら)まずGentooをインストールします

バイナリパッケージはemergeしたものを固めるので、作りたい構成でemergeできる環境が必要です。今回はターゲットがi686なのに他のマシンはどれもx86_64だったので、VMにそれっぽい環境を作りました。
今回はgccのemergeさえできればいいので、いろいろ省略しています。

/mnt/gentooを3GBにしたらinode不足でportageツリーが展開できないという事件もありましたが、/usr/portageをtmpfsにしてごまかしました。良い子は真似しないでね。

バイナリパッケージを作る

CFLAGS、USEフラグ、パッケージのバージョンを作りたいパッケージにあわせます。
そして-bオプションをつけてemergeすると、デフォルトの場合/usr/portage/packages以下にバイナリパッケージが作成されます。

バイナリパッケージを使う

インストール先のマシンに移って先ほど作ったバイナリパッケージをインストールします。
バイナリパッケージはHTTPやSSHPortageがダウンロードしてくれるので、そのURLをmake.confに書いておきます。

PORTAGE_BINHOST="ssh://user@host/usr/portage/packages"
# とか、install-**-minimalやSystemRescueCD経由なら
PORTAGE_BINHOST="ssh://root@host/mnt/gentoo/usr/portage/packages"

あとは-g(ローカルorリモートのバイナリパッケージも使う)か-G(〜だけ使う)オプションをつけてemergeします。
パッケージ一覧で通常[ebuild 〜]となっているのが[binary 〜]になっていれば、バイナリパッケージを使用してインストールされます。

あとがき

バイナリパッケージ自体は簡単に作れるんですが、お目当てのemerge環境を作るのが面倒だなと。。。