入口
  src
  /usr/pkgsrc
    を準備する
  実行形式
    【パッケージ関係の操作】
    【pkg_info】
    packages directory
    i386 の場合
      nyftp.netbsd.org
      ftp.netbsd.org
      ftp.jp.netbsd.org
      ftp2.jp.netbsd.org
    NetBSD-5.0 の場合
    ftp mirrors
  pkg_add
  PKG_PATH
  依存関係
  PKG_PATH
    packages 一覧
    amd64/5.0
    i386/5.0
    powerpc/5.0
    i386/4.0
    amd64/4.0
    PowerPC/3.1
    PowerPC/4.0
    環境変数前
    環境変数の設定
    【Gimp】
  pkg_info
    -u
  pkg_delete
    required
      -f
      -r
pkgsrc
    依存関係
    README.html
    探す方法
    情報 - pkg_info
    展開位置
    bootstrap-pkgsrc
    target of make
    各論
  自分で用意する
    files
    debug
    PLIST
    distinfo
  mk
  pkgtools
    bulk build
    wip
bulk build
  pbulk
  pbulk
    1. 配置
    2. 準備
      bootstrap
      pbulk install
    3. configure
      /etc/mk.conf
      pbulk.conf
    4. running
wip
    PKG_OPTIONS
  upgrade
tips
   debug
  DO_NADA
  mk.conf
URL

| NetBSD 解説 | sysinst | macppc | TsubaiBSD | pkgsrc 各論 | packages | 絹/software/全文検索
at www.ki.nu

NetBSD/packages

Last Update: "2014/10/01 23:58:24 makoto"
Distributed chrooted pkgsrc bulk builds (by J. Perkin, Jul 24, 2013)
http://www.perkin.org.uk/posts/distributed-chrooted-pkgsrc-bulk-builds.html
実際に chroot で試した時の記録 (2012/03/13 の日記)
http://www.ki.nu/~makoto/diary/2012/03/13/
初めての pbulk
http://www.ki.nu/~makoto/diary/2011/10/03/1.html
pbulk HOWTO (in English)
/usr/pkgsrc/doc/HOWTO-pbulk

pbulk

bulk build を使うと、ある arch 向けに全ての package を make package します。 pbulk はその bulk build に代わる新しい道具です。いくつもの機械を 並列的に動かして make package してくれるので、時間を短縮出来ます (一台だけでも実行可能です)。

bulk build にせよ、pbulk にせよ、ちょっとは覚悟が必要です。 それは /usr/pkg を全て消すことが必要 (消してしまう)からです。 つまり、おそらく専用の機械が必要になるはずです。 或いは、 chroot 環境を作る のも良いかと思います (と言いますか、それが普通でしょう)。

  • 開始
    構想を練る (理解する) → 配置を決める
  • 準備
    1. pkgsrc の枠 (例 /usr/pkgsrc) を用意する
    2. /usr/pkg_bulk
      (/usr/pkg は bulkbuild を実行する時に、消されてしまうので)
      bootstrap を使って、実行環境を別に (/usr/pkg_bulk に) 用意する。
    3. pbulk
      (新しい環境 = pkg_bulk 側に) pbulk を make package する。 (もしあれば) pbulk 実行時に必要な道具も同様に用意する (一例 sendmail)
    4. /usr/pkg_bulk/etc/mk.conf (pbulk 実行用)
      /etc/mk.conf (目的側設定)
      pbulk.conf
      を設定する
  • 実行
    /usr/pkg_bulk/bin/bulkbuild を実行する
上記 URL の HOWTO を読むと、いきなり配置の話から始まるのでびっくりしますが、 事実それは大切 (複雑)です。もっとも、一台で試す時には、 あまり真剣に考えなくても大丈夫とも言えるかと思います。

1. 配置

pbulk に必要な資源には、NFS を用いて共有するもの (shared)、 各機械毎に写しが必要なもの(per node) 、 親となる機械 での設定の三通りがあります。
ITEM (VARNAME) PATH (example)
shared
meta data and log /bulklog R/W メタ情報・記録
(source) /usr/pkgsrc make 基盤
PACKAGES /packages R/W 完成品(目的物) = バイナリパッケージ
DISTDIR /distfiles R/W 原配布
per node
WRKOBJDIR /scratch R/W make 作業域
/usr/pkg 一時設置先。依存 binary など (実行の毎に消される)
/var/db/pkg 一時設置資料。何を作ったかなどの情報 (同上)
ここから下は実行用の道具
LOCAL_BASE /usr/pkg_bulk copy
PKG_DBDIR /usr/pkg_bulk/.pkgdb

2. 準備

