Installing CMS software with Pacman

Introduction

Recently, there has been an effort to simplify the installation of CMS software. We have developed a simple yet flexible installation by using a software installation program called Pacman. We call this particular installation setup CMS-Pacman. Pacman is esentially an installer-installer: it is easy to package up a variety of software that is packaged in different ways and make an easy installation with Pacman.

Our Pacman installation can install three different pieces of the CSM software: Impala, BOSS, and CMSIM. You can do a simple installation of all of the software in one directory or you can install each of them in different directories. You can install one copy or multiple copies. Pacman will install the software and do some configuration on your behalf. It will also provide an environment file you can use to set up user's environments to use the software.

Before we examine how to install CMS-Pacman, we will give you some background on obtaining and setting up Pacman.

Setting up Pacman

Pacman is written in Python, and requires that you have Python 1.5.2 or later installed on your system. Most Linux systems come with Python installed, but if your system doesn't have it, you will want to obtain it from the Python website. Then, setting up Pacman is easy:

  1. Download Pacman.
  2. Unpack pacman: tar xzf pacman-2.080.tar.gz
  3. Change into the pacman directory: cd pacman-2.080
  4. Setup your environment: source setup.csh Note that you can use setup.sh, if you use a sh/bash-type shell. Also, this just sets your PATH to find pacman, and it makes no other changes.
At this point, you are ready to use Pacman and install the CMS software.

Installing CMS software in a single directory

This procedure will install three pieces of software into a single directory. They are:

Make a directory that you want to install the software into. For this example, we will codetend you are installing it into /usr/local/cms/. Installing the software is just three commands:

  1. cd /usr/local/cms
  2. pacman -cache:http://www.cs.wisc.edu/~roy/cms_cache/
    This will ask you three yes/no questions. Answer 'y' to each of them to indicate that you are willing to get the software from the CMS software cache at Wisconsin.
  3. pacman -get cms_software

Note that the second command, which tells Pacman where the CMS software is installed, will be eliminated or simplified in future versions of Pacman. You can also combine the two commands into one, if you wish: pacman -get http://www.cs.wisc.edu/~roy/cms_cache/:cms_software

When you execute this command, you'll see some output as Pacman does it's work. It will look something like this:

Fetching [http://computing.fnal.gov/cms/software/SPRING02/Pyt6158_Sim125.1.tar]...
Fetching [http://www.cs.wisc.edu/~roy/cms_cache/software/boss-v3_0.tar.gz]...
Fetching [http://www.cs.wisc.edu/~roy/cms_cache/software/boss_30_install.tar.gz]..
...
impala_331_install/
impala_331_install/impala_install.sh
impala_331_install/impala_install.sh~
Configuring IMAPALA...
Editing Impala.config
Editing LocalDefaults.rsc
Done.

Be patient--it takes a long time to download CMSIM, which is 217MB

Note that BOSS will attempt to install MySQL if you are logged in as root and it isn't already installed. In any case, you will need to enter the root MySQL database password as part of the installation. If you don't know it, you can always correct the installation later--it won't cause problems during this installation phase.

When the installation has completed, you will notice several files in the directory, in addition to the software that was installed.

Installing individual pieces of CMS software

If you would rather install just a piece of the CMS software, you can select which pieces you would like to install. Setup Pacman as above, and then execute the same commands to begin your installation:

  1. cd /usr/local/cms
    (Or whatever directory you wish to install into.)
  2. pacman -cache:http://www.cs.wisc.edu/~roy/cms_cache/
  3. pacman -get <package-name>, where package-name can be any one of:
    For example, you can do: pacman -get boss_32_install, to install BOSS v3.2. You can also install multiple pieces at once by listing each piece, such as: pacman -get boss32_install impala_331_install

Multiple versions of software (relative installations)

Pretend you've installed the CMS softare into /cms. You would like to try out BOSS 3.2 to see if it works with the other CMS software. You can make a relative installation in another directory, say /cms-test that looks like a complete installation but only has BOSS 3.2Here is what you do:

  1. cd /cms-test
  2. Tell Pacman you want to do a relative installation: pacman -cache:/cms
  3. Tell Pacman you want to use the same cache to get the software: pacman -cache:http://www.cs.wisc.edu/~roy/cms_cache
  4. Install the new BOSS: pacman -get boss_32_install
  5. Setup the other software: pacman -get impala_331_install
    pacman -get cmsim_125.1

    These pacman commands create a "relative installation" in /cms-test which partly uses software from /cms and partly installs new software (boss_32_install). You can see this if you do: pacman -info in the /cms-test area. Note that the setup.csh file in /cms-test is properly set up to point at the software in /cms, where necessary. The /cms installation is not disturbed by the relative operation and users who are using /cms will be totally unaffected. There can be any number of installations relative to /cms and an installation can use any number of parent installation by simply listing them in the 'caches' file.

As before, you can combine these commands into one, if you wish. For instance, you can do: pacman -cache:http://www.cs.wisc.edu/~roy/cms_cache -get boss_32_install impala_331_install cmsim_125.1

Final Notes

Pacman gets the software using HTTP. If you behind a firewall that requires you to use an HTTP proxy server, you need to let Pacman know about it. You can do this by setting an environment variable before running any pacman commands. Note that the variable really is in all lowercase, not in uppercase:

setenv http_proxy http://proxy.foo.com:4000

If you have comments or questions, please email Alain Roy at: roy@cs.wisc.edu.