2001/01/12    Sorry for my long silence

かれこれ3カ月以上更新が滞っていた。この間、国際会議、出張、学会、測定器のビームテスト、そして論文の〆切と多忙を極め、LinuxPPC とのつきあいはもっぱら仕事関係の解析ソフトの開発と LaTeX による文書作成に限られていた。安定な作業環境の確保のために冒険もできず、また、PB G3 266 の内蔵ディスクも飽和してきて、Geant4 を用いた測定器シミュレーションプログラムの開発はおろか、MacOS X のテストなどおぼつかなかった。そこで大容量の内蔵ハードディスクを購入 (IBM 製の 32GB: DJSA-232-32GB) 、交換の機会を待つ。昨年末、ようやく少し時間がとれ、ついに内蔵ディスクの交換を決行した。ここでは、
http://www01.u-page.so-net.ne.jp/ba2/nsxt/faq1.html#HardDisk
が非常に参考になった(特に磁気シールドの件、実際、事前に調べてあったからあわてはしなかったものの、シールドなしではやはり永眠状態に陥った)。有用な情報を提供して下さった偉大なる先人たちに感謝。

ディスクに余裕ができたので、まず、これも事前に購入してあった MacOS X Public Beta を試すことにする。MkLinux/LinuxPPC な生活という看板に反するが、しばらくは MacOS X な生活が続く。

目標は、X11 が Aqua の中でシームレスに使えること。その前提のもとで、X11 の最低限の日本語環境、そして、仕事のソフトの移植である。仕事のソフトの移植には、もちろん、g77 を含む開発環境の整備も含まれる。

具体的には

といったところか。
 
 

[1] MacOS X、インストールと試運転

[1-1] パーティショニングの際の注意

MacOS 9 と MacOS X のパーティションの間に HFS でないパーティションがあるとうまくインストールできなかった。泣く泣く、LinuxPPC パーティションを MacOS X の後ろに移動。こうすると MacOS X のファイルシステムを HFS+ にする必要が生じた。これは、UFS を指定すると起動用の HFS パーティションを新たに切ってしまうので、LinuxPPC の最後のパーティション番号が 17 になってしまい LinuxPPC から見えなくなってしまうため(涙)。
後で書くように、HFS+ には泣かされたので、できれば次にインストールする際にはなんとか UFS にしたい。
 

[1-2] 外づけ SCSI Disk は外しておくのが吉

実際、Windows 用の安物を無理矢理 Mac 用にしたものをつないでいたら、まずはインストーラーが混乱してそもそもインストールできず、次に、なんとかインストールできたものの MacOS X セッションを終了しようとしたら外付けにアクセスしようと無限ループに入ってしまった。
 

[1-3] BenH's BootX と Norton's file saver 機能拡張は外しておくこと

さもないとインストールが終了し再起動する際にはまる。 Software Update extension もはずしておく(これは必要ではないが、Classic 環境を立ち上げるたびに起動されるのはうっとおしい)。
 

[1-4] いよいよインストール

インストールには HFS+ を使用した場合、約15分。インストレーション終了後、システムは自動的に再起動され、MacOS X の設定セッションに入る。ここでは、ネットワークに関する情報(IP、Mask、Gate Way、Host Name、DNS、domain、等)やユーザー名、パスワード(root)を要求される。これらの設定を有効にするため再起動をしろといってくる(普通の Unix なら再起動など不要のはずなのだが)。

ネットワークの設定は、System Preferences ホルダーにある Network utility で変更可能。ネットワークプリンターを使うには、Apple Talk を ON にしておく必要がある。プリンター自体は、Utilities ホルダーにある Print Center utility で設定する。

注意
上のパスワードでユーザー名 root で login できる。また、ユーザー名を >console とするとコンソール画面となる。ユーザー情報は /etc/pw* にある。
 

[1-5] Dock

Dock が邪魔な場合は、"Dock と Desktop の環境設定" でマウスのポインターが近づくと自動的に現れ遠ざかると自動的に隠れるようにできる。
 

[1-6] もろもろのサービスの自動起動

どんなサービスがあるかは
    /System/Library/StartupItems/
を見る。

例えば、ssh を起動したい場合 SSH/SSH を見る。

# cat SSH/SSH
.....
##
# Start up secure login server
##

