This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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版は, より安定して動作することが期
待できるかもしれない.