Chapter 22.  Berkeley DB Extensions: Tcl

Table of Contents

Loading Berkeley DB with Tcl
Installing as a Tcl Package
Loading Berkeley DB with Tcl
Using Berkeley DB with Tcl
Tcl API programming notes
Tcl error handling
Tcl FAQ

Loading Berkeley DB with Tcl

Berkeley DB includes a dynamically loadable Tcl API, which requires that Tcl/Tk 8.5 or later already be installed on your system. You can download a copy of Tcl from the Tcl Developer Xchange Web site.

This document assumes that you already configured Berkeley DB for Tcl support, and you have built and installed everything where you want it to be. If you have not done so, see Configuring Berkeley DB or Building the Tcl API in the Berkeley DB Installation and Build Guide for more information.

Installing as a Tcl Package

Once enabled, the Berkeley DB shared library for Tcl is automatically installed as part of the standard installation process. However, if you want to be able to dynamically load it as a Tcl package into your script, there are several steps that must be performed:

  1. Run the Tcl shell in the install directory.
  2. Append this directory to your auto_path variable.
  3. Run the pkg_mkIndex proc, giving the name of the Berkeley DB Tcl library.

For example:

# tclsh8.5
% lappend auto_path /usr/local/BerkeleyDB.6.0/lib
% pkg_mkIndex /usr/local/BerkeleyDB.6.0/lib libdb_tcl-6.0.so

Note that your Tcl and Berkeley DB version numbers may differ from the example, and so your tclsh and library names may be different.

Loading Berkeley DB with Tcl

The Berkeley DB package may be loaded into the user's interactive Tcl script (or wish session) via the load command. For example:

load /usr/local/BerkeleyDB.6.0/lib/libdb_tcl-6.0.so

Note that your Berkeley DB version numbers may differ from the example, and so the library name may be different.

If you installed your library to run as a Tcl package, Tcl application scripts should use the package command to indicate to the Tcl interpreter that it needs the Berkeley DB package and where to find it. For example:

lappend auto_path "/usr/local/BerkeleyDB.6.0/lib"
package require Db_tcl

No matter which way the library gets loaded, it creates a command named berkdb. All the Berkeley DB functionality is accessed via this command and additional commands it creates on behalf of the application. A simple test to determine whether everything is loaded and ready is to display the library version, as follows:

berkdb version -string

This should return you the Berkeley DB version in a string format.