Software Collections

What is SCL?

Software Collections (SCL) is a set of software (like Python and Perl) which are packaged so they install under /opt/rh and so do not conflict with the versions packaged and required by the operating system version.

There are Software Collections for later versions of Python and Perl. There is also Devtoolset which is a collection that contains later versions of gcc, c++, gfortan and the libc and libc++ libraries. This is what has been installed so far on the HPC nodes:

$ scl -l

Using SCL

To use an installed SCL package, you need to explicitly enable it “on a per-command basis” using scl:

$ scl enable <scl-package-name> <command> 

For example, to enable python33 package for python command:

$ scl enable python33 'python --version' 

If you want to run multiple commands in an interactive way while using the python33 package, you can create an SCL-enabled bash session as follows.

$ scl enable python33 bash

Within this bash session, the default python will be switched to 3.3 until you type exit and kill the session.

To execute a number of commands, which are stored in a file, in the Software Collection environment, run the following command:

$ cat | scl enable software_collection_1 - 

If you with to use SCL environments in a PBS job then “source” the “enable” script provided with the devtoolset. For example, with the Devtoolset 4, the command is:

source /opt/rh/devtoolset-4/enable


source scl_source enable devtoolset-4

You would also use the “source” method if you wanted to run SCL commands within your ~/.bashrc or ~/.bash_profile.

Do not run scl enable software_collection_1 bash within ~/.bashrc or ~/.bash_profile! You will end up with a forkbomb.


[Software Collections Directory] (

This is custom footer