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.
- Kernel configuration Basics.
- Netscape on NetBSD.
- Canna and Emacs-20.
- Tips for partitioning.
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を実行すれば立ち上がりますが、
これだけだとボタンやメニューに日本語がでません。以下の作業を行って
ください。
- 拙作の日本語表示用リソースファイル
(Netscape)をダウンロード
して、/usr/local/lib/netscape/に置く。
- /usr/X11R6/lib/X11/locale/ja/XLC_LOCALEを
これに置き換える。この方法は加藤さん@WIDEに教えて頂きました。
- 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でも同じです。
簡単にまとめると、以下の手順になります。
- 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を張っておけば
大抵は良いのではないかと思います。(細かいことは気にしない)
- FreeBSD用Netscapeをインストールする
普通にインストールします。
- 日本語リソースを入れる
FreeBSDのportsで日本語に使われている
communicator-ja-euc-v472-export.generic-generic-generic.tar.gz
をインストールしましょう。展開してinstall.jaを実行します。
- ライブラリを追加する
FreeBSD Tips から
libansi4.tgz を入手して、/usr/pkg/emul/freebsd/lib/libansi.so.1.3として置きます。
- 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を使っていました。しかし、
- 「情報処理」の記事でmuleの作者の半田氏が「emacs-20に移れ」と言っていた
- NetBSDのpkgだと、mule-2.3とemacs-20が共存できなかった
- mule-2.3のpkgはWnnしか対応していなかった
という諸々の事情から、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 というシンボリック
リンクが作られています。つまり、
- 設定ファイルはすべて/etcの下に集められている
- 設定ファイルを変更すると、union mountされた上の方(wd0e)に書き込まれる。
例えばNetBSD 1.5を1.5.1にアップグレードするとしたときですが、私がやった
作業は以下の通りでした。
- 1.5.1のbinaryを入手する。
- union mountを外す。
- ルートで全部のパッケージをtar pxfする。
- fstabとrc.confを一部書き変える。
- fstabにunion mountの箇所などを追加する。
- rc.confで rc_configured=YES にする。
便利でしょ。
ただし欠点はありまして、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