Unix
 Property List Editor
  環境変数
  Daemon 起動
 X
 Jterminal
 IPv6
  利用可
  利用不可
 automount
  Panther
  Jaguar
  10.1.x
packages
 Fink
 Darwin Ports
 bootstrap-pkgsrc
   大・小文字を区別する FS
   外付の Firewire
   内蔵の区画し直し
   binary か src か
  src の場合
   bashrc
  pkgsrc
  各論
  問題
   debug
   以前に用意した情報
  20071007
   X-Code
   /cvslock
   ./bootstrap
   package が作れない
  pkg_create
  HFS+ Case Sensitive
 Darwin Ports
Emacs
  Carbon
  Aqua
  XDarwin
  その他
 Emacs/cvs
  texinfo
  cvs co
  inline image patch
  patch が当らない
   当たると分っている
  image + im
  ことえり準備
  ことえり
 emacs-w3m
  w3m
  emacs-w3m
 wl
 Canna
  tamago
   Canna
 FreeWnn
 anthy
 Mail
 Network
 Namazu
 kakasi
Server
 Java
 QTSS
 PostgreSQL
 WebObjects
URL
 Apple
 URL/tips
 books
  backup

Mac OS X

Last Update: "2010/06/23 16:31:52 makoto"

bootstrap-pkgsrc

NetBSD 上にアプリケーションプログラムを用意する方法として pkgsrc というものがあります。NetBSD の場合、OS 設置直後に入っている ものはとても少ないので、この pkgsrc は必需品です。 例えば perl も apache も emacs も入っていないのですが、 この pkgsrc を使えば、とても簡単に入ってしまいます。 2005/02 現在で 5,300 くらいのアプリケーションが用意されて います。

この便利な pkgsrc を一度使ってしまうと、 他の OS でも同じものが使いたくなります。そのような時のために、 用意されているものがあります。 その時に最初に使うのが bootstrap-pkgsrc です。 意味としては、「何もないところでも pkgsrc」ということです。 これを使うと (/usr/pkg/sbin 以下に) pkg_add, pkg_info pkg_delete などと、BSD 用の make である bmake を入れてくれます

NetBSD 以外で使う時のしくみが bootstrap-pkgsrc ですが、その先は NetBSD と共通になります。 つまり実際の操作(設置作業) としては、bootstrap-pkgsrc と pkgsrc の両方が必要になります。
参考:

Mac OS X 10.4.1 で pkgsrc (ポータブルな NetBSD パッケージシステム)を使う (深町さん)
http://www.fml.org/home/fukachan/ja/macosx.pkgsrc.html
MacOSXでpkgsrc (2006/08/27) -- 森島さん
http://www.morishima.net/~naoto/fragments/archives/2006/08/27-0007.php
NetBSDのパッケージ管理システム / NetBSDだけではなく,Mac OS X?やOpenBSDでも使える.
http://www.kono.cis.iwate-u.ac.jp/~hiki/?pkgsrc
あるPC-AT屋の日記
http://www.fastwave.gr.jp/diarysrv/fy/200506b.html#20050612-2
pkgsrc を Mac OS X の上で使う場合、次のような準備が必要です。 (と書いていましたが、どうも最近は、 大・小文字を区別しないファイル・システムでも大丈夫 らしいです)
Re: pkg/26211 (Darwin bootstrap: case-sensitive HFS+ can be used)
http://mail-index.netbsd.org/pkgsrc-bugs/2010/02/23/msg036584.html
ここには、そうは書いていないですけれども:
http://wiki.netbsd.se/How_to_use_pkgsrc_on_Mac_OS_X#Bootstrapping_Mac_OS_X
bootstrap 手続に
[ --ignore-case-check ] 引数があります
(おそらく次の緑文字の部分は情報が古く必要がないと思います)

大・小文字を区別する FS

pkgsrc は、大文字と小文字を区別するファイルシステムが必須です。 Mac OS X で良く使われている HFS+ (Mac OS 拡張形式)では、 大小文字を区別しないため、そのままでは使えません。 いくつかの方法があります。 10.3 (以降)の場合には次のようなことが考えられます。
  1. ディスクユーティリティを使って大文字小文字を区別する HFS+ の区画を作る
  2. ディスクユーティリティを使って UFS 形式の区画を作る
  3. ufsdiskimage を使って UFS 形式のディスク・イメージを作る
  4. ディスクユーティリティの裏で動いている hdiutil を使って変更する http://journal.mycom.co.jp/column/osx/090/
3. の方は、例えば bootstrap-pkgsrc に含まれている ufsdiskimage を使い、 次のような操作をして仮想的な Volume を作ります。
./ufsdiskimage create ~/Documents/NetBSD 3072 ( /usr/pkg, /usr/pkgsrc に 3G 割当) ./ufsdiskimage mount ~/Documents/NetBSD

