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日ぐらい費やした事になるなー←馬鹿?次にやるときはこの方法に則ります。うん。


トップ   凍結 差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 2995, today: 1, yesterday: 0
初版日時: 2009-08-19 (水) 00:26:44
最終更新: 2009-10-04 (日) 16:59:41 (JST) (5310d) by maruo
ページ内検索

ログイン

ユーザー名:


パスワード:





パスワード紛失

メインメニュー

サブメニュー
自宅鯖計画

Gentoo Linuxな生活

玄箱HGにGentoo格闘記

航空ショーへ行こう

モータースポーツな世界

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

我思う ゆえに我あり



携帯用QRコード