portsのコンパイルを他のPCに肩代わりさせる

対象プラットフォーム: FreeBSD 7.x / FreeBSD 6.x


はじめに

ソフトウェアをportsから導入したいが、導入したいPCの演算能力が非力で、portsのコンパイルに莫大な時間がかかってしまうようなケースでは、演算能力の高い他のPCにportsのコンパイルを肩代わりさせ、導入側ではコンパイル済みのportsからソフトウェアをインストールする方法が有効です。

このページでは、portsのコンパイルを他のPCに肩代わりさせる方法について、体系的に説明します。

コンパイルを肩代わりするPCでの作業

最初に、コンパイルを肩代わりするPCでの作業について説明します。

「/etc/make.conf」の編集

まずはじめに、どのCPUタイプ向けにportsを構築するかを指定するために、「/etc/make.conf」を編集します。

「/etc/make.conf」の編集
CPUTYPE=i686
CFLAGS= -O2 -fno-strict-aliasing -pipe
COPTFLAGS= -O2 -fno-strict-aliasing -pipe

設定するCPUタイプは、portsを導入するPCが対応しているものを指定してください。

たとえば、CPUにPentium IIIが搭載されているPCに導入するためのportsを構築する場合には、「CPUTYPE=i686」や「CPUTYPE=pentium3」などと指定してください。

ここで指定したCPUタイプに合致しないCPUが搭載されたPCに対し、コンパイルしたportsを導入すると、システムがクラッシュしたり、誤動作の原因となりますのでご注意ください。

portsの展開

次に、最新のportsを取得して展開します。
portsの取得および展開方法については、「最新のportsを取得して展開する」を参照してください。

portsに対してのconfigの実行

portsの構築中にoption指定のためのメニューが表示されないように、予めmake前に依存関係のある全てのportsをmake configし、option指定を済ませておきます。

この処理の詳細については、「portsのmake前に依存関係のある全てのportsをmake configする」を参照してください。

「apache13_modssl」に対してのconfig
$ cd /usr/ports/www/apache13_modssl
$ make config-recursive

実際には、必要なportsを一括でmake configするようなスクリプトを予め作成しておき、それを実行するのが効率がよいと思います。

packageの構築

それでは実際にportsのコンパイルに入ります。

コンパイル済みのportsの導入については、コンパイルが完了した「/usr/ports」をそのまま導入側のPCにNFSでマウントし、そこからmake installする方法もありますが、NFSでマウントしたディレクトリに書き込みが発生したりとあまりエレガントではないため、ここではコンパイルしたportsをpackage化し、それを導入側のPCに転送することにします。

portsをコンパイルし、packageを作成するには以下のようにします。

「apache13_modssl」のpackageの構築
$ cd /usr/ports/www/apache13_modssl
$ make package-recursive clean

実際には、必要なportsを一括でmake package cleanするようなスクリプトを予め作成しておき、それを実行するのが効率がよいと思います。

また、上記のようにすると、portsをコンパイルしたマシンにおいて、packageが作成されるだけでなく、インストールされてしまう点に注意してください。
再度packageの構築が必要な場合には、以下のようにしてインストール済みのすべてのportsをアンインストールしてください。

インストール済みの全portsのアンインストール
$ cd /var/db/pkg
$ pkg_delete *

構築したpackageの取り出し方

最後に、構築したpackageを「/usr/ports」以下のツリーから抽出します。
以下のように「find」を利用し、package(拡張子が「.tbz」のファイル)を特定のディレクトリに移動します。

構築したpackageの取り出し方
$ find /usr/ports -iname '*.tbz' -exec mv {} /home/work \;

あとは、特定のディレクトリ(上記の例では「home/work」)に移動されたpackageをftp等を利用して導入側のPCに転送します。

portsを導入するPCでの作業

portsを導入するPCでの作業は簡単で、上記で生成されたpackageを持ってきて、ひたすら「pkg_add」するだけです。
すべてのpackageが同じディレクトリ内に存在すれば、「pkg_add」により依存関係のあるpackageも自動的にインストールされます。


あなたの探し物は見つかりましたか?
まさにこれだ 参考になった ちょっと違う これじゃない
何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まだ評価がありません

表示できるメッセージはありません。


目次に戻る
image