Akaumigame Dot Org

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環境の作成に必要なファイル

入手したファイルは展開せずに/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に作成されます。