Version 13 of Tcllib Installation

Updated 2006-10-05 17:24:35

The current tcllib release, as it can be found on Sourceforge since Oct 4 2006, is Version 1.9.

You should have an installed Tcl version greater or equal to 8.2 for most packages in Tcllib; for 64-bit systems, a recent Tcl 8.4 or newer is recommended. The minimal version for all Tcllib packages is 8.0, due to the use of namespaces.

LV Can anyone address why 64 bit systems need a newer Tcl? Is it because Tcl itself has problems before 8.4 on 64 bit machines?

schlenk Yes. As far as i remember there are some packages like MD5 etc., which don't work correctly on 64-bit systems with a pre-8.4 Tcl, but i don't rememeber the details, must be in the bugtracker.

Getting Tcllib

Depending on your OS, appropriate packages may be available from the vendor (be it RPM, deb or another system vendor-specific packaging system); if there is, maybe you should try those first. Vendor specific Tcllib packages

If not, you have some ways to get to a working tcllib on your OS.

1. Get a distribution that includes the current Tcllib, like the ActiveState distro of Tcl. Install it and use your new system. Skip the installation part in this document.

2. Download one of the Tcllib distributions from sourceforge [L1 ]

If you have tclkit or the packages needed to run starkits you can use tcllib.kit, a starkit based installer. If not, just download either the zip, gz or bz2 compressed files, unpack in a temporary directory. Now read on under Installing Tcllib .

3. Checkout the tcllib from CVS.

Change to a temporary working directory. Do a cvs checkout like this:

 cvs -d:pserver:[email protected]:/cvsroot/tcllib login
 cvs -d:pserver:[email protected]:/cvsroot/tcllib co -r tcllib-1-9 tcllib

Now you have a CVS version of the 1.9 version around. Follow the instructions under Installing Tcllib to install it. If you want the bleeding edge version from CVS do this instead:

 cvs -d:pserver:[email protected]:/cvsroot/tcllib login
 cvs -d:pserver:[email protected]:/cvsroot/tcllib co tcllib

The bleeding edge version may have extra bugfixes and new features.

Installing Tcllib

If you used something like ActiveStates Distro, a deb or rpm package, you probably don't need this.

The easiest way to install tcllib is the included installer, try:

 tclsh installer.tcl

or

 wish installer.tcl

It pops up a GUI (if Tk is available) which will guide you through the installation. You can get info about valid command line switches for the installer by running:

 tclsh installer.tcl -help

Testing if Tcllib works

Fire up your default tcl interpreter. Try this (or to require any of the other packages):

 % package require nmea

If it works and returns the version number of the returned package, you installed Tcllib correctly. If it does not work, check your auto_path variable like this:

 % set auto_path

It has to contain the parent directory of the directory into which you installed the packages, or the install directory itself. If it is missing, you have to add it to your auto_path in your scripts.

 % lappend auto_path /path/to/tcllib/installdir

Upgrading an existing installation

How do you upgrade the ActiveTcl version? Do you take the defaults the installer gives you or do you find where the current version is and replace that?

You can happily install multiple tcllib versions in parallel. All packages use version numbers so if you don't use package require -exact in your scripts you get the latest compatible version automatically. So if you have for instance an ActiveTcl install, you simply accept the installer defaults (run the installer with your tclsh from ActiveTcl, so it picks up the right auto_path) and install in parallel. If you are concerned about disk space you can simply delete the older tcllib directory and examples from your installation.

There may be some unexpected and unwanted side effects if a package versions changes from major version (1.x to 2.x for example) indicating an API change. This happend with the md5 package, which is provided as an 1.x and 2.x version. If your code simply uses package require md5 you get the latest version, which is 2.x, which may break scripts expecting the older 1.x API. Simple fix is to change the package require to package require md5 1.


[ Tcllib Category Deployment ]