Obtaining Carpet

Available Versions

Carpet is distributed under the GNU General Public License (GPL). It might be released under the GNU Lesser General Public License (LGPL) in the future, to match the distribution terms of Cactus.

There is a stable version (version 4) and a development version of Carpet available, plus several outdated versions. Versions 1, 2, and 3 have been unchanged for quite some time, and should be considered outdated. There are no plans to make any further changes to these versions.

Version 4 is the current stable version. There are no plans to develop this version further, but errors will be corrected. We recommend this version for the casual users and for production runs.

The development version will always see changes, some of which might surprise you. You should not use it without keeping in close contact with the developers, i.e. following the relvant mailing lists.

Downloading the Code

Carpet is a driver for Cactus. It works as a part of Cactus, and you will need to have the Cactus installed before you can use Carpet. Please look at the Cactus web pages for an introduction to Cactus and for install instructions.

Carpet consists of several arrangements, each living in a directory. The arrangement Carpet contains the basic driver part that everybody needs. The arrangement CarpetExtra contains useful add-ons and some example code. Development of experimental thorns happens in the CarpetDev arrangement, which means that the code in there is not to be trusted. And finally, there is a graveyard arrangement CarpetAttic of things that only used to be useful and are now in a state of decay.

Version 1 (outdated)

Version 1 of Carpet is available via anonymous CVS:

        cd Cactus/arrangements
        cvs -d :pserver:cvs_anon@cvs.carpetcode.org:/home/cvs/carpet login
        cvs -d :pserver:cvs_anon@cvs.carpetcode.org:/home/cvs/carpet checkout Carpet
        cvs -d :pserver:cvs_anon@cvs.carpetcode.org:/home/cvs/carpet checkout CarpetExtra
        cvs -d :pserver:cvs_anon@cvs.carpetcode.org:/home/cvs/carpet checkout CarpetDev

The password for anonymous CVS access is anon. Instructions for dealing with CVS are available everywhere on the web, e.g. also on the Cactus pages.

Version 2 (outdated)

Version 2 of Carpet is available via anonymous darcs:

        cd Cactus
        darcs get http://www.carpetcode.org/~darcs/carpet-stable-2/
        cd arrangements
        ln -s ../carpet-stable-2/Carpet* .

(Don't miss the dot after the Carpet* in the last line.) Instructions for using darcs are given below. You can also have a look at the version 2 source tree in your web browser.

Version 3 (outdated)

Version 3 of Carpet is available via anonymous darcs:

        cd Cactus
        darcs get http://www.carpetcode.org/~darcs/carpet-stable-3/
        cd arrangements
        ln -s ../carpet-stable-3/Carpet* .

(Don't miss the dot after the Carpet* in the last line.) Instructions for using darcs are given below. You can also have a look at the version 3 source tree in your web browser.

You can also obtain the darcs repository using wget instead of darcs. For this, use the command

        wget -r -nH -np --cut-dirs=1 -R "index.html*" http://www.carpetcode.org/\~darcs/carpet-stable-3/

This copies the darcs repository into a subdirectory called carpet-stable-3, in much the same way as the darcs get command above would. That is, you also end up with a fully functional local repository.

Version 4 (current stable version)

Version 4 of Carpet is available via git:

        cd Cactus
        git clone -o carpet git://www.carpetcode.org/carpet.git
        cd arrangements
        ln -s ../carpet/Carpet* .

(Don't miss the dot after the Carpet* in the last line.) Instructions for using git are given below.

Development Version

The development version of Carpet is available via Mercurial:

        cd Cactus
        hg clone http://www.carpetcode.org/hg/carpet
        cd arrangements
        ln -s ../carpetcode/Carpet* .

(Don't miss the dot after the Carpet* in the last line.) Instructions for using Mercurial are given below.

Write Access

Git Repository

Write access to Carpet git repositories is handled via ssh. Once you have an account set up, you obtain Carpet via

        cd Cactus
        git clone carpetgit@carpetcode.org:carpet.git
        cd arrangements
        ln -s ../carpet/Carpet* .

(Don't miss the dot after the Carpet* in the last line.) Further instructions for using git are given below.

The Carpet git server is a courtesy of Christian D. Ott.

Mercurial Repository

Write access to Carpet Mercurial repositories is handled via ssh. Once you have an account set up, you obtain Carpet via

        cd Cactus
        hg clone ssh://carpetmercurial@www.carpetcode.org/carpet
        cd arrangements
        ln -s ../carpet/Carpet* .

(Don't miss the dot after the Carpet* in the last line.) Further instructions for using git are given below.

The Carpet Mercurial server is also a courtesy of Christian D. Ott.


Modern Version Control Systems

Carpet is managed in git and Mercurial repositories instead of CVS or SVN repositories. Git and Mercurial have a number of advantages over CVS and SVN for developers, such as:

and then some more, as described on the git web pages and the Mercurial web pages.

Using Git

The git web site contains introductions and documentation for git. The Linux kernel developers also maintain a tutorial for git. Git should be available for all modern operating systems. It is also not difficult to install manually.

Git comes with a convenient graphical user interface called git-gui. It allows you to update your code from the master, commit local changes, compare branches, or push local changes back to the master repository.

We have also some hints for using git.

Updating the Repository from the Master Repository

At some time you will want to update your version of Carpet and incorporate some changes from the main Carpet repository. If you are not using the graphical user interface, then you do this with the command

cd Cactus/carpet
git pull

which will download and merge the current version. Git will refuse to overwrite any conflicting local changes that you may have.

Using Mercurial

The Mercurial web site contains introductions and documentation for Mercurial. Mercurial should be available for all modern operating systems. It is also not difficult to install manually.

On Mac operating systems, Mercurial comes with a convenient graphical user interface called MacHG. This allows you to update your code from the master, commit local changes, compare branches, or push local changes back to the master repository.

Updating the Repository from the Master Repository

At some time you will want to update your version of Carpet and incorporate some changes from the main Carpet repository. If you are not using the graphical user interface, then you use the command

cd Cactus/carpet
hg pull -u

which will download and merge the current version. Mercurial will refuse to overwrite any conflicting local changes that you may have.

Convenient SSH Key Management

SSH has two mechanisms for authentication, typing a password, or using ssh keys. When you use ssh keys, your private key is (should) be protected by a password. That means that you have to type this password every time you log into a different machine. Some people protect their private ssh key with an empty password --- in this way, they don't have to type a password, but this is not very secure. If somebody is able to copy the private ssh key, they have access to your remote accounts. Intruders can use this hop from one machine to the next. Please do not use empty passwords on your ssh keys.

SSH-agent is a convenient way to make things safe. It is an agent that starts automatically when you log in, and asks you for your ssh key password once. It remembers this password in memory, and whenever you use ssh to log into a remote account, ssh contacts the ssh-agent for the password to the key. If this password is accepted, you don't have to type anything.

I use the following lines in my .bash_profile to make this happen:

keychain id_dsa
test -f $HOME/.keychain/$(hostname)-sh && source $HOME/.keychain/$(hostname)-sh > /dev/null

Keychain starts the ssh-agent. Keychain can also handle gpg key passwords for your encrypted and/or signed emails.


Go back to the Carpet home page.


Valid XHTML 1.0!


Erik Schnetter
Last modified: Tue Feb 15 2011