Updated 2012-10-11 10:04:42 by jdc

Installing Apache, Rivet and Tcl on a Windows machine

APW 2007-01-20: After having spent 1 and a half day setting up Rivet on Windows after a new installation, I found the solution and got it running.

I hope this page helps other people not waste so much time. I have to admit, if I had searched before on google, I would have saved a lot of time ;-), as the answer was already there.

Rivet at the moment only works with Apache 1.3.x versions. There are some efforts to port it to Apache 2.x.x versions but nothing finished yet (see c.l.t. archive).

For downloading that old version of Apache you have to go to [1] and select apache_1.3.37-win32-x86-src.msi .

For downloading Rivet see Rivet page.

For Windows it is very important that you take a non-threaded Tcl version! I have tried with Tcl 8.4.14.0 but I think versions > Tcl 8.4.9.0 are dangerous, because they are built with threads (I refer to ActiveState versions here!)

I was successful using Tcl 8.4.9.0 together with Apache 1.3.37.

If you want to have a different version of Tcl for your daily work, try the following:
 * Install the desired Tcl version as the "normal" version (with the install procedure). For example I have running Tcl 8.4.14.0 as "normal" version of Tcl.
 * In Apache subdirectory "modules" install the .dll file .../<Tcl 8.4.9.0 directory>/bin/tcl84.dll
 * In Apache subdirectory "lib" install the following directories from .../<Tcl 8.4.9.0 directory>/lib

  • tcl8.4
  • itcl3.3 (if you want to use incr tcl on the server side
  • other packages you need from the Tcl installation

In Apache subdirectory "lib" install the following directories
 * rivet0.7.0 (from the rivet installation)
 * mysqltcl (I use mysql as a database; otherwise install i.e.: oratcl etc.) if you want to access a database

Doing that, your Apache environment is self-supporting (independent of other version of Tcl running on your system).

Hope that helps others too.

jdc - 2012-10-11 10:04:42

Tested Rivet with Tcl 8.6 on Linux and using a non-threaded Tcl was needed there too to avoid a can not find channel named "stdout" error.