bootstrap
準備その一に挙げた bootstrap は「何もないところで pkgsrc」です。今回は、全く新規に環境を用意する形 をとるので、
(/usr/pkgsrc を準備しておいてから)
(例えば) /usr/pkg_bulk と /usr/pkg_bulk/.pkgdb に pkgsrc 用の実行環境を(もう一度)用意します。上の表の最後の方の部分です。
cd /usr/pkgsrc/bootstrap ; ./bootstrap --prefix=/usr/pkg_bulk --pkgdbdir=/usr/pkg_bulk/.pkgdb
上記 --prefix や --pkgdbdir は変更したくなるのですが、自由度は高くないので、 このままで試した方が良いと思います。
pbulk install
試しにどのようなものか見たいということであれば、次のようにすると一応設置は可能です (これは powerpc の例です)。 To look inside: ftp://ftp.ki.nu/packages/4.0/powerpc/All/pbulk-0.17.tgz
typ0:makoto@pismo 13:01:04/080427(~)> sudo pkg_add \ ftp://ftp.ki.nu/packages/4.0/powerpc/All/pbulk-0.17.tgz tar: ustar vol 1, 35 files, 194560 bytes read, 0 bytes written in 1 secs (194560 bytes/sec) tar: ustar vol 1, 18 files, 368640 bytes read, 0 bytes written in 1 secs (368640 bytes/sec) pbulk-0.17: copying /usr/pkg/share/examples/pbulk/pbulk.conf to /usr/pkg/etc/pbulk.conf ttyp0:makoto@pismo 13:01:40/080427(~)>
実際に準備する場合には、先ほど bootstrap で用意した環境を使って make package をしますが、 もし以前に同様に bootstrap をしたことがあるなら、それは全て消しておきます。
rm -rf /usr/pkg_bulk
bootstrap で用意した環境を使って pbulk を make package-install します。
cd /usr/pkgsrc/pkgtools/pbulk ; env PATH=/usr/pkg_bulk/bin:/usr/pkg_bulk/sbin:${PATH} bmake package-install
その後で
m09# env PATH=/usr/pkg_bulk/bin:/usr/pkg_bulk/sbin:${PATH} pkg_info
して見ると次のようなものが入っています。(zsh/m4/sendmail は別途追加しています)。
bootstrap-mk-files-20090807nb2 *.mk files for the bootstrap bmake utility
bmake-20110606      Portable (autoconf) version of NetBSD 'make' utility
pkg_install-20110805 Package management and administration tools for pkgsrc
digest-20080510     Message digest wrapper utility
zsh-4.3.12          The Z shell
m4-1.4.16           GNU version of UNIX m4 macro language processor
sendmail-8.14.5     The well known Mail Transport Agent
perl-5.14.1         Practical Extraction and Report Language
rsync-3.0.8         Network file distribution/synchronisation utility
pbulk-base-0.43     Core components of the modular bulk build framework
pbulk-0.48          Modular bulk build framework
この結果
/usr/pkg_bulk/etc/mk.conf
も作られます。 これには LOCALBASE と PKG_DBDIR が正しく設定されているはずです。
/usr/pkg_bulk/etc/pbulk.conf
も用意されます。この時点で、次の二つは全く同じものなので、後者 は気兼ねなく編集可能です。
/usr/pkg_bulk/share/examples/pbulk/pbulk.conf 
                 /usr/pkg_bulk/etc/pbulk.conf

3. configure

/etc/mk.conf
pbulk.conf
/usr/pkg_bulk/etc/pbulk.conf

4. running

実行するには
/usr/pkg_bulk/bin/bulkbuild
と入力します。時間が何日とかかるはずなので screen の内側 で実行することをおすすめします。

もし中断したような時には /usr/pkg_bulk/bin/bulkbuild-restart が使えます。

> /usr/pkg_bulk/bin/bulkbuild Warning: All log files of the previous pbulk run will be removed in 5 seconds. If you want to abort, press Ctrl-C. /usr/pkg_bulk/libexec/pbulk/pre-build: /usr/pkg/bin/bmake: not found m09#
m09@root 07:43:18/111004(..pkgtools/pbulk)% /usr/pkg_bulk/bin/bulkbuild Warning: All log files of the previous pbulk run will be removed in 5 seconds. If you want to abort, press Ctrl-C. Scanning... /usr/pkg_bulk/libexec/pbulk/scan: /usr/pkg_bulk/bin/pbulk-scan: not found m09@root 07:43:40/111004(..pkgtools/pbulk)%
これは pkgtools/pbulk-base が正しく make package-install されていないのが理由。 pkg_xxx は通常のものでなくて、次のように /usr/pkg_bulk/{s,}bin に入っているもの を使う。
m09@root 09:01:16/111004(..pkgtools/pbulk-base)% \ env PATH=/usr/pkg_bulk/bin:/usr/pkg_bulk/sbin:${PATH} pkg_info bootstrap-mk-files-20090807nb2 *.mk files for the bootstrap bmake utility bmake-20110606 Portable (autoconf) version of NetBSD 'make' utility pkg_install-20110805 Package management and administration tools for pkgsrc digest-20080510 Message digest wrapper utility rsync-3.0.8 Network file distribution/synchronisation utility pbulk-base-0.43 Core components of the modular bulk build framework pbulk-0.48 Modular bulk build framework
Building SHA512... xargs: /usr/pkg/bin/digest: No such file or directory Build reports... Sending report mail... -s: not found
僕の場合、メールには pkgsrc の sendmail を使っているが、 これだと消されてしまうので問題がある。それで、m4 と sendmail も、次のように して pkg_bulk 側に入れておく。
(cd /usr/pkgsrc/devel/m4; \ env PATH=/usr/pkg_bulk/bin:/usr/pkg_bulk/sbin:${PATH} bmake package-install ); (cd /usr/pkgsrc/mail/sendmail; \ env PATH=/usr/pkg_bulk/bin:/usr/pkg_bulk/sbin:${PATH} bmake package-install );
この時に、次のようにしておくことも重要
cp /usr/pkg_bulk/share/examples/sendmail/mailer.conf /etc/mailer.conf
xargs: /usr/pkg/bin/digest: No such file or directory Build reports...
これは次の部分が問題
/usr/pkg_bulk/etc/pbulk.conf:digest=/usr/pkg/bin/digest
Last Update: Wed, 15 Oct 2014 04:09:47 GMT 1.66 2008/03/08