FreeBSDにおける,Tcl の ports/packages について 田口 毅 taguchi@tohoku.iij.ad.jp 本文章では,FreeBSD環境におけるTclの特徴的な部分をまとめる. 1. インストールされるファイルについて. FreeBSD上では,数多くのプログラムが標準配布に組み込まれており,それに 加えて1200を越えるプログラムが,ports/packages の仕組みを用いて提供さ れている. その中には,Tcl/Tk自身や,それらの拡張,および,それらを用いたいくつも のプログラムが含まれる. ここで問題となるのは,流通している Tcl/Tk には,様々なバージョンが存在 する,という事実である.そして,前述のプログラム群が用いているTclやTk のバージョンは1つではない,という,リリースエンジニアリング的にやっか いな現実がある. 例えば,あるプログラムAはTcl7.6の日本語版を用い,プログラムBはオリジナ ルの Tcl8.0を,そしてプログラムCは,オリジナルのTcl7.5を用いている,と いうことが有り得るのだ. そこで,FreeBSD では,さまざまな議論に基づき,ユーザが使用し得るすべて の版のTcl/Tk が同時にインストールされうるようにしている(一部,完全では ないかもしれないが,少なくともそれを目指している). そのために,標準のTcl/Tkとは,一部のファイルのインストールされるディレ クトリ階層が異なっている. だが,安心してほしい.Tcl/Tkを用いるFreeBSD上のports/packagesは,その 変更されたインストール場所を前提に動作する.従って,ports/ packagesを 用いるユーザは,その変更を意識せずに済むだろう. 問題となるのは,未だports/packages化されていないアプリケーションをイン ストールする場合だろう.そこで,以下に,何が標準と異なることになるかを 述べる. 相違があるファイルで重要なものは以下の2個であり,それぞれ以下の場所に インストールされる. ファイル名 インストール場所 デフォルトの場所 tclConfig.sh @prefix@/lib/tcl@TCL_VERSION@ @exec_prefix@/lib tcl.h @prefix@/include/tcl@TCL_VERSION@ @prefix@/include 多くの場合,これらのファイルを正しく見つけられるように,インストールし ようとするプログラムのconfigureスクリプトや,Makefileを書き換えれば, 正しくインストールできるだろう.そして,そうした作業を行った場合は,是 非ともports化し,FreeBSDにcontribしてほしい.また,ports化が難しい場合 は,是非ともpatchを作成して,FreeBSDのMLに投稿してほしい.そうすること によって,多くの人々が救われるかもしれないからだ. なお,Tclのソースに含まれるヘッダファイル群は,すべて, @prefix@/include/tcl@TCL_VERSION@ 以下の階層にインストールするようにしている.コンパイル時にTclのソース のパスを指定する必要のある多くのプログラム群は,単にそれらヘッダファイ ルを見る必要があるだけな場合が多いので,ここからヘッダファイルを includeするようにすると,おしゃれだろう. これは日本語版に限った話であるが,日本語版tcl8.0では,オンラインマニュ アルページ(manファイル群)のインストールを行わないことにした.これは, そのファイルが非日本語版のそれとまったく同じであり,かつ,同じ場所にイ ンストールするしかないものだからである.従って,manファイルを参照しよ うとする場合は,非日本語版のtcl8.0もインストールしてほしい. もっとも,portsを使ってインストールする場合には, # make install-man と入力すれば,manファイルはインストールされてしまう.ただし,portsの枠 組みを越えた機能であるため,pkg_deleteコマンドでja-tcl-8.0 を削除しよ うとしても,manファイル群は削除されないので,注意が必要である. 本質的(かつ,一番幸せ)な解決策は,すべてのmanファイルを日本語訳し,そ れをjmanで読めるディレクトリにインストールすることであろう.manファイ ルの訳を完成した人は,是非とも私に一報いただきたい.それに対応した形に portsを作成し直したいと思う. 2. その他の相違点 Tcl/Tk は,Scriptics社によって保守されているが,インターネット上でも comp.lang.tclを中心に保守が行われている.そして,そこでは,正式なバー ジョンではまだ修正されていないバグのfixも行われている. こうしたバグ報告は, http://www.cs.uoregon.edu/research/tcl/patch/ にまとめられている.いずれ,本家にも反映されることが期待されるfixであ るが,とりあえずja-tcl-8.0 では,これらのfixも独自に反映させることにし た.従って,FreeBSDのports/packages版は,より安定して動作することが期 待できるかもしれない.