共有pkgsrc環境

NetBSD/amd64だけでなくSolaris/sparcでもかなり順調にインストールが進む 領域が増えてきた。巨大アプリはもうpkgsrcに任せちゃえモードにシフト。

で,pkgsrcの強みは,マルチプラットフォームで同じ設定でいけること。 同一セグメントにあるマシンでは pkgsrc とか distfiles はnfsで共有したい。

もいっこ。たとえばなんらかのパッケージのupdateをするときに, 関連するものが全部上がっちゃうのをよしとしないケースがある。 てか,ユーザが常に付いている環境では勝手に上がったら困る。 てなとき,慎重に事を進めるならたとえばこうするだろう。

  1. テストマシンで最新pkgsrcで再構築 → OK
  2. 実マシンにコピー

が,実マシンで動かして初めて気づくトラブルとかがある。そしたら 古いpkgツリーに戻したい。そんな心配をするときは,prefix(LOCALBASE)を 変えてインストールしておけば,戻したり進めたりが一瞬で終わる。

以上2点を考慮した構成でpkgツリーを構築する。pkgsrc/ を持って来たら pkgsrc/bootstrap/

./bootstrap --workdir=/opt/pkgwork --prefix=/opt/PK201104/pkg

でき上がったら ln -s /opt/PK2011.04/pkg /opt/pkg して ユーザのコマンドサーチパスには /opt/pkg/*bin あたりを追加する。 pkg構築作業でもそれを先に追加しておく。

で,/opt/pkg/etc/mk.confを開き,以下のようにする。

PKG=                    /opt/PK2011.04/pkg

LOCALBASE=              ${PKG}
PKG_DBDIR=              ${PKG}/var/db/pkg
VARBASE=                ${PKG}/var
PKG_TOOLS_BIN=          ${PKG}/sbin
PACKAGES=               ${PKG}/packages
DISTDIR=                /opt/distfiles
WRKOBJDIR=              /opt/pkgwork  

PKGMANDIR=              man

X11_TYPE=               native
ACCEPTABLE_LICENSES+=lame-license
ACCEPTABLE_LICENSES+=flash-license
MAKE_JOBS=              2

追加したのは DISTDIR, PACKAGES, WRKOBJDIR で, DISTDIR と pkgsrc ディレクトリはNFSの共有場所に しておくと効率的。pkgsrcディレクトリなんかは read-only マウントにして おいてもいいかも。

pkgsrc kde4

meta-pkgs/kde4 途中でこける。こんな感じ。

-----------------------------------------------------------------------------
-- The following REQUIRED packages could NOT be located on your system.
-- You must install these packages before continuing.
-----------------------------------------------------------------------------
   * DocBook XSL  <http://docbook.sourceforge.net/release/xsl/current/>
     Stylesheets for processing DocBook XML
     Needed for building the KDE help system.
  :
  :

PREFIXが /usr/pkg 決めうちになってるせいらしい。

work/kdelibs-4.5.5/cmake/modules/FindDocBookXML.cmake
work/kdelibs-4.5.5/cmake/modules/FindDocBookXSL.cmake

これらを直す。

find_path (DOCBOOKXSL_DIR lib/lib.xsl
   PATHS ${CMAKE_SYSTEM_PREFIX_PATH}

ってところに LOCALBASE となっているディレクトリを追加。 今回はこんな風にした。

find_path (DOCBOOKXSL_DIR lib/lib.xsl
   PATHS ${CMAKE_SYSTEM_PREFIX_PATH} /opt/pkg

これで行けた。