1: 2009-08-19 (水) 00:26:44 maruo[5] [6] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | [[Gentoo Linuxな生活/システム管理関連]] | ||
+ | *Portageとは [#x5f51d28] | ||
+ | Portageとは、GentooLinuxでのパッケージ管理方式の名称です。RedHatなんかのRPMってのと同じようなレイヤですね。このPortageってのは、基本的にpythonスクリプトになっておりまして、あるパッケージを動作させる為に | ||
+ | -他のどのパッケージと依存関係があって | ||
+ | -どのソースファイル、バグ修正パッチを当てて | ||
+ | -どんなコンパイルオプションでパッケージをコンパイルし | ||
+ | -ハードディスクのどこにインストールするのか | ||
+ | |||
+ | といった情報が網羅されています。/etc/make.confを適切に設定しておくと、 | ||
+ | |||
+ | emerge [option] ほげほげ | ||
+ | |||
+ | とパッケージ名称を入れるだけで、そのパッケージを動作させる為のほかのパッケージのインストール、今インストールされているパッケージよりも上のバージョンのパッケージだけアップグレードインストールなど、いろんな動作が出来ます。 | ||
+ | |||
+ | *共有?? [#l36f93a2] | ||
+ | Portageシステムってのは、ネットにつながってて、ネットからソースアーカイブをダウンロードしてきてコンパイルする事が前提のシステムです。ですが、非力なマシンでコンパイルするとでかいソース(例えばXWindowシステムなど)はとんでもねぇ時間がかかってしまいます。これは何とかならんもんかなぁ?と考えておりましたところ | ||
+ | |||
+ | emerge -k ほげほげ | ||
+ | |||
+ | と打つとコンパイル済みバイナリがあるならそれをインストールするそうじゃないですか。で | ||
+ | |||
+ | emerge -b ほげほげ | ||
+ | |||
+ | と打つと、インストールする際に、コンパイル済みのパッケージをバイナリとして固めてとっておけると。と、言う事はですよ。同じCPUなマシンでネットを組むならば、最も高速なマシンでコンパイルはさせておき、他のPCに配るってのが''非常にナイス ( ̄一* ̄)b''じゃあこれをネットで共有しようって事になりますわな。で、サーバ君はCelron、ノートPCはPentiumM(Ⅲと一緒)、でコンパイルオプションは-mcpu=pentium3を選ぶので、サーバでコンパイルしたパッケージをインストールできれば楽々♪ | ||
+ | |||
+ | **Portageの調査 [#c93062ae] | ||
+ | Portageってのはデフォルトで以下のように構成されます | ||
+ | ,/usr/portage,portageのpythonスクリプトがつまるところ | ||
+ | ,/usr/portage/distfiles,落としてきたソース、パッチが納まるところ | ||
+ | ,/usr/portage/packages,emerge -bでコンパイルしたバイナリパッケージが収まるところ | ||
+ | ,/var/tmp/portage,コンパイル作業用のワーク | ||
+ | ,/var/db/pkg,マシン固有にインストールされたパッケージ情報を管理するところ | ||
+ | |||
+ | となっておりました。ってことはー、各マシン固有なエリアは/varの下。/usr/portageは実は共有可能じゃん!サーバ君でcronで1日1回emerge syncしてportageの最新を落としてきて、portageデータの共有もしてしまえばよいと。こりゃーいい! | ||
+ | |||
+ | **制限事項 [#h1217291] | ||
+ | 上のことをやる為には、 | ||
+ | -パッケージの依存関係がマッチしている事 | ||
+ | -異なるマシンの間で、emerge infoと打って出てくる情報(特にCHOSTS,CFLAGS,USEあたり)が一緒であること | ||
+ | |||
+ | という制約があります。InterLinkXP君は、じつはUSEフラグがマッチしてなかったので、一旦Gentooは再インストールすることにしました。[[InterLinkXPにGentooで悩む]]に戻ったのね(笑) | ||
+ | |||
+ | **バイナリパッケージをリバースする [#je9a4e96] | ||
+ | これに気がついたのは、既にサーバ君にインストールが終わった後だったので、emerge -bコマンドでもう一度コンパイルするのはいやだよなー、と思っていたら、便利なコマンドがありましたよ。 | ||
+ | quickpkg /var/db/pkg/XXX/XXXXX | ||
+ | |||
+ | と打つと、現在インストールされているHDイメージから、/usr/portage/pakcagesにパッケージファイルを構成してくれるそうで。なので以下を実行 | ||
+ | find /var/db/pkg -type d -exec quickpkg {} \; | ||
+ | |||
+ | /var/db/pkg配下のディレクトリ属性を検索して、全部quickpkgに食わせてやる。すると今インストールされている全部のパッケージが再構成されるって訳ですね。 | ||
+ | |||
+ | **共有する [#f715d5df] | ||
+ | UNIXでディスクの共有をしようと思ったら、いくつか方法がありますが、私はNFSを使いました。 | ||
+ | emerge nfs | ||
+ | |||
+ | これは共有する側、される側双方にインストールしておきます。~ | ||
+ | で以下の設定をします。nfsサーバ側/etc/exportsに以下を書く。 | ||
+ | /usr/portage 共有を許すアドレス(rw,no_root_squash) | ||
+ | |||
+ | 書いたら、 | ||
+ | /etc/init.d/nfs start | ||
+ | /usr/sbin/exportfs -r | ||
+ | |||
+ | exportsに書いた内容を有効にして共有させるようにします。~ | ||
+ | 次にnfsクライアント側の設定。fstabに以下の行を追加 | ||
+ | NFSサーバアドレス:/usr/portage /usr/portage nfs noauto.rw 0 0 | ||
+ | portageはインストールするときだけにしておきたいので(特にノートPCなので)noautoオプションで自動的にマウントしないようにしておきます。で、 | ||
+ | /etc/init.d/nfsmount start | ||
+ | mount /usr/portage | ||
+ | |||
+ | さて、これでプロンプトが正常に返ってきて、/usr/portageが見えたら大丈夫。ちなみに私はノートPCのローカルドライブに有った/usr/portage配下は全て削除してしまいました。~ | ||
+ | うまくいったら、自動起動に登録しておきます。NFSサーバ側 | ||
+ | rc-update add nfs default | ||
+ | |||
+ | NFSクライアント側 | ||
+ | rc-update add nfsmount default | ||
+ | |||
+ | *コンパイル環境を同期化 [#ub4c24a4] | ||
+ | 便利な事に、quickpkgでパッケージを作ると、/usr/portage/packages配下にパッケージを作成したときに使ったmake.confを置いておいてくれます。なので、NFSクライアント側で以下を実行 | ||
+ | cp /usr/portage/packages/make.conf /etc | ||
+ | ln -sf /etc/make.default /usr/portage/profiles/default-x86-2004.0 | ||
+ | |||
+ | *同期環境構築 [#mf0f4026] | ||
+ | いよいよここからです。これから作ろうとしているNFSクライアント側で | ||
+ | cd /usr/portage | ||
+ | ./scripts/bootstrap.sh | ||
+ | |||
+ | ブートストラップして、基本環境を構築するデス。3時間ぐらい我慢してください。次に | ||
+ | emerge -u -k world | ||
+ | |||
+ | にょほほほ~、早い早い。ここまででStage3の状態がサーバと同期したことになります。サーバとノートPCは性格が違うので、インストールするパッケージにも差分が出ます。ということで必要なパッケージだけあとからちまちまとemerge -kでインストールしました。~ | ||
+ | ちなみにこの調子でコンパイルに時間がかかるX,Gnome,Emacs等もインストールしてしまいましたわ。ただしここまでにたどり着くまでにノートPC3~4回ぐらい再インストール(bootstrap.shを打ったって事)しましたわ。ああ、2日ぐらい費やした事になるなー←馬鹿?次にやるときはこの方法に則ります。うん。 |
(This host) = https://femt.ddo.jp