Installing the MicroBooNE development environment

This article will cover methods of installing the full MicroBooNE development environment, such that you can do software development in larsoft, on your personal desktop or laptop computer, or computer systems located at non-Fermilab institutions. In general, there are three methods.
  • Access binary distribution using CVMFS.
  • Download binary distribution tarballs from the scisoft server.
  • Build distribution from source

People who are intending to maintain a binary installation of the MicroBooNE environment are strongly advised to use either binary distribution method, rather than building from source, if at all possible.

Accessing the MicroBooNE development environment using CVMFS

Your first step is to install and configure the CVMFS client. Instructions for doing this are posted in an accompanying article, for both SLF and MacOS. You will want to configure CVMFS to mount the Fermilab-hosted cvmfs repositories,, and Once CVMFS is installed and configured, you are practically finished. The full MicroBooNE development environment is available. New releases update automatically. In principle, you never have to touch it again.

The standard mountpoints for CVMFS repositories are


Initializing the MicroBooNE development environment using CVMFS

Assuming you have cvmfs repositories mounted at the standard paths, you can initialize the MicroBooNE development environment by sourcing the standard CVMFS initialization script.

source /cvmfs/

After initializing the MicroBooNE environment, the following ups products areas will be on your ups products path ($PRODUCTS).

Most ups products that are available from /grid/fermiapp on the ubooengpvmXX login machines are also available from CVMFS.

Downloading the MicroBooNE development environment from scisoft

Prebuilt binaries of products required by the MicroBooNE development environment are available as tarballs from the scisoft products server ( Setting up a binary distribution consists of downloading the appropriate tarballs and untarring them in your ups products area. Tools are available to handle installation of dependent ups products.

Setting up a UPS products area

The first time you install the larsoft binary distribution from scisoft, you need to set up your own ups products area. The only thing you need to do is to make an empty directory.

mkdir /path/to/my/products

Since the larsoft binary distribution includes ups itself, ups configuration happens automatically whenever you install or update your larsoft distribution, including the first time you do it.

In contrast to /grid/fermiapp and CVMFS, where there are three separate ups products areas for MicroBooNE, larsoft, and Fermilab common products, people are encouraged to maintain only a single ups products area when downloading ups products from scisoft.

Installing or updating a binary distribution

When you install larsoft or uboonecode using the tools described in this section, you automatically get all dependent ups products (art, root, geant4, etc.). When you install uboonecode you get dependent ups products, including larsoft, automatically.

Open the scisoft home page ( in a web browser. Click on link "MicroBooNE Distribution" to find out which versions are available for download. Click on the version you want, then click on the html file containing install instructions. This web page is informational only, as it does not contain links to any content that is specific to the particular version.

The first thing the install web page instructs you to do is to download a copy of script pullProducts, if necessary. The script itself is generic. You don't need to download a new copy with each release. You need one invocation of pullProducts for each binary flavor you want to install. The general form of the pullProducts command takes five arguments.
pullProducts <product-directory> <OS> <distribution> <qualifiers> <build-type>

The arguments are as follows.
  • product-directory - The base of your ups products area.
  • OS - One of slf5, slf6, d13 (MacOS Mavericks), or d14 (MacOS Yosemite).
  • distribution - The name of the distribution bundle. Typical names are larsoft-xx.yy.zz and uboone-xx.yy.zz.
  • qualifiers - Hyphen-separated list of ups qualifiers. The install web page should tell you what qualifiers are available.
  • build type - Debug or prof.

In a typical installation, you would install one OS and one set of qualifiers for the uboonecode distribution, for both built types debug and prof (a total of two invocations of pullProducts).

pullProducts /path/to/my/products slf6 uboone-04.03.01 e7 debug
pullProducts /path/to/my/products slf6 uboone-04.03.01 e7 prof

The above commands will install larsoft and uboonecode in a single ups products area, which is the simplest and recommended arrangement.

The script pullProducts can be invoked with or without ups having been initialized beforehand. If ups is initialized, pullProducts won't reinstall any product that already exists in any ups area on the products path (not just the one specified in the first argument of pullProducts). If you want to maintain larsoft and uboonecode in separate ups products areas, install larsoft first, then initialize ups (if not already done), then install uboonecode.

pullProducts /path/to/larsoft/products slf6 larsoft-04.03.01 s7-e7 debug
pullProducts /path/to/larsoft/products slf6 larsoft-04.03.01 s7-e7 prof
source /path/to/larsoft/products/setup
pullProducts /path/to/uboone/products slf6 uboone-04.03.01 e7 debug
pullProducts /path/to/uboone/products slf6 uboone-04.03.01 e7 prof

Initializing the MicroBooNE development environment (scisoft version)

If you follow the instructions in this section, you will have a single ups products area containing all ups products required by the MicroBooNE development environment, but you won't have the MicroBooNE-specific initialization script in your ups products area. You will have the generic ups setup script setup, which works and you can use it.
source /path/to/my/products/setup

This script will initialize the ups system, including defining the setup alias and setting environment variable $PRODUCTS, etc. You may want to create a site-specific initialization script that sources the generic setup script, and does other things. Here are the sorts of things you might want to include in a site-specific setup script.
  • Initialize some specific ups products.
    setup git
    setup gitflow
    setup mrb 
  • Define certain environment variables.
    export MRB_PROJECT=larsoft
    export EXPERIMENT=uboone
    export SAM_EXPERIMENT=uboone
    export FW_SEARCH_PATH=/path/to/my/data:${FW_SEARCH_PATH}

Installing products using upd.

Some ups products that are of interest to MicroBooNE are not distributed via One example of such a ups product is sam_web_client. Such products may still be installed using upd. Here is the upd command for installing sam_web_client.

upd install -G -c sam_web_client <version>

Option "-G -c" tells upd to declare the installed version as "current."

For the above method to work, the upd command must be available on the execution path. If upd is installed, you can simply set it up.

setup upd

However, since upd itself is not distributed via, you need to use another method to get upd installed in your products area. The method to do this is the "ups/upd bootstrap" (instructions here). Visit the Fermilab ftp products server. Clock on the latest version bootstrap directory ("v3_0" at time of writing) and download the unified-layout tarball (has "unified" in the name) corresponding to your architecture, and untar it in your products area.

cd /path/to/my/products
tar xzvf ups_bootstrap_unified_v5_0_4_Linux64bit+2.tar.gz

Now upd and ups are installed. You can initialize ups in the usual way.
source /path/to/my/products/setup

Building the MicroBooNE development environment from source

To be added.