pkgsrcを使う

NetBSDでは、pkgsrcという仕組みを使って様々なsoftwareを用意できます。四 半期ごとに安定版が出ていますので、それを取ってきましょう。

chroot環境の用意

USL-5P内蔵のCompactFlashでpackageを作ると次のような問題が出てきます。

ということで、packageを作る場合は、外付けHDDをUSB経由で繋ぎ、chrootして 作業するのが良いでしょう。

NetBSDをinstallで行ったことと同じことを USB-HDDに対して行います。disklabel, newfsを行った後、base.tgz, comp.tgz, etc.tgz, kern-GENERIC.tgz, man.tgz, misc.tgz, text.tgzを展開 します。

# disklabel -I -i /dev/rsd0d
...
# newfs -m 5 /dev/rsd0a
...
# mount -o log /dev/sd0a /mnt
# cd /mnt
# tar xfvzp /sets/base.tgz
...
# tar xfvzp /sets/comp.tgz
...
# tar xfvzp /sets/etc.tgz
...
# tar xfvzp /sets/kern-GENERIC.tgz
...
# tar xfvzp /sets/man.tgz
...
# tar xfvzp /sets/misc.tgz
...
# tar xfvzp /sets/text.gz
...
# cd /mnt/dev
# ./MAKEDEV all

続いて、swapをUSB-HDDへ入れ替えます。

# swapctl -d /dev/wd0b
# swapctl -a /dev/sd0b

また、設定類をchoot環境へと複製します。

# cp /etc/resolv.conf /mnt/etc
# cp /root/.profile /mnt/root

最後にchrootを呼んでUSB-HDDのchroot環境へ移動します。試しにdfしてみると、 root filesystemが/dev/sd0aにあるように見えます。 作業後にchroot環境から戻るには、exitすればよいです。

# chroot /mnt
#
# df -h
Filesystem        Size       Used      Avail %Cap Mounted on
/dev/sd0a         109G       5.0G        99G   4% /
#
(...chroot環境での作業...)
# exit

以下の節では、chrootしたものとして説明を書きます。

pkgsrcの展開

取得した"pkgsrc-2008Q4.tar.bz2"を以下のようにして/usr以下に展 開します。Security fixなどがされていることもあるので、展開後とりあえず cvs updateしておきましょう。

# ftp ftp://ftp7.jp.netbsd.org/pub/pkgsrc/pkgsrc-2008Q4/pkgsrc-2008Q4.tar.bz2
# cd /usr
# tar xfvjp somewhere/pkgsrc-2008Q4.tar.bz2
...

# cd /usr/pkgsrc
# cvs update -dP | tee update.log

bootstrap

Packageを作成するために必要な設定と、 最低限必要なpackageを作成します。 /usr/pkgsrc/bootstrapに scriptが入っているので以下のように走らせます。 しばらくかかりますが、bmake や pkg_install などが作成されます。

# cd /usr/pkgsrc/bootstrap
# ./bootstrap --sysconfdir /etc
...

Packageの作成

ここまで準備できたら、実際にpackageを作ってみましょう。Packageの作成は 簡単で、/usr/pkgsrc/*/* で、"make install; make package" としてしばらく待つだけです。 makeが終わると、/usr/pkgsrc/packages/Allにpackage が出来上がっています。

実際の例として、apache-2.2を作成してみます。

apacheの作成

# cd /usr/pkgsrc/www/apache22
# make install
...
# make package
...

make packageすると、apache-2.2だけでなく、apache-2.2に必要なaprやperlと いったpackageも同時に作られます。makeが完了すると、 /usr/pkgsrc/packages/Allにapache-2.2.11.tgzなどができています。 installはpkg_addで行います。

# pkg_add /usr/pkgsrc/packages/All/apache-2.2.11.tgz
...

Build optionの変更

標準設定から設定を変更してbuildを行いたい場合、/etc/mk.confに設定を書き ます。書き方は、/usr/pkgsrc/mk/defaults/mk.confや The pkgsrc guide5章 Configuring pkgsrc あたりを参考にします。

Package毎にどんな設定を変更できるか調べるためには、"make show-options"を使います。

例として、subversionで設定を変更してみます。

# cd /usr/pkgsrc/devel/subversion
# make show-options
Any of the following general options may be selected:
        apache22
        apr1
        java     Enable Java support.
        sasl     Enable SASL support.
        serf

These options are enabled by default:
        apr1

These options are currently enabled:
        apr1

You can select which build options to use by setting PKG_DEFAULT_OPTIONS
or PKG_OPTIONS.subversion.
#

最終行から、subversionの設定は"PKG_OPTIONS.subversion"を書け ば良いことが分かります。また、設定できる項目は、"apache22"、 "apr1"、"java"、"sasl"、"self" であることがわかります。
apache-2.2を使う場合は、"PKG_OPTIONS.subversion = apache22"を mk.confに書きます。

mk.confの例

OPTIMIZE              ?= -Os

PKG_DBDIR              = /var/db/pkg
LOCALBASE              = /usr/pkg
VARBASE                = /var
PKG_SYSCONFBASE        = /etc
PKG_TOOLS_BIN          = /usr/pkg/sbin
PKGINFODIR             = info
PKGMANDIR              = man
PKG_RCD_SCRIPTS        = yes

MANZ                   = yes
CFLAGS                += ${OPTIMIZE} -m4-nofpu
CXXFLAGS              += ${OPTIMIZE} -m4-nofpu

APACHE_MPM             = worker
APACHE_MODULES         = access alias auth autoindex cgi dav dav_lock
APACHE_MODULES        += deflate dir env include log_config mime mime_magic
APACHE_MODULES        += negotiation setenvif so ssl status

PKG_OPTIONS.bogofilter = qdbm
PKG_OPTIONS.subversion = apr1
PKG_OPTIONS.git        = -python
PKG_OPTIONS.lighttpd   = ssl
PKG_OPTIONS.samba      = pam
PKG_OPTIONS.maildrop   = -authlib

BDB_DEFAULT            = db5
MECAB_CHARSET          = utf8
USE_BUILTIN.openssl    = yes
PYTHON_VERSION_DEFAULT = 33
RUBY_VERSION_DEFAULT   = 200
RUBY_BUILD_RDOC        = no

CompactFlashへのpkg_install

CompactFlashへpkg_addするには、chroot環境から抜けてからpkg_addすればよ いだけです。CompactFlashから見ると、出来上がったpackageは /mnt/usr/pkgsrc/packages/Allにあるので、次のようにしてpkg_addします。

# pkg_add /mnt/usr/pkgsrc/packages/All/apache-2.2.11.tgz
...

ご意見、ご感想は、花房 真広 <webmaster@hanabusa.net>まで。メールする前にtop pageの注意書を読んでください。