You are here

Software Collections

This page does not cover Ubuntu

Software Collections is a RedHat (SL7) feature, with no equivalent in Ubuntu. However if you need access to a newer version of something that's not in DICE Ubuntu, you can ask for help using the Computing support form.

We are aware that the standard versions of various developer tools provided as part of a Scientific Linux release (e.g. SL7) can become quite old. To gain access to newer versions various software collections can be added to a system. Red Hat provides a guide to the available software collections.

Redhat summarises the software collections as: "For certain applications, more recent versions of some software components are often needed in order to use their latest new features. Red Hat Software Collections is a Red Hat offering that provides a set of dynamic programming languages, database servers, and various related packages that are either more recent than their equivalent versions included in the base Red Hat Enterprise Linux system, or are available for this system for the first time."

There is a wide variety of software collections available. We can usually provide access to any that are hosted on the Software Collections website.

To find out which collections are already installed on a DICE machine use the scl command:

scl --list

Developer Toolset

Probably the most useful software collection for most of our users will be devtoolset. This provides access to an extensive set of software packages. In particular it includes the latest versions of the GNU Compiler Collection (GCC), which allows DICE (SL7) users to take advantage of GCC version 10.

The version of devtoolset on DICE SL7.9 is version 10. This provides access to the GNU Compiler Collection (GCC) version 10.2.1. Red Hat provides useful information on its website.

The devtoolset packages are installed in an alternate location so that they can exist on a system alongside the standard versions. This means they are not in the standard path. To activate the devtoolset you need to do something like this:

scl enable devtoolset-10 bash

This would launch a new sub-shell with the necessary settings for your path, library load path, etc. When you exit the shell (in the usual way with ctrl-d or by typing exit) everything returns to normal.

You can run any application or script you wish, it does not need to be a shell.

The scl enable command is used to enable the specified software collection.

LLVM Toolset

Another popular software collection is the LLVM Toolset which provides access to newer versions of LLVM, LLDB and the clang compiler. Currently this provides version 5.0.1.

As with the devtoolset the llvm-toolset packages are installed in an alternate location so that they can exist on a system alongside the standard versions. This means they are not in the standard path. To activate this collection you need to do something like this:

scl enable llvm-toolset-7 bash

Using Software Collections by default

One way would be to alias the software, but 'scl enable' uses the shell positional parameters in such a way that an alias confuses things - it looks in the "wrong" place for the name of the software collection. You can use a function, such as function python() { scl enable rh-python36 python $*; } ...but we'd suggest not overriding defaults in this way except on a case-by-case basis.

If you'd like to keep the scl environment enabled without launching a new shell there is a tool to allow this, called "scl_source". To summarise, you can replace your alias with one line in your .brc file:

source scl_source enable rh-python36

However this should be used with care: it is likely to confuse you if run on a machine which doesn't carry the collection, or confuse system-provided software that expects the default, older version of something.

Other Available Collections

On SL7 the following collections are either already installed or can be made available immediately upon request:

  • rh-git29 - git 2.9.3
  • rh-git227 - git 2.27
  • rh-php70 - php 7.0.27
  • rh-php71 - php 7.1.30
  • rh-php72 - php 7.2.24
  • rh-php73 - php 7.3.29
  • rh-nodejs8 - nodejs 8.16.1
  • rh-python35 - python 3.5.1 (see also Python & SCL)
  • rh-python36 - python 3.6.3 (see also Python & SCL)
  • rh-ruby26 - ruby 2.6.2 (see also Ruby & SCL)
  • sclo-subversion19 - subversion 1.9.3 (allows access to working copies using the latest version 31 format - important for Ubuntu Focal forward compatibility)

The following collections can be made available if there is sufficient interest:

  • devtoolset-11 - Gnu Compiler Collection 11.2.1
  • go-toolset-7 - golang 1.10.2
  • passenger40 - passenger 4.0.50
  • rh-mariadb105 - MariaDB 10.5.9
  • rh-maven35 - maven 3.5
  • rh-mongodb36 - mongo DB 3.6.3
  • rh-mysql80 - MySQL 8.0.26
  • rh-nginx120 - nginx 1.20
  • rh-nodejs14 - nodejs 14.18.2
  • rh-perl530 - perl 5.30.1
  • rh-python38 - python 3.8.11 (see also Python & SCL)
  • rh-redis5 - redis 5.0.3
  • rh-ror50 - Ruby on Rails 5.0
  • rh-ruby30 - Ruby 3.0.2
  • rh-scala210 - scala 2.10.6
  • rh-thermostat16 - thermostat 1.6.6
  • rh-varnish6 - varnish 6.0.2
  • rust-toolset-7 - rust 1.26.2

To ask for a software collection please use the computing support form.

Last reviewed: 

System Status

Home dirs (AFS)
Other services
University services
Scheduled downtime

Choose a topic