1. か 2. の場合は、Mac OS X を設置する時に、予め区画を 作っておく必要があります。

10.4 Tiger からは、ディスクユーティリティの選択が増えました。

形式 略称
MacOS 拡張 HFS+
MacOS 拡張(ジャーナリング) HFS+(J)
MacOS 拡張(大文字、小文字を区別、ジャーナリング)HFS+大小(J)
MacOS 拡張(大文字、小文字を区別) HFS+大小
MacOS 標準 HFS
UNIX ファイルシステム UFS
余分に用意してある区画については、 中を消してしまっていいなら、最初から UFS である必要はありません。 どの形式でも、ディスク・ユーティリティを使って、その区画を 指定し、「消去」を選ぶと、形式をその時に選ぶことが出来ます (ただし、この項の説明が有効なのは Panther 10.3 以降です)。

しかし、 おそらく多くの場合には、単一区画で設置していて、 区画を分けているということは していないと思います。もちろんもう一度初めから入直す ならば問題なく可能です。 もし、そのように、 単一区画に Mac OS X が入っている場合で、それを入直す ことを考えられない時には、前者の 3. しか選択はありません。 これはこれで気が楽なので、一つの方法だと思います。 結局のところ、まとめると、次のようになります。

区画数 起動pkgsrc特徴・問題現実問題としてpkgsrc(例)
2 HFS+HFS+大小確実 /usr/pkg -> /Volume/pkg
2 HFS+UFS (ちょっと遅いか) /usr/pkg -> /Volume/pkg
1 HFS+大小 一番簡単、ただし無保証藤原はこれを使っています(ジャーナリング) /usr/pkg
この中で、 「無保証」と書いてある意味 ですが、Mac OS X の説明を読むと、HFS+大小を起動 disk にはしない方がいい と書いてあります。 実際、例えば、World of Warcraft というゲームのインストールが出来なかったという話を聞いたことがあります。

しかし考えようによっては新しい区画を用意するのに、別の方法もあります。

外付の Firewire
Firewire disk をつないでそれをまるごと UFS にするというのも便利かも 知れません。つないでおいてから、ディスク・ユーティリティを使って UFS 形式で初期化します。 実は 2005/03 に bulk build をした時 には、その方法を使いました。
内蔵の区画し直し
Mac OS X には asr (Apple Software Restore) という便利な道具があります。 これは次のようにすると、/ に入っているものを、そのままそっくり 他の disk に、起動可能な形で写してくれるものです(man asr 参照)。
sudo asr --source / --target /Volume/backup -erase
もし、 Firewire の外付 disk というものを 利用出来るなら、この方法で一度別のところに写して、 その写した外付から起動が出来ますので、その中の 「ユーティリティ → ディスク・ユーティリティ」を使って、 内蔵側を区画し直し、その後で外から内に戻すというようにすれば、 既に設置済のものを失うことなく、内蔵の disk の区画を変更することも 可能になります。

この原稿を用意している時には UFS の区画には 3G を当てています (OS 本体が 17 G くらいです)。 ディスク・ユーティリティでは、UFS という名前は UNIX ファイルシステムと呼ばれます。

それだったら、初めから全部 UFS にしてしまっては ? と思われるかも知れませんが、性能的には HFS+ の方が上な ので、おそらく全てを UFS にはしない方がいいと思います。

binary か src か

bootstrap-pkgsrc にも pkgsrc にも 実行形式(binary) かソース (src) のどちらを使うかという選択があります。ただ、実行形式は用意 されていないものもあるので、全く自由な選択ではありません。
  1. bootstrap-pkgsrc の実行形式は
    ftp://ftp.netbsd.org/pub/NetBSD/packages/bootstrap-pkgsrc/ (not found)
    にありました。また
    ftp://ftp.jp.netbsd.org/pub/NetBSD-jp/mirror-status/packages.html
    に一覧があるので、これを見て、
  2. src の方は pkgsrc/bootstrap にあります。
今回の Mac OS X の場合、ソースから作る方を紹介します。

binary を使うなら、 ftp://ftp.netbsd.org/pub/NetBSD/packages/bootstrap-pkgsrc/ (not found now)
にある、
bootstrap-pkgsrc-Darwin-7.6.0-powerpc-20041219.tar.gz
を使います。これは 10.3.6 用ですが、それ以降でも使えるかも知れません。 10.3.6 では uname -sr で Darwin 7.6.0 の表示がありますが、その名前に合せて あります。10.3.7 の場合には次のような表示があります。

d169:~ makoto$ uname -sr Darwin 7.7.0 d169:~ makoto$
この実行形式は展開すると、usr 以下に開きます。

ただ、現時点で、binary を使う利点はあまり思い着きません。 pkgsrc の実行形式が多く用意されていれば、一切コンパイルする することなしに、パッケージ・システムを利用出来ますが、 現状では自分でコンパイルすることが必要なので、ここだけ実行形式 のものを利用することに何も利点がないという意味です。

とは言うものの 2005/03 に 2,200 くらい用意しました → ftp://ftp.ki.nu/packages/powerpc-apple-darwin/7.8.0/All/

src の場合

実は、bootstrap-pkgsrc を src から作る場合に必要なものは 他の pkgsrc と全く同じところに入っています。 このため、bootstrap-pkgsrc を入れる場合にも、まず、 pkgsrc 全体(スケルトンと呼ぶ人もいます) を持って来ます。 これにはいくつも方法があるので、 別に書いて おきます ( source の取得 )。簡単な例だけを一つ示します。 ここで参考になるのは次の URL です。 http://www.jp.netbsd.org/guide/en/chap-cvs.html

ここでは UFS の区画に p という名前を付けているとします (Mac OS X では区画の名前は、かなり自由に変えられます)。 それは /Volumes/p という名前で参照出来ます。

まず その /Volumes/p を自分の持物にしておきます。 その後は cvs を使って anoncvs サーバから pkgsrc のスケルトン(枠) をもらって来ます。

cd /Volumes/p sudo chown `id -u`:`id -g` . cvs -d :pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot co pkgsrc
上の最後の行を入力する時のことですが、 もしモデムを使っていて、 回線が遅いという場合には、その代りに、 次のようにして -z3 などを付けて圧縮するようにした方がいいかも 知れません。
cvs -z3 -d :pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot co pkgsrc
これらにはとても時間がかかります。また画面上にも多くの行が表示されます。 それを記録して、後からゆっくり確めたいということであれば、
cvs -d :pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot co pkgsrc 2>err 1>log &
などとするのもいいかも知れません(これは bash の場合です)。

NetBSD の pkgsrc では、実行形式は /usr/pkg/bin に置きます。 それに相当するもののディレクトリを作っておきます。 また、 ここでは /Volumes/p という名前を使っていますが、 その二つをシンボリック・リンクを使って結びつけておきます。

sudo mkdir /Volumes/p/pkg sudo ln -s /Volumes/p/pkg /usr/pkg
持って来た pkgsrc の中の pkgsrc/bootstrap で 次のように入力します
cd /Volumes/p/pkgsrc/bootstrap sudo ./bootstrap \ --prefix=/Volumes/p/pkg \ --pkgdbdir=/Volumes/p/pkgdb \
もし /usr/pkg などが次のようなままで良いなら、--prefix, --pkgdbdir 等は不要です。つまり、/usr や /var が case sensitive file system に あり、開き容量が充分あれば、という意味です。
prefix    /usr/pkg
pkgdbdir  /var/db/pkg
もし bootstrap なんか知らない (bootstrap: command not found) と言われた時には
cd /Volumes/p/pkgsrc/bootstrap sudo sh bootstrap \ --prefix=/Volumes/p/pkg \ --pkgdbdir=/Volumes/p/pkgdb \
のように sh から bootstrap を呼ぶようにして下さい。/usr/pkgsrc で作業している のであれば、
cd /usr/pkgsrc/bootstrap sudo sh bootstrap
のようになります。

これにより、/Volumes/p の中には次の三つの directory が出来ています。

ディレクトリ 内容 リンクなど
pkg bin (実行形式) ← /usr/pkg/bin
sbin (pkg 用の道具) ← /usr/pkg/sbin
pkgdb データベース
pkgsrc source、build の作業域

これで /usr/pkg/sbin 以下に pkg_add などが用意されます。 PATH 変数に /usr/pkg/bin と /usr/pkg/sbin を追加しておきます。

export PATH=/usr/pkg/bin:/usr/pkg/sbin:$PATH
bashrc
次に ターミナル の窓を開けた時にも、 PATH 変数が設定されているようにするには ~/.bashrc と ~/.bash_profile に 設定します。
~/.bashrc:
PATH=/Volumes/p/pkg/bin:/Volumes/p/pkg/sbin:${PATH}
~/.bash_profile
#!/bin/bash
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

pkgsrc

後は 必要だと思った pkgsrc の下で BSD の make である bmake を使って、
bmake sudo bmake install sudo bmake package-install
などとするだけです。あるいはその前に
sudo bmake package
とすると、install はしないで、package を作ってくれるだけです。 初めから sudo make package とする方が便利かも知れません。 後者は実行形式のパッケージを /Volumes/p/pkgsrc/packages/powerpc/All に 作ってくれます(ここに powerpc/ という字が入るかどうかは /etc/mk.conf /usr/pkg/etc/mk.conf の PACKAGES 変数の設定によります)。 入れたものが要らなくなったら
pkg_delete -f jless
のようにして消します。パッケージが作ってあれば、
cd /Volumes/p/pkgsrc/packages/powerpc/All に pkg_add jless*
のようにして、また追加することが出来ます。

各論

各 pkgsrc については(まだ本当に少ししかありませんが)、 pkgsrc 各論 に書いてあります。また、pkg_add, pkg_delete などに ついては NetBSD 解説一部 付近 にも書いてあります。

問題

例えば lang/perl58 で make した時に、
===> *** '/usr/pkg/sbin/download-vulnerability-list'.
===> Creating toolchain wrappers for perl-5.8.6nb2
/bin/sh: -c: line 1: syntax error near unexpected token `)'
*** Error code 2
となることがあります。これは Makefile の変数 X11BASE が空 になっているためです。NetBSD などでは /usr/X11R6 などのよう に設定されているのですが Mac OS X では今のところ未定義に なります。これは /etc/mk.conf /usr/pkg/etc/mk.confに
X11BASE= /usr/X11R6 
と書いておけば、解決します。

debug

pkgsrc は、それなりに良く考えられている仕組みですが、 その分、理解するのも、問題が起きたときの解決も、ちょっと 手間がかかります。
make make install
などで問題が起きた場合、 pkgsrc/mk/bsd.pkg.mk に書いてある次の部分を参考にします。
# Debugging levels for this file, dependent on PKG_DEBUG_LEVEL definition
# 0 == normal, default, quiet operation
# 1 == all shell commands echoed before invocation
# 2 == shell "set -x" operation
PKG_DEBUG_LEVEL?=       0
_PKG_SILENT=            @
_PKG_DEBUG=             # empty
_PKG_DEBUG_SCRIPT=      # empty
そうして、例えば、 /etc/mk.conf /usr/pkg/etc/mk.conf に
PKG_DEBUG_LEVEL?=       1
と書いたり、
_PKG_SILENT=            # was @ here
のようにすると、Makefile の動きが少し見えます。

以上について、 御意見・御質問がありましたら makoto at ki dot nu までお送り下さい。

以前に用意した情報
以下の情報は微妙に情報が古いと言われています。
代りに http://www.pkgsrc.org/ をごらん下さい。(2004/06/26)

NetBSD を使っていると、 その pkgsrc の便利さは格別です。 同じことが Mac OS X でも出来ないかなぁという時の為に: ftp://ftp.netbsd.org/pub/NetBSD/packages/bootstrap-pkgsrc/

cd ~/Documents
mkdir local-src distfiles
cd distfiles
wget --passive \\

ftp://ftp.netbsd.org /pub/NetBSD/packages/
bootstrap-pkgsrc/bootstrap-pkgsrc-20040312.tar.gz
cd ../local-src
tar zxf ../distfiles/bootstrap-pkgsrc-20040312.tar.gz  (See getting-started)
cd bootstrap-pkgsrc
less README.Darwin
 ./ufsdiskimage create ~/Documents/NetBSD 3072 ( /usr/pkg, /usr/pkgsrc に 3G 割当)
 ./ufsdiskimage mount ~/Documents/NetBSD
 sudo chown `id -u`:`id -g` /Volumes/NetBSD
curl -O     ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/pkgsrc.tar.gz
tar -C /Volumes/NetBSD -zxvf pkgsrc.tar.gz && rm pkgsrc.tar.gz
sudo ./bootstrap \
    --prefix=/Volumes/NetBSD/pkg \
    --pkgdbdir=/Volumes/NetBSD/pkgdb \
    --pkgsrcdir=/Volumes/NetBSD/pkgsrc

d176:/Volumes/NetBSD/pkgsrc/textproc/namazu2 makoto$ bmake
sh: line 1: /usr/pkg/sbin/pkg_info: No such file or directory

d176:/Volumes/NetBSD/pkgsrc/textproc/namazu2 makoto$ \
sudo ln -s /Volumes/NetBSD/pkg /usr/pkg
Password:
pkg_admin: Cannot chdir to /var/db/pkg: No such file or directory
sudo mkdir /var/db/pkg
Zoularis pkgsrc for non-NetBSD systems
http://www.netbsd.org/zoularis/
bootstrap-pkgsrc NetBSD 以外のシステム向けの pkgsrc
http://www.jp.netbsd.org/ja/zoularis/
pkgsrc for non-NetBSD systems 例えば Mac OS X の上で pkgsrc を作っていく場合
http://www.zoularis.org/
pkgsrc/cross/zoularis 同じものを NetBSD 側で用意する場合
http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/cross/zoularis/
Last Update: Sat, 07 Jun 2014 13:16:17 GMT 1.66 2008/03/08