if [ "${SSHSERVER:=-NO-}" = "-YES-" ]; then

       ConsoleMessage "Starting Secure Login Server"

       if [ ! -f /etc/ssh_host_key ]; then
           echo "Generating ssh host key..."
           ssh-keygen -f /etc/ssh_host_key -N "" -C "$(hostname)"
       fi
       sshd -h /etc/ssh_host_key
fi
....

これから、環境変数 SSHSERVER が ssh の起動をコントロールしていることが分かる。sshd を "-h /etc/ssh_host_key" をつけて起動していることに注意。さもないと、ssh2 用の /etc/ssh_host_dsa_key 見に行ってしまう。

コントロール変数は /etc/hostconfig で設定する。

# vi /etc/hostconfig
.....
SSHSERVER=-YES-
これで、起動時に sshd が自動起動される。
 
 

[2] Xtools のテスト

Aqua とシームレスに(Rootless で)使えるということで、取り合えず、Tenon の Xtools を試すこととする。Darwin の XonX のものもいずれ試す予定。
インストールには "Terminal" を開いて以下を行う。
# su
# cd /Users/fujiik/Library/Desktop/Xtools/Xtools.pkg/
# chmod a+x Xtools.pre_install
さもないと、インストールに失敗する。これは、Stuffit Expander がファイルパーミッションを勝手に変えてしまうことによる。コマンドラインで unzip コマンドで解凍すれば問題ない。最新の Xtools のお試し版ではこの問題は解決したようである。

ssh での X11-forwarding を許すためには

# vi /etc/ssh_config
Host *
....
        ForwardX11 yes
....
とする。
 

[3] MacOS X 標準開発環境の整備

まず ADC に加盟し、Apple の開発者向け download site へのアクセス権をうる。しかる後に MacOS X Developer Tools の CD image をダウンロードする。IE でこれを行う場合は、Helper Applications を OFF にしておくこと(Stuffit Expander に変に解凍させないため、さもないと腐ってしまう)。Helper Applications を OFF にするには IE のダウンロードダイアログの中のファイルアイコンをダブルクリックしてでてきた設定ダイアログを使う。
CD image は実際は tar ball なので、
# cd ~/Library/Desktop/
# tar -zxvf 4.0.31.Download.1
これで、Desktop に Developer.pkg ができるので、これをダブルクリックすればインストーラーが起動する。
 

[4] More Develper Tools

XF86 をダウンロードするには
$ cd ~/sandbox
$ cvs -d :pserver:anoncvs@anoncvs.xfree86.org:/cvs login
$ cvs -d :pserver:anoncvs@anoncvs.xfree86.org:/cvs checkout xc
これで XF86 のソースツリーがダウンロードされる。

Apple の CVS サーバーからzさらに開発者ツールを入手するには、まず

http://www.publicsource.apple.com/apsl/
で、読み出し専用ユーザー登録をする。その後以下を実行。
$ cvs -d :pserver:fujiik@anoncvs.opensource.apple.com:/cvs/Darwin login
$ cvs -d :pserver:fujiik@anoncvs.opensource.apple.com:/cvs/Darwin checkout bootstrap_cmds
$ cd bootstrap_cmds
$ make
$ su
# make install # DSTROOT=/tmp/bootstrap_cmds
# mkdir /Library/Frameworks
# cp -pr /System/Library/Frameworks/IOKit.framework /Library/Frameworks/IOkit.framework
# mkdir /Local
# ln -s ../Library /Local/Library
# exit

$ ~/sandbox
$ cvs -d :pserver:fujiik@anoncvs.opensource.apple.com:/cvs/Darwin checkout xnu
$ cd xnu
$ source SETUP/setup.csh
$ make exporthdrs
$ make install
$ ^C # quit when compilation starts

$ ~/sandbox
$ cvs -d :pserver:fujiik@anoncvs.opensource.apple.com:/cvs/Darwin checkout IOKitUser
$ cd IOKitUser
$ vi Makefile
....
NEXTSTEP_BUILD_OUTPUT_DIR = /Users/fujiik/sandbox/xnu/BUILD/dst/System/Library/Frameworks
$ make

$ su
# cd ../xnu/BUILD/dst/System/Library/Frameworks/
# cp -Rp IOKit.framework/Versions/A/Headers/* /Library/Frameworks/IOKit.framework/Versions/A/Headers/

# cd /Users/fujiik/sandbox/xnu/BUILD/dst/System/Library/Frameworks/System.framework/Versions/B/PrivateHeaders
# cp -R libkern/ /System/Library/Frameworks/System.framework/Headers/libkern

