How to install CVS on your e-smith server

Dan York

e-smith, inc.

Table of Contents
1. Introduction
2. Installing the software on the server
3. Client Configuration
4. Using CVS

This procedure has been tested on systems running e-smith server 4.1.2. It should work on e-smith 4.0, 4.1, and 4.1.1 as well.

1. Introduction

This document explains how to install the Concurrent Versions System (CVS) onto an e-smith server and gateway. CVS is a version control system that allows you to easily keep track of changes between versions and also allows multiple users to access the same files and independently make changes to them. Changes from different users are merged together into the files. In the case of conflicting changes, the user is notified and can resolve the changes.

CVS is widely used within the Linux and open source community as a way to store source code and make it available to multiple developers. It is also frequently used for maintaining websites, documentation and other collections of files. At e-smith, inc., the documentation group keeps basically everything inside of CVS - the user manual, all e-smith-created HOWTOs, technical papers, processing scripts. The web development team also uses CVS to maintain the PartnerZone web site.

The basic scenario is that you have a CVS repository on a server. A user checks out a working copy of a module (a directory tree). The user makes changes to the local working copy and then commits those changes to the repository where the changes are merged in with the original files and any other changes that other users may have made.

Given that you are probably not going to want to have your users logged in and working on your actual e-smith server, you will want to have some way for users to access the repository from other systems. Within the world of CVS, you will hear mention of something called "pserver" that can allow users remote access. Using pserver is extremely insecure and for that reason is not discussed here. Instead this HOWTO discusses using CVS on top of secure shell (SSH).

CVS is not just used with Linux/UNIX. There are also clients available for Windows, the Macintosh, and other systems. Graphical clients for Linux/UNIX are also available. For more information about CVS in general, visit

2. Installing the software on the server

To install CVS you need to follow the following steps:

  1. Download the appropriate RPM from and get that RPM to some location on your e-smith server and gateway. At the time of this writing, you have your choice of cvs-1.11.1-cvshome.7x.1.i386.rpm or cvs-1.11.1-cvshome.7x.1.i686.rpm. The choice will depend on whether or not you have a 686 processor or later.

    Note: This procedure shows the steps to download the very latest version of CVS (1.11.1) directly from the CVS home site. Alternatively, you could use the RPMs available from a Red Hat 7.0 CD (or ftp site). Red Hat 7.0 shipped with CVS version 1.10.8. It functions very similarly, but the newer version has various bugfixes, etc.

  2. Access the underlying Linux operating system by logging in as the user "root" with the admin password that you created during the configuration process. If your e-smith server is displaying the server console and not a login prompt, press Alt-F2 to switch to another console screen with a login prompt. To switch back, press Alt-F1.

    Note that if you have ssh enabled and you allow administrative access using ssh, you can perform all of these steps remotely via an ssh connection

  3. Now, on your e-smith server and in the directory that contains the RPM that you just downloaded, execute the command:

  rpm -Uvh cvs-1.11.1-cvshome.7x.1.i386.rpm
  4. You now need a location on the server where the CVS repository will be located. By convention, this directory is usually called (lowercase) cvsroot. It will contain all of the various CVS "modules" and also the master configuration directory called (uppercase) CVSROOT.

    It does not exactly matter where you put this directory, but for the sake of simplicity, I recommend switching to the e-smith web manager and creating an i-bay called cvsroot. Assign the i-bay to a group that includes all of the people who need to read and write to the repository. User access should be "Write = Group, Read = Group" and public access should be "None".

  5. You now need to initialize the repository so that it can contain data. Execute the following command:

  cvs -d /home/e-smith/files/ibays/cvsroot/files/ init

    You will simply get a prompt back, but if you type ls /home/e-smith/files/ibays/cvsroot/files/ you should see that the directory now contains a subdirectory called CVSROOT.

    Your e-smith server is now ready for use as a CVS server.

  6. Additionally, for each user account that will user CVS, you will need to change their shell to allow them to login to the e-smith server. From the root prompt, you will need to execute the command:

  chsh -s /bin/bash username
  7. When you are finished, log out from the root account.

  8. Finally, in the Remote Access web panel of the e-smith manager, you will need to enable ssh access if you have not already done so.

3. Client Configuration

On the client systems, you will need to configure the cvs client to communicate with the server using ssh, and you will need to set where the CVS repository is. On a Linux system using bash, you would set these two environment variables:

  export CVS_RSH=ssh
  export CVSHOME=user@e-smith-server:/home/e-smith/files/ibays/cvsroot/files/

where user is your username on the server and e-smith-server is the full domain name of your server.

Graphical clients may have different ways to configure these two settings.

As far as obtaining the CVS client software for your client operating system, you can download the basic command-line CVS program from Other versions, including graphical clients, can be found on CVS software is available for Windows, Macintosh, Linux/UNIX and other operating systems.

4. Using CVS

Before people can start using CVS, you will need to import a module into the repository that users can then check out. To do this, follow these steps:

  1. cd into the directory that you want to import into CVS.

  2. Issue the cvs import command as follows:

  cvs import -m "log message" modulename vendortag releasetag

    The vendor tag and release tag are unimportant in most cases and the convention is to use your user name and "start". The quoted text following "-m" is the log message and can be anything descriptive. For example:

  cvs import -m "Initial import into cvs" documentation dyork start

Users can now check out this module using the command:

  cvs co modulename

This will create a directory called modulename that houses the local working copy of that CVS module. Users can now use all the normal CVS commands. More information about using CVS can be found at:


Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Text and no Back-Cover Text. A copy of the GNU Free Documentation License is available on our web site at and from the Free Software Foundation at

The e-smith logo and the terms "e-smith" and "i-bay" are trademarks or registered trademarks of e-smith, inc. in the United States and other countries. Linux is a registered trademark of Linus Torvalds. The terms "ssh" and "Secure Shell" are trademarks of SSH Communications Security Corp. All other trademarks are the property of their respective holders.

If you have comments or suggestions about this document, please send them to