pkg_compの使い方
pkg_compとは
NetBSDではサードパーティ製のソフトウェアのビルド、インストールにpkgsrcと呼ばれるフレームワークが使用されています。 pkgsrcは便利なフレームワークなのですが、パッケージのアップデートを行うときに依存するすべてのパッケージを一旦アンインストールしてしまうため、稼動中のシステムに対してパッケージのアップデートを行うことが少し難しくなっています。
pkg_compはパッケージのビルド、インストールをchroot環境で行うためのプログラムです。 chroot環境でパッケージのビルド、インストールを行うため、稼動中のシステムにインストールされているパッケージに影響を与えずにアップデート用のバイナリパッケージを作成することができます。 pkg_compを使用してアップデート用のバイナリパッケージを作成し、作成されたバイナリパッケージを使用してパッケージのアップデートを行うことで、より安全にパッケージのアップデートを行うことができるようになります。
pkg_compのセットアップ
pkg_compの入手
pkg_compはpkgsrcを使用してパッケージのビルド、インストール、バイナリパッケージの作成を行います。 また、pkg_compのプログラムもpkgsrcのパッケージとして提供されています。 そのため、まずpkgsrcを入手する必要があります。
CD-ROM、sup、ftp、AnonCVSなどを使用してpkgsrcを入手します。 入手したpkgsrcは/usr/pkgsrcに置きます。 ftpを使用してpkgsrcを入手する例を以下に示します。
Example 1. ftpを使用してpkgsrcを入手する例
# ftp ftp://ftp.jaist.ac.jp/pub/NetBSD/NetBSD-current/tar_files/pkgsrc.tar.gz
# tar xzpf pkgsrc.tar.gz -C /usr
pkg_compのビルド、インストール
pkgsrcを使用してpkg_compをビルド、インストールします。 pkg_compはpkgsrcのpkgtoolsカテゴリに存在しています。
Example 2. pkgsrcを使用してpkg_compをビルド、インストールする例
# cd /usr/pkgsrc/pkgtools/pkg_comp
# make
# make install
NetBSDリリース配布物の入手
pkg_comp用chroot環境を作成するために、NetBSDのリリース配布物が必要となります。 CD-ROM、ftpなどを使用して以下のファイルを入手します。
chroot環境の作成に必要なファイル
- base.tgz
- comp.tgz
- etc.tgz
- kern-GENERIC.tgz
- text.tgz
- xbase.tgz
- xcomp.tgz
- xetc.tgz
- xfont.tgz
- xserver.tgz
入手したファイルは展開せずに/var/pub/NetBSD/binary/setsに置きます。
pkg_compの設定ファイルの作成
pkg_compの設定ファイルは既定値ではdefault.confという名前になっています。 設定ファイルのテンプレートはpkg_compを使用して作成することができます。
Example 3. 設定ファイルのテンプレートを作成する例
# pkg_comp maketemplate
何も指定しない場合にはpkg_compは~/pkg_comp/default.confを設定ファイルとして解釈します。 設定ファイルとして他のファイルを指定する場合には-Cオプションを使用します。
Example 4. 既定値とは異なるファイルを設定ファイルとして指定する例
# pkg_comp -C /etc/pkg_comp/default.conf maketemplate
pkg_compを使用して作成した設定ファイルには1か所、現在のNetBSDには合っていない部分があります。 X11のNetBSDリリース配布物を指定する部分でxmisc.tgzというファイルが指定されているのですが、このファイルは現在のNetBSDリリース配布物には存在しません。 そのため、作成した設定ファイルを以下の例の通り変更する必要があります。
Example 5. 設定ファイルの変更例
--- default.conf.orig 2005-05-15 18:25:05.000000000 +0000
+++ default.conf 2005-05-13 23:25:56.000000000 +0000
@@ -26,7 +26,8 @@
REAL_SRC_OPTS="-t null -o ro"
ROOTSHELL="/bin/ksh"
SETS="base.tgz comp.tgz etc.tgz kern-GENERIC.tgz text.tgz"
-SETS_X11="xbase.tgz xcomp.tgz xetc.tgz xfont.tgz xmisc.tgz xserver.tgz"
+#SETS_X11="xbase.tgz xcomp.tgz xetc.tgz xfont.tgz xmisc.tgz xserver.tgz"
+SETS_X11="xbase.tgz xcomp.tgz xetc.tgz xfont.tgz xserver.tgz"
SYNC_UMOUNT="no"
UMOUNT_HOOKS=""
pkg_comp用chroot環境の作成
pkg_comp用chroot環境を作成するディレクトリとして/var/chroot/pkg_compを作成します。 そして、pkg_compを使用してpkg_comp用chroot環境を作成します。
Example 6. pkg_comp用chroot環境を作成する例
# mkdir /var/chroot/pkg_comp
# pkg_comp makeroot
pkg_compを使用したバイナリパッケージの作成
pkg_compのセットアップが完了すると、pkg_compを使用してバイナリパッケージの作成ができます。
Example 7. pkg_compでバイナリパッケージを作成する例
# pkg_comp build sysutils/grub
バイナリパッケージは/usr/pkgsrc/packages/Allに作成されます。