# vi /Developer/Makefiles/CoreOS/ReleaseControl/Common.make
.....
# RC_ARCHS = ppc i386
RC_ARCHS = ppc
....

More Tools to Build Various Apps.

Darwin CVS repositry よりさらに

# cd Libm-18-1
# make
# make install
# cd ../Libcurses-23
# make
# make install

 

[5] bash および最低限の日本語環境

[5-1] bash、kterm、less、そして nkf

bash、kterm、less、nkf のコンパイルには特に問題はなかったが、一つはまったのは、HFS+ では大文字と小文字の区別がないらしいこと。nkf をコンパイルしたとき、実行可能モジュールの出力先に NKF という名前のディレクトリーがあったので、nkf を作れなかった。UFS にすべきであったと痛感した。
kterm は libc の setlocale() がどうも日本語ロケールを理解しないようで、起動の際毎回文句を言うので、取り合えず XIM を OFF にしてコンパイルした。
less で日本語を使うには、JLESSCHARSET=japanese-iso7 とし、kterm は euc にしておく。
 

[5-2] Canna

ほんとは、ことえりが X11 から使えるのがいいのだが、まあ、日本語入力ができないよりましというわけで、Canna を入れることに。

共有ライブラリーのインストールがおかしかったので /usr/X11R6/lib/X11/config/MacOSX.rules を変更:

<patch begins>
--- /usr/X11R6/lib/X11/config/MacOSX.rules.ORIG Sat Dec 16 06:37:33 2000
+++ /usr/X11R6/lib/X11/config/MacOSX.rules      Mon Jan 15 21:21:01 2001
@@ -37,7 +37,7 @@
 #define InstallSharedLibrary(libname,rev,dest)                         @@\
 install:: Concat(lib,libname.dylib)                                    @@\
        MakeDir($(DESTDIR)dest)                                         @@\
-       $(INSTALL) $(INSTLIBFLAGS) Concat(lib,libname.dylib) $(DESTDIR)dest
+       $(INSTALL) $(INSTALLFLAGS) $(INSTBINFLAGS) Concat(lib,libname.dylib) $(D
ESTDIR)dest
 @@\

 #endif /* InstallSharedLibrary */
<patch ends>

その上で
$ tar -zxvf Canna35b2.tar.gz
$ cd Canna35b2
$ patch -p1 -s < ../Canna-3.5b2.conf.patch
$ patch -p1 -s < ../Canna-3.5b2.Imakefile.patch
$ patch -p0 -s < ../Canna-3.5b2-glibc.patch
$ patch -p1 -s < ../Canna-3.5b2-stdin.patch
$ patch -p1 -s < ../Canna-3.5b2.security.patch
$ patch -p1 -s < ../Canna-3.5b2.macosx.patch
$ export libCannaDir=/usr/local/lib
$ xmkmf
$ make Makefiles
$ make canna
$ su
# mkdir -p tmp/private/var/log
# ln -s private/var tmp/var
# mkdir -p tmp/usr/local
# make install DESTDIR=`pwd`/tmp
# make install.man DESTDIR=`pwd`/tmp
とする。macosx patch 以外のパッチは LinuxPPC よりの流用。
 

[5-3] Kinput2

こちらは PATH の調整だけで済んだ。
$ tar -zxvf kinput2-v3.tar.gz
$ cd kinput2-v3
$ patch -p1 -s < ../kinput2-v3.macosx.patch
$ xmkmf -a
$ make
$ su
# mkdir -p tmp/usr/X11R6/app-defaults
# mkdir -p tmp/private/etc
# ln -s ../../usr/X11R6 tmp/private/etc/X11
# make install DESTDIR=`pwd`/tmp
で終わり。
 

[6] Tcl/Tk

TkDesk を入れるために LinuxPPC 用のソースを流用。
$ for i in *.tar.gz; do tar -zxvf $i; done
$ tcl8.0.5/
$ patch -p2 < ../../tcl8.0.3-glibc21.patch
$ patch -p2 < ../../tcl8.0.5-sigpwr.patch
$ patch -p0 < ../../tcl8.0.5jp1.6.patch
$ cd ../itcl3.0.1/
$ patch -p5 -s < ../../itcl_fix.diff
$ patch -p1 -s < ../../itcl3.0.1jp-tkpath.patch
$ cd ../tk8.0.5/
$ patch -p0 -s < ../../tk8.0.5jp1.6a.patch
$ patch -p1 -s < ../../tk8.0.5jp1.6a-im.patch
$ patch -p2 -s < ../../tcl8.0.5jp-path.patch

