Tcl/Tkがインストールされていない環境で使うには
便利なTclスクリプトができたけど、他の人のマシンで一時的に使うなど、 いろんな理由でTcl/Tkをインストールできない、 あるいはUNIXの場合はインストールさせてもらえない、 というようなときは、 必要なファイルをもっていって自分で環境設定をする必要があります。

必要なファイル(*1):

  • 使いたい自作のスクリプト(当然ですね)
  • tclshまたはwishの実行プログラム (UNIXではtclsh8.4またはwish8.4、 WindowsではTCLSH84.EXEまたはWISH84.EXE)
  • TclとTkの共有ライブラリまたはDLL (UNIXではlibtcl8.4.soとlibtk8.4.so、 WindowsではTCL84.DLL, TCL84PIP.DLL, TK84.DLL)
  • Tcl標準ライブラリ (インストールしたディレクトリの下の、init.tclなどがあるlib/tcl8.4 と lib/tk8.4ディレクトリ以下全ファイル。ただしTkのデモスクリプトは不要)
これだけです。結構大容量になります。
(*1) この説明は8.1.0以降用のものです。それ以前の版では若干違います。
これらを、次のようにもっていきます。 まずUNIXの場合ですが、
  • 自分が書いたスクリプトと、tclshまたはwishの実行プログラムは、 どこに置いても構いません。
  • 共有ライブラリは、/usr/libに置いておけば設定不要で使えます。 そうでない場合は、どこか好きな場所(/usr/local/libなどがベストですが、 rootになれない場合はホームの下、どこか決めた場所)に 2つそろえて置き、その位置を環境変数LD_LIBRARY_PATHにセットします。 たとえば、libtcl8.4.soなどを /home/watasi/lib に置いた場合、
    setenv LD_LIBRARY_PATH \
      /lib:/usr/local/lib:/usr/X11R6/lib:/home/watasi/lib
                                         ^^^^^^^^^^^^^^^^
    
    と追加します。
  • 標準Tclライブラリ(ディレクトリlib/tcl8.4 と lib/tk8.4)は、
    1. 実行プログラムtclsh/wishがビルドされたときに指定されたディレクトリの下 (処理系が内部的に覚えています)
    2. 現在tclsh/wishが置かれている位置からみて ../lib/tcl8.4 と ../lib/tk8.4 となる位置(*2)
    のどちらかに置けば、設定不要で動きます。そうでない場合は、 どこか好きな場所に置き、環境変数TCL_LIBRARYとTK_LIBRARYをセットします。 たとえば /home/watasi/lib/tcl8.4 と /home/watasi/lib/tk8.4 に置いた場合、
    setenv TCL_LIBRARY /home/watasi/lib/tcl8.4
    setenv TK_LIBRARY  /home/watasi/lib/tk8.4
    
    でOKです。
(*2)このほかにも勝手に探そうとするディレクトリの候補は何箇所ありますが、ここでは省略ということで!

次にWindowsですが、

  • 自分が書いたスクリプトと、tclshまたはwishの実行プログラムは、 どこに置いても構いません。
  • DLLは、
    1. TCLSH84.EXEまたはWISH84.EXEと同じディレクトリ
    2. C:\Windows\System
    3. 環境変数PATHの通っているところ
    のどれかに置くようにします。
  • 標準Tclライブラリ、標準Tkライブラリの位置は、次の順番で探されます。
    1. 環境変数TCL_LIBRARYで指定したディレクトリ
    2. レジストリ
      \\HKEY_LOCAL_MACHINE\SOFTWARE\Scriptics\Tcl\8.4
      で指定されているディレクトリの下の、lib\tcl8.4 と lib\tk8.4
    3. 現在のTCLSH84.EXE、TK84.EXEがあるディレクトリから見て、 ..\lib\tcl8.4、..\lib\tk8.4 にあたるディレクトリ
    このどこかに置けばOKです。
というような感じです。

やねうらの top
(first uploaded 1999/09/01 last updated 2000/07/17, Urano398)