In EECS, we support (various releases of) Red Hat Enterprise Linux. The benefit of an enterprise OS is long-term stability, both of the OS and of its software. The disadvantage, though, is that versions of high-flux software such as programming languages like python become stale, and sometimes incompatible with software written in it.

Red Hat recognized that problem and mostly solved it with what they call Software Collections.

The system is based on the scl command (see the man page for more info).

To use Software Collections to gain access to, say, Python 3.4, first see if it’s available on the Linux system you’re using:

murphy.wot% scl -l
devtoolset-3
devtoolset-4
devtoolset-6
python27
rh-java-common
rh-mongodb32
rh-mysql57
rh-python34
rh-python35

In the listing, above, Python 3.4 is installed with the SC package name rh-python34. (If it isn’t installed, request it via the normal means of emailing EECS support.)

But how do you use it? When you type

murphy.wot% scl enable rh-python34 bash

the scl command spawns a new bash shell in which Python 3.4.x is the default version. This also means that you’ll need to type the command above each time you start a new shell–e.g., when you log off and back on, or when you open a new terminal window.

To sum it all up, let’s say we just logged into the machine and want to use Python 3.4. We know it’s already installed. We can use the python --version command to verify we are using the proper version of python.

murphy.wot% python --version
Python 2.6.6
murphy.wot% scl enable rh-python34 bash
murphy.wot% python --version
Python 3.4.2

This technique may be used for any software that’s part of Software Collections.