Installing products on cvmfs

In most circumstances, users are expected to get the larsoft release from cvmfs. There is a README in cvmfslarsoft with basic instructions.

Because the home directory is tiny by design, we use a temporary directory on cvmfs when installing products. It is important to make sure this directory is empty before finalizing the download via cvmfs publish. Note that if there are real problems, you can always abort the cvmfs transaction.

basic steps

  • login to your cvmfs distribution account
  • get a copy of pullProducts from SciSoft
  • start a cvmfs transaction
  • Make a hidden working directory in your cvmfs project directory.
    • This is a one-time operation. Once you've made it, you just have to make sure it is empty before you publish.
    • larsoft uses /cvmfs/
  • install the project distribution with pullProducts -r
    • The -r option does automatic cleanup, removing tarballs after they have been downloaded and installed.
  • fix any problems you encounter
  • remove the manifests left in the hidden directory
  • You need to do some manual sanity checks before proceeding, such as making sure the products were installed as expected and that no files remain in the hidden working directory.
  • Make sure you are in the home directory before publishing.
  • If everything is good, publish the transaction
  • The "cvmfs abort" command can be used to abort everything and return to the state before you started working.

LArSoft specific example

For LArSoft, we wrote a script to call pullProducts. The script will download for all supported platforms.

The LArSoft cvmfs distribution includes products for SLF6, SLF7, and Mojave. At the time of this writing, the script will install sXX-e19 and sXX-c7 for SLF7. It will install sXX-c7 for Mojave. Because SLF6 does not support python3, we install sXX-e19-py2 and sXX-c7-py2 for SLF6.

cvmfs_server transaction
./scripts/ larsoft v08_49_00 s96-e19
ll /cvmfs/
ll /cvmfs/
ll /cvmfs/
(These are checks.)
time cvmfs_server publish
(The time command is optional, but informative.)