Installation with lsstsw and lsst-build

This page guides you through installing the LSST Science Pipelines from source with lsstsw and lsst-build. These are the same tools LSST Data Management uses to build and test the Science Pipelines.

Since lsstsw presents the Science Pipelines as a directory of Git repositories cloned from, this installation method can be very convenient for developing Science Pipelines code. Other methods of installing LSST Science Pipelines software are and Docker.

If you have issues using lsstsw, here are two ways to get help:

1. Prerequisites

The LSST Science Pipelines can generally be compiled on CentOS, Debian, and macOS platforms. See Platform compatibility for information about LSST’s official reference platform and build reports with other platforms.

Before you begin:

2. Deploy lsstsw

Begin by choosing a working directory, then deploy lsstsw into it:

git clone
cd lsstsw
source bin/

For more information about the deploy command, see About the lsstsw deploy script.

3. Build the Science Pipelines packages

From the lsstsw directory, run:

rebuild lsst_distrib

Once the rebuild step finishes, note the build number printed on screen. It is formatted as “bNNNN.” Tag this build as current so that EUPS can set it up by default:

eups tags --clone bNNNN current

Finally, set up the packages with EUPS:

setup lsst_distrib

See Setting up installed LSST Science Pipelines for more information.


You can do more with the build command, including building from branches of GitHub repositories. For more information:

4. Testing Your installation (optional)

Once the LSST Science Pipelines are installed, you can verify that it works by running a demo project. This demo processes a small amount of SDSS data.

Sourcing the Pipelines in a new shell

In every new shell session you will need to set up the Science Pipelines environment and EUPS package stack.

Run these two steps:

  1. Activate the lsstsw software environment by sourcing the script in lsstsw’s bin directory:

    source bin/

    If you are running in a csh or tcsh, run this set up script instead:

    source bin/setup.csh
  2. Set up a top-level package:

    setup lsst_distrib

    Instead of lsst_distrib, you can set up a different top-level package like lsst_apps or any individual EUPS package you previously installed. See Top-level packages to install.

Next steps and advanced topics

About the lsstsw deploy script

The deploy script automates several things to prepare an LSST development environment:

  1. Installs Git.
  2. Installs Git LFS (you are still responsible for configuring it).
  3. Installs a Miniconda Python 3 environment specific to this lsstsw workspace.
  4. Installs EUPS into eups/current/.
  5. Clones lsst-build, which runs the build process.
  6. Clones versiondb, a robot-managed Git repository of package dependency information.
  7. Creates an empty stack installation directory, stack/.

This environment, including the EUPS, Miniconda, Git, and Git LFS software, is only activated when you source the bin/ or bin/setup.csh scripts in a shell. Otherwise, lsstsw does not affect the software installed on your computer.

See also: lsstsw deploy command reference.

About the lsstsw rebuild command

The rebuild command accomplishes the following:

  1. Clones all Science Pipelines packages from The repos.yaml file in the repository maps package names to GitHub repositories.
  2. Runs the Scons-based build process to compile C++, make Pybind11 bindings, and ultimately create the lsst Python package. The stack is built and installed into the stack/ directory inside your lsstsw/ work directory.

lsstsw clones repositories using HTTPS (see repos.yaml). Our guide to Setting up a Git credential helper will allow you to push new commits up to GitHub without repeatedly entering your GitHub credentials.

See also: lsstsw rebuild command reference.

Building from branches

lsstsw’s rebuild command enables you to clone and build development branches.

To build lsst_distrb, but use the Git branch my-feature when it’s available in a package’s repository:

rebuild -r my-feature lsst_distrib

Multiple ticket branches across multiple products can be built in order of priority:

rebuild -r feature-1 -r feature-2 lsst_distrib

In this example, a feature-1 branch will be used in any package’s Git repository. A feature-2 branch will be used secondarily in repositories where feature-1 doesn’t exist. Finally, lsstsw falls back to using the master branch for repositories that lack both feature-1 and feature-2.

lsstsw deploy command reference

usage: [-2|-3] [-b] [-h]

Install a Python 2-based Miniconda (not supported for v16_0 of the LSST Science Pipelines and later)


Use a Python 3-based Miniconda (default).


Use bleeding-edge conda packages.


Print the help message.

lsstsw rebuild command reference

rebuild [-p] [-n] [-u] [-r <ref> [-r <ref2> [...]]] [-t <eupstag>] [product1 [product2 [...]]]

Prep only.


Do not run git fetch in already-downloaded repositories.


Update the repos.yaml package index to the master branch on GitHub of

-r <git ref>

Rebuild using the Git ref. A Git ref can be a branch name, tag, or commit SHA. Multiple -r arguments can be given, in order or priority.


EUPS tag.