$ cd ../tcl8.0.5/unix/
$ ./configure --enable-shared --enable-gcc --prefix=/usr/local
$ make LIBS='-L/usr/local/lib/system -lm -lcc'

$ cd ../tk8.0.5/unix/
$ ./configure --enable-shared --enable-gcc --with-tcl=../../tcl8.0.5/unix  --prefix=/usr/local
$ make LIBS='-L../../tcl8.0.5/unix -ltcl8.0.5jp -L/usr/X11R6/lib -lX11 -lcc'

$ cd ../itcl3.0.1
$ ./configure  --enable-shared --prefix=/usr/local -enable-gcc
$ make CC='gcc -DKANJI -DKINPUT2 -DXIM_IMPROVE'

$ cd ../
$ mkdir -p usr/local
$ cd tcl8.0.5/unix/
$ make install INSTALL_ROOT=/Users/fujiik/sandbox/mypkg/src/tcltk/tcltk/build

$ cd ../tk8.0.5/unix/
$ make install INSTALL_ROOT=/Users/fujiik/sandbox/mypkg/src/tcltk/tcltk/build

$ cd ../itcl3.0.1/
$ make install INSTALL_ROOT=/Users/fujiik/sandbox/mypkg/src/tcltk/tcltk/build exec_prefix=/usr/local

make test はいくつか失敗するが、大胆にも作業続行(実際 LinuxPPC でも Intel Linux でも結構 test に失敗するので)。

[7] TkDesk

日本語版 Tc.l/Tk が入れば、TkDesk は LinuxPPC のソース流用で OK のはず。
$ tkdesk-1.2
$ patch -p1 < ../tkdesk-1.2+jp.patch
$ patch -p0 < ../exit-save-dd.diff
$ cd tcldesk/
$ patch -p0 < ../../appbar-dnd.diff
$ patch -p0 < ../../empty-trash.diff
$ patch -p0 < ../../find-dd.diff
$ cd ..
$ ./configure --prefix=/usr/local
$ make CC_OPTS="-O2  -DKANJI -DKINPUT2 -DXIM_IMPROVE"
$ ./configure --prefix=/usr/local
$ make CC_OPTS="-O2  -DKANJI -DKINPUT2 -DXIM_IMPROVE"
$ mkdir -p usr/local/{bin,lib,man}
$ make install INSTALL_ROOT=`pwd`
めでたく動いた。canna+kinput2 による日本語入力も問題なし(入力スタートが日本語キーボードの Cntrl+] なのにはちょっとまいるが)。このキーをトグルにするには例によって、~/.canna に
$ cat ~/.canna
......
(global-unbind-key-function 'japanese-mode)
(global-unbind-key-function 'alpha-mode)
(global-set-key "\C-\" 'japanese-mode)
(set-key 'empty-mode "\C-\" 'alpha-mode)
などというおまじないを入れておく。
 

[8] Xaw3d

kterm のスクロールバーがみすぼらしいのでやはり Xaw3d を入れることに。
$ cd xc/lib/Xaw3d/
$ patch -p0 -s < ../../../Xaw3d-1.1-shlib.patch
$ patch -p4 -s < ../../../Xaw3d-1.3-glibc.patch
$ patch -p3 -s < ../../../Xaw3d-1.3-X11R6.3.patch
$ patch -p4 -s < ../../../xaw3d.patch
$ patch -p4 -s < ../../../Xaw3d-1.3-multisrc.patch
$ xmkmf
$ ln -s .. X11
$ make EXTRA_DEFINES='-DARROW_SCROLLBAR -DUSEGRAY' CC='gcc -g'
$ mkdir -p usr/X11R6
$ make install DESTDIR=`pwd`
例によって
# cd /usr/X11R6/lib
# mv libXaw.dylib libXaw.dylib.ORIG
# ln -s libXaw3d.dylib libXaw.dylib
で幸せになれる。
 
 

今までにコンパイルしたもののソースおよびパッチは macosx/src に、またバイナリーの tar ball は macosx/tgz にそれぞれ置いてある。いつものように使う場合は自己責任で。


Back to Keisuke Fujii's MkLinux/LinuxPPC Life