バイナリパッケージを経由して代理ビルドしてみた
昨日Atomマシンにemerge -uD worldかけました。
distcc美味しいですわー、などと紅茶をすすらずに眺めていたらgccのビルドがちっとも進みません。これは・・・
\自分で用意したgcc使ってるからdistcc仕事してない/
待ち切れないので別マシンでバイナリパッケージ作ったというお話。
(必要なら)まずGentooをインストールします
バイナリパッケージはemergeしたものを固めるので、作りたい構成でemergeできる環境が必要です。今回はターゲットがi686なのに他のマシンはどれもx86_64だったので、VMにそれっぽい環境を作りました。
今回はgccのemergeさえできればいいので、いろいろ省略しています。
- VM立ててSystemRescueCDのrescue32 (or install-x86-minimal) でブート
- パーティション切る必要ないので/dev/vdaにいきなりmkfs.ext4してマウント
- chrootしてemergeが使えるところまで (HandbookのSec.5-6)
/mnt/gentooを3GBにしたらinode不足でportageツリーが展開できないという事件もありましたが、/usr/portageをtmpfsにしてごまかしました。良い子は真似しないでね。
バイナリパッケージを作る
CFLAGS、USEフラグ、パッケージのバージョンを作りたいパッケージにあわせます。
そして-bオプションをつけてemergeすると、デフォルトの場合/usr/portage/packages以下にバイナリパッケージが作成されます。
バイナリパッケージを使う
インストール先のマシンに移って先ほど作ったバイナリパッケージをインストールします。
バイナリパッケージはHTTPやSSHでPortageがダウンロードしてくれるので、その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環境を作るのが面倒だなと。。。