Gentoo Linuxな生活​/システム管理関連

Portageとは anchor.png

Portageとは、Gentoo Linuxでのパッケージ管理方式の名称です。RedHatなんかのRPMってのと同じようなレイヤですね。このPortageってのは、基本的にpythonスクリプトになっておりまして、あるパッケージを動作させる為に

  • 他のどのパッケージと依存関係があって
  • どのソースファイル、バグ修正パッチを当てて
  • どんなコンパイルオプションでパッケージをコンパイルし
  • ハードディスクのどこにインストールするのか

といった情報が網羅されています。/etc/make.confを適切に設定しておくと、

emerge [option] ほげほげ

とパッケージ名称を入れるだけで、そのパッケージを動作させる為のほかのパッケージのインストール、今インストールされているパッケージよりも上のバージョンのパッケージだけアップグレードインストールなど、いろんな動作が出来ます。

Page Top

共有?? anchor.png

Portageシステムってのは、ネットにつながってて、ネットからソースアーカイブをダウンロードしてきてコンパイルする事が前提のシステムです。ですが、非力なマシンでコンパイルするとでかいソース(例えばXWindowシステムなど)はとんでもねぇ時間がかかってしまいます。これは何とかならんもんかなぁ?と考えておりましたところ

emerge -k ほげほげ

と打つとコンパイル済みバイナリがあるならそれをインストールするそうじゃないですか。で

emerge -b ほげほげ

と打つと、インストールする際に、コンパイル済みのパッケージをバイナリとして固めてとっておけると。と、言う事はですよ。同じCPUなマシンでネットを組むならば、最も高速なマシンでコンパイルはさせておき、他のPCに配るってのが非常にナイス ( ̄一* ̄)bじゃあこれをネットで共有しようって事になりますわな。で、サーバ君はCelron、ノートPCはPentiumM(Ⅲと一緒)、でコンパイルオプションは-mcpu=pentium3を選ぶので、サーバでコンパイルしたパッケージをインストールできれば楽々♪

Page Top

Portageの調査 anchor.png

Portageってのはデフォルトで以下のように構成されます

/usr/portageportageのpythonスクリプトがつまるところ
/usr/portage/distfiles落としてきたソース、パッチが納まるところ
/usr/portage/packagesemerge -bでコンパイルしたバイナリパッケージが収まるところ
/var/tmp/portageコンパイル作業用のワーク
/var/db/pkgマシン固有にインストールされたパッケージ情報を管理するところ

となっておりました。ってことはー、各マシン固有なエリアは/varの下。/usr/portageは実は共有可能じゃん!サーバ君でcronで1日1回emerge syncしてportageの最新を落としてきて、portageデータの共有もしてしまえばよいと。こりゃーいい!

Page Top

制限事項 anchor.png

上のことをやる為には、

  • パッケージの依存関係がマッチしている事
  • 異なるマシンの間で、emerge infoと打って出てくる情報(特にCHOSTS,CFLAGS,USEあたり)が一緒であること

という制約があります。InterLinkXP君は、じつはUSEフラグがマッチしてなかったので、一旦Gentooは再インストールすることにしました。InterLinkXPにGentooで悩むに戻ったのね(笑)

Page Top

バイナリパッケージをリバースする anchor.png

これに気がついたのは、既にサーバ君にインストールが終わった後だったので、emerge -bコマンドでもう一度コンパイルするのはいやだよなー、と思っていたら、便利なコマンドがありましたよ。

quickpkg /var/db/pkg/XXX/XXXXX

と打つと、現在インストールされているHDイメージから、/usr/portage/pakcagesにパッケージファイルを構成してくれるそうで。なので以下を実行

find /var/db/pkg -type d -exec quickpkg {} \;

/var/db/pkg配下のディレクトリ属性を検索して、全部quickpkgに食わせてやる。すると今インストールされている全部のパッケージが再構成されるって訳ですね。

Page Top

共有する anchor.png

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
Page Top

コンパイル環境を同期化 anchor.png

便利な事に、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
Page Top

同期環境構築 anchor.png

いよいよここからです。これから作ろうとしているNFSクライアント側で

cd /usr/portage
./scripts/bootstrap.sh

ブートストラップして、基本環境を構築するデス。3時間ぐらい我慢してください。次に

emerge -u -k world

にょほほほ~、早い早い。ここまででStage3の状態がサーバと同期したことになります。サーバとノートPCは性格が違うので、インストールするパッケージにも差分が出ます。ということで必要なパッケージだけあとからちまちまとemerge -kでインストールしました。
ちなみにこの調子でコンパイルに時間がかかるX,Gnome,Emacs等もインストールしてしまいましたわ。ただしここまでにたどり着くまでにノートPC3~4回ぐらい再インストール(bootstrap.shを打ったって事)しましたわ。ああ、2日ぐらい費やした事になるなー←馬鹿?次にやるときはこの方法に則ります。うん。


Front page   Freeze Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 2234, today: 2, yesterday: 3
Princeps date: 2009-08-19 (Wed) 00:26:44
Last-modified: 2009-10-04 (Sun) 16:59:41 (JST) (4040d) by maruo
ページ内検索

ログイン

ユーザー名:


パスワード:





パスワード紛失

メインメニュー

サブメニュー
自宅鯖計画

Gentoo Linuxな生活

玄箱HGにGentoo格闘記

航空ショーへ行こう

モータースポーツな世界

奥深き写真の世界への誘い

我思う ゆえに我あり



携帯用QRコード