Tips for NetBSD

NOTICE: Most of the following tips are for setting up Japanese environment on NetBSD. Therefore this page is written in Japanese. When I find up the tips independing on language, I will make another page in English. Currently, these information is based on NetBSD-1.5 RELEASE (Jan. 2001).

Kernel configuration Basics

kernelの基本設定について。

Netscape on NetBSD

NetscapeをNetBSDで使う方法。いろいろありますが、私はいまのところ FreeBSDのバイナリを使っています。

フォントの準備

何はともあれフォントを準備します。pkgなりpkgsrcなりで、jisx0208fonts, jisx0212fontsをがりがりインスト−ルしてください。ただし、これだけ だとfonts.aliasがないのであまりうれしくありません。FreeBSDから fonts.aliasをもらってきて、 /usr/X11R6/lib/X11/fonts/local/に置きましょう。 これで-netscape-*という名前でフォントをまとめて 参照できるようになります。

この他に、URWなどの英語のスケ−ラブルフォントも入れておいたほうが良い でしょう。gimpのぺ−じなどから入手で きます。例えば入手したフォントを/usr/X11R6/lib/X11/fonts/URW/に置いて、 /etc/XF86ConfigのSection "files"のなかに

   FontPath   "/usr/X11R6/lib/X11/fonts/URW"
を加えます。

必要に応じてxset fp rehashを忘れずに。

その1) BSD/OSのバイナリを使う

多分一番安直に動く方法。
BSD/OS用のバイナリ(navigator-v475-us.x86-bsdi-bsd2.tar.gzなど)を ダウンロードし、展開してインストールします。インストール先は 以降すべて/usr/local/lib/netscape/とします。これで /usr/local/lib/netscape/netscapeを実行すれば立ち上がりますが、 これだけだとボタンやメニューに日本語がでません。以下の作業を行って ください。
  1. 拙作の日本語表示用リソースファイル (Netscape)をダウンロード して、/usr/local/lib/netscape/に置く。
  2. /usr/X11R6/lib/X11/locale/ja/XLC_LOCALEを これに置き換える。この方法は加藤さん@WIDEに教えて頂きました。
  3. wrapperを作って/usr/local/bin/netscapeとでもして置く。例えば以下。
    #!/bin/sh
    
    NSROOT=/usr/local/lib/netscape
    
    export LANG=ja_JP.EUC
    export MOZILLA_HOME=$NSROOT
    export XAPPLRESDIR=$NSROOT
    export CLASSPATH=
    
    exec $NSROOT/netscape $@
    

ただし、立ち上がりが遅いです。多分フォントの展開に時間を食っているからで、 Xサーバを直せば改善できると思います。どう直すかについては、 河野さん@琉球大の作ってくれた XFree86 3.3.xに対するpatchを使うと良い のではないかと思います。多分ここらへんの事情はBSD/OSと まったく同じ症状が起きているのだと予想されます。

その2) FreeBSDのバイナリを使う

これについては、 「NetBSDに関する情報」 のページに詳しく出ていて、 ここに書いてあることをそのままやれば大丈夫です。 上記のページはNetBSD 1.3ですが、NetBSD 1.5でも同じです。

簡単にまとめると、以下の手順になります。

  1. FreeBSD 2.2.7のエミュレーション環境を入れ換える。
    pkgsrc/freebsd_libは使いものになりません。/usr/pkg/emul/freebsd/は ごっそり入れ換えましょう。上記のページにある freebsd_lib.tgz をもらいましょう。/usr/pkg/emul/freebsd/に展開します。 また、/usr/pkg/emul/freebsd/etc/のファイルを調整する必要がある そうですが、同名の/etc/のファイルにsymbolic linkを張っておけば 大抵は良いのではないかと思います。(細かいことは気にしない)
  2. FreeBSD用Netscapeをインストールする
    普通にインストールします。
  3. 日本語リソースを入れる
    FreeBSDのportsで日本語に使われている communicator-ja-euc-v472-export.generic-generic-generic.tar.gz をインストールしましょう。展開してinstall.jaを実行します。
  4. ライブラリを追加する
    FreeBSD Tips から libansi4.tgz を入手して、/usr/pkg/emul/freebsd/lib/libansi.so.1.3として置きます。
  5. wrapperを作って/usr/local/bin/netscapeとかとして置く。例えばこんな感じ。
    #!/bin/sh
    if [ ! -d $HOME/.netscape ]; then
            mkdir -m 700 $HOME/.netscape
            cp /usr/local/lib/netscape/preferences.js $HOME/.netscape
            chmod 644 $HOME/.netscape/preferences.js
    fi
    export LD_LIBRARY_PATH=
    export LANG=ja_JP.EUC
    export LC_ALL=${LANG}
    export LC_CTYPE=${LANG}
    export MOZILLA_HOME=/usr/local/lib/netscape
    export CLASSPATH=.:${MOZILLA_HOME}
    export NS_NETHELP_PATH=${MOZILLA_HOME}/${LANG}
    export XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
    export XAPPLRESDIR=${MOZILLA_HOME}
    export TIMID_DIR=/usr/local/lib/timidity
    export XCMSDB=/dev/null
    ulimit -c 0
    
    export LD_PRELOAD=/usr/lib/libxpg4.so.2.0:/usr/lib/libansi.so.1.3
    
    exec ${MOZILLA_HOME}/netscape "$@"
           

おまけとして、プラグインとしてflashとpluggerについてですが、FreeBSD 2.2.7で コンパイル済バイナリを用意 しておいたので、/usr/local/lib/netscape/plugins/に置いてください。 pluggerを使うためには、pluggerrcで記述したプレイヤーが必要です。
ただし、外部ビューアとしてLinuxバイナリなどを使う場合は、LD_PRELOADが 悪さをします。余計な環境変数をunsetenvするwrapperスクリプトを 書くなどしてください。例えば私は、/usr/local/bin/realplayを以下のように しています。
#!/bin/sh
export LD_PRELOAD=
export LD_LIBRARY_PATH=
export LANG=
export LC_CTYPE=
exec /usr/pkg/emul/linux/usr/local/RealPlayer7/realplay "$@"

その3) Linuxのバイナリを使う

pkgsrc/www/{navigator, communicator}を使ってインストールされるのは、 Linuxのバイナリです。こいつは標準でflashのplug-inも純正品が入っているし、 pjgsrc/www/{ns-plugger-*}を使うと、MIDI再生のプラグインなども簡単に インストールされるので、一番楽ちんです。
ところが、ボタンやメニューに日本語が出ません。そういうものらしいの ですが、Mailing Listの情報とかを読むとpkgsrc/japanese/linux-locale いれると出るような記述も見受けられます。これについては、現在調査中 です。

Canna and Emacs-20

これまで私はCannaとMule-2.3を使っていました。しかし、 という諸々の事情から、NetBSDに移行するのと同時にemacs-20に移ることにし ました。参考にしたのは GNU Emacs + Gnus + Mew のページです。
さて、問題になったのがCannaです。Emacs-20ではそのままではCannaが使えません。 Emacs-20でcannaを使うには二つの方法があります。
yc.el を使う。
この方法は非常に簡単です。yc.elというプログラム1つをロードする だけでcannaが使えるようになります。yc.elは ここ から入手できます。ただ配付状態だとNetBSDのpathと違うのと、 C-hがdelete-backward-charにならなかったので、面倒だったので 本体に手を加えてしまいました。 これが、yc.el-3.2.6へのパッチです。
後者の問題については、単に
(define-key yc-edit-mode-map "\C-h" 'yc-edit-backward-delete-char)
       
を.emacs.elに書けば良いだけですね。パッチは必要ないです。
tamago4を使う
tamago4がpkgsrcに入りました。インストールするだけで使えるように なります。試してみましたが、yc.elで良いや、って気分だったので 10秒しか使いませんでした。
あと、cannaを使う人は私のcannaについての ページも見ると良いことがあるかもしれません。

パーティション構成のTips

私のノートPCはNetBSDですが、dfコマンドを実行するとこうなります。
Filesystem     1K-blocks     Used    Avail Capacity  Mounted on
/dev/wd0a          63469    35415    24880    58%    /
/dev/wd0f         190095   148504    32086    82%    /var
/dev/wd0h        1132868  1029354    46870    95%    /usr
/dev/wd0e           8184      199     7575     2%    /u
/dev/wd0g        3144137  2633021   353909    88%    /local
kernfs                 1        1        0   100%    /kern
<above>:/u/etc     43599    35614     7575    82%    /etc
ポイントはここです。
/dev/wd0e           8184      199     7575     2%    /u
<above>:/u/etc     43599    35614     7575    82%    /etc
wd0eを/uにマウントしてあって、これを/etcにunionマウントしてあるわけです。 その前に、/etcの下には/usr/pkg/etc, /usr/local/etcを移動してあって、 /usr/pkg/etc → /etc/pkg, /usr/local/etc → /etc/local というシンボリック リンクが作られています。つまり、 例えばNetBSD 1.5を1.5.1にアップグレードするとしたときですが、私がやった 作業は以下の通りでした。
  1. 1.5.1のbinaryを入手する。
  2. union mountを外す。
  3. ルートで全部のパッケージをtar pxfする。
  4. fstabとrc.confを一部書き変える。
便利でしょ。 ただし欠点はありまして、rebootするとunion mountされた上の方に、/etc/nologin が残ってしまうのです。これはrc.dの中にあるファイルのうちnologinを消す作業が mount -aするより前に実行されるからなので、このあたりは改善の余地があるなとは 思っているのですが。

この構成はPICKLESの 思想を継承しています。PICKLESの技術的なポイントは、全ホストで共通化できる 領域とホスト個有の領域を完全に分離するというものでした。上記のパーティション 構成にすることにより、共通領域を/, /usrに、ホスト個有情報を/u, /var, /localに 集めることができます。この結果、先に述べたようなバージョンアップや、バック アップが手軽で安全確実に行えるようになります。


Masahiko KIMOTO <kimoto@ohnolab.org>
Last modified: Sun Aug 4 18:55:02 2002