バイナリパッケージを使う
新しくインストールするマシンにパッケージをインストールする際、いちいちコンパイルする時間がもったいない! とか ディスクスペースが (一時的なものであっても) 不安! とか思うことがある。
そんなときは他の PC とパッケージを共有化して、バイナリパッケージを使うと結構いい感じ。
ただし、これが出来るのは同じアーキテクチャの CPU の場合だけ。USE フラグも同じじゃないと意味がないかも。
実例
たとえば、glibc がアップデートされたけど、複数の PC でのコンパイルメンドクセとか思ったらこんな感じでやる。
- メインPC
$ sudo emerge -avb glibc
みたいに -b オプション (--buildpkg) をつけてマージすると、パッケージが tbz2 形式で作成される。
なお、標準の作成場所は /usr/portage/packages となっている。
$ ls -la /usr/portage/packages/* /usr/portage/packages/sys-libs: 合計 10556 drwxr-xr-x 2 root root 4096 2009-07-04 19:08 . drwxr-xr-x 5 root root 4096 2009-07-04 19:15 .. -rw-r--r-- 1 root root 10783654 2009-07-04 19:08 glibc-2.9_p20081201-r2.tbz2
- サブPC
$ emerge -avk glibc These are the packages that would be merged, in order: Calculating dependencies... done! [binary U ] sys-libs/glibc-2.9_p20081201-r2 [2.8_p20080602-r1] USE="gd* nls -debug -glibc-omitfp (-hardened) (-multilib) -profile (-selinux) -vanilla" Total: 1 package (1 upgrade), Size of downloads: 0 kB Would you like to merge these packages? [Yes/No] y
みたいに -k オプション (--usepkg) をつけると、バイナリパッケージがあればそれを用いてマージしようとしてくれる。インストールタイプが binary に変わっている (太字) のにも注目。
なお、この場合にバイナリがあるか参照しにいく標準は /usr/portage/packages ディレクトリであり、これは変数 $PKGDIR で指定されている。別の場所にある場合 (CD-ROM とか) は、例えばこんな感じでやるといいらしい。
$ PKGDIR="/mnt/cdrom/packages" emerge -pv glibc
すでにインストールしてあるパッケージは?
quickpkg を使う。
$ sudo /usr/sbin/quickpkg glibc とか $ sudo /usr/sbin/quickpkg --include-config=y glibc とか
やっぱり /usr/portage/packages ディレクトリに tbz2 が作られる。標準では設定関連のファイルが含まれないことに注意。あと root 権限じゃないと読めないパッケージが出来てしまうぽいのが難点かもしれない。権限書き換えれば平気だけど…。
portage ツリーを共有しよう
家にある PC から何度も sync しにいくのは Gentoo サーバの負荷の元だし、ソースファイルなんて一度落としたら共有すればいいので、是非共有すべきである。
てことでこの辺を参考にするといいかな?
- http://www.gentoo.gr.jp/jpmain/tips.xml の 『Gentoo Linux なマシンを複数台運用する時のアイデア』
- とりあたまさんのおぼえがき: XenでPortageツリーの共用
一応メモ。
- net-fs/nfs-utils をインストール
- メイン PC の /usr/portage を NFS マウントできるように /etc/exports を編集
- メイン PC の NFS サーバサービスを起動
- サブ PC から NFS をマウント
これだけ。
実はこれをやっておくと、メイン PC で --buildpkg したパッケージをサブ PC で --usepkg してマージするのは何も意識しないでやれるし、ソースファイル (distfiles) もどこかの PC で落とせばそれがそのまま生かされるし。回線にもディスク資源にもとてもやさしいです。