High Performance Computing: Dotkit


Introduction | Initializing Dotkit | Using Dotkit | Examples | References | Acknowledgements

Dotkit Overview | Using Dotkit | Creating Dotkit Packages | Dotkit Commands | How Dotkit Works


The Dotkit system provides a convenient, uniform way to select among multiple versions of software installed on the LC systems. Dotkit provides a simple user interface that is standard across UNIX shells.

From the user's perspective, all software resides in and can be accessed from a central location. The user can query the system for a list and short descriptions of available software packages. Packages can be selectively loaded into or unloaded from the user's environment by name. Dotkit helps the user keep abreast of what software is available and eliminates the need to learn the intricacies (directory hierarchies, environment variables, etc.) required to use it.

Once initialized, Dotkit can be driven with just a few commands. Basically, the user instructs the system to "use" particular software packages. The Dotkit system will then carry out the necessary details in order to load the selected software into the user's environment.

Note: If you use Dotkit while building or running interactive jobs, be sure to also include any necessary statements in your batch job scripts; otherwise, your batch job may see a different environment from your build or interactive job.

Initializing Dotkit

Execute the following command in your shell:

source /usr/global/tools/dotkit/init.csh     (for csh or tcsh users)
. /usr/global/tools/dotkit/init.ksh              (for bash or ksh users)

Note: This step will soon be automated.

Using Dotkit

The basic Dotkit commands are:

Command Name Purpose
use List loaded packages
use -l List available packages
use package_name Load a package
use -l package_name Read package help information
unuse package_name Unload a package

When placing use or unuse commands in your .login files, it is best to add the -q option for quiet operation, i.e.:

use -q package_name

Note: For those familiar with Dotkit, in the LC configuration, the use command unuses a package before loading it.

For more details, see the comprehensive list of Dotkit commands, functions, and special variables.


  1. Switch versions of the Intel compilers from default 9.1.052 to 10.1.017.

    >> icc --version
    icc (ICC) 9.1 20071016
    Copyright (C) 1985-2007 Intel Corporation.  All rights reserved.
    >> use ic-10.1.017
    Prepending: ic-10.1.017 (ok)
    >> icc --version
    icc (ICC) 10.1 20080602
    Copyright (C) 1985-2008 Intel Corporation.  All rights reserved.
  2. Unload Intel 10.1.017

    >> unuse ic-10.1.017
    Dropping: ic-10.1.017 (ok)
    >> icc --version
    icc (ICC) 9.1 20071016
    Copyright (C) 1985-2007 Intel Corporation. All rights reserved.


The commands and examples provided above are adequate to quickly begin using Dotkit. For more detailed information, please see the following:

Web Page Man Command
Using Dotkit man use
Creating Dotkit Packages man dk-examples
Dotkit Commands, Functions, and Special Variables man dk-commands
How Dotkit Works man dotkit

If you would like to provide feedback, or if you are interested in the development or administration of Dotkit, you are encouraged to subscribe to the Dotkit open mailing list: dotkit-discuss@llnl.gov.

Also see:

John L. Furlani. "Modules: Providing a Flexible User Environment" in Proceedings of the Fifth Large Installation Systems Administration Conference (LISA V), San Diego, CA, September 30–October 3, 1991: 141–152.

Richard Elling and Matthew Long. "user-setup: A system for Custom Configuration of User Environments, or Helping Users Help Themselves", in Proceedings of the Sixth USENIX System Administration Conference (LISA VI), Long Beach, CA, October 19–23, 1992: 215–223.

The ENVV package, contributed by David F. Skoll, comp.sources.misc 42, Issue 70, May 1994.

Remy Evard and Robert Leslie. "Soft: A Software Environment Abstraction Mechanism", in Proceedings of the Eighth USENIX System Administration Conference (LISA VIII), San Diego, CA, September 19–23, 1994.

John L. Furlani and Peter W. Osel. "Abstract Yourself With Modules'' in Proceedings of the USENIX Tenth System Administration Conference (LISA 96), September 29–October 4, 1996.

Yizhan Sun and Alva L. Couch. "Global Impact Analysis of Dynamic Library Dependencies'' in Proceedings of the LISA 2001 15th Systems Administration Conference, December 2-7, 2001. [Introduced the author to use, unuse as package access commands.]


The original author of Dotkit is Lee Busby, Lawrence Livermore National Laboratory. Adam Moody, also of LLNL, has made additional major contributions. The source code for Dotkit (UCRL-CODE-155929) is available for download from Sourceforge.net.

Please contact the LC Hotline, lc-hotline@llnl.gov, 422-4531, if you have any questions.