NetBSDでは、pkgsrcという仕組みを使って様々なsoftwareを用意できます。四 半期ごとに安定版が出ていますので、それを取ってきましょう。
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-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
Packageを作成するために必要な設定と、 最低限必要なpackageを作成します。 /usr/pkgsrc/bootstrapに scriptが入っているので以下のように走らせます。 しばらくかかりますが、bmake や pkg_install などが作成されます。
# cd /usr/pkgsrc/bootstrap # ./bootstrap --sysconfdir /etc ...
ここまで準備できたら、実際にpackageを作ってみましょう。Packageの作成は 簡単で、/usr/pkgsrc/*/* で、"make install; make package" としてしばらく待つだけです。 makeが終わると、/usr/pkgsrc/packages/Allにpackage が出来上がっています。
実際の例として、apache-2.2を作成してみます。
# 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を行いたい場合、/etc/mk.confに設定を書き ます。書き方は、/usr/pkgsrc/mk/defaults/mk.confや The pkgsrc guideの 5章 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に書きます。
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_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 ...