Software Collections on RHEL6/CentOS6
Some months ago Red Hat introduced Red Hat Software Collections 1.0 Beta (which was later released) which is essentially a software suite that as of the first release 1.0 introduces newer versions of programming languages such as Python 2.7 and 3.3, PHP 5.4, Perl 5.6.13 and databases MariaDB / MySQL 5.5 and PostgreSQL 9.2. The beauty part of this collection is that it allows installing multiple versions of the same software on the same machine, each in its own separate environment, so there are no conflicts and the OS package stack remains unchanged (SCL applications are installed outside of standard system directories e.g. /opt/rh and their names differ from the ones shipped with the OS e.g. httpd24 vs httpd) .
Red Hat Software Collections 1.0 is only available to customers with an active subscription, but luckily there are alternatives for the Red Hat derivatives:
The Software Collections Fedora community
The project offers distinct repositories for each package. While not as convenient as the RedHat official channel where all packages are provided within the same repository, the Fedora community packages are basically the same thing as the original, although not supported and distributed via so-called testing repositories. Each package is available through its own repo, so one has to install quite a few repos in order to get all packages from the RedHat SCL which may seem a bit excessive but it gets the job done.
Tagged with either EL or RHEL followed by the release version 5 or 6, the packages should work fairly well on most RedHat clones. I tried installing a few on CentOS 6 and didn’t have any issues whatsoever.
wget -P /etc/yum.repos.d/ http://jplesnik.fedorapeople.org/repository/perl516-collection.repo yum install perl516 wget -P /etc/yum.repos.d/ http://people.redhat.com/bkabrda/scl_python33.repo yum install python33
CentOS SCL
This is in fact very similar to the Red Hat release as the CentOS developers rebuilt the RPMs from the same source code. Unlike the Fedora-hosted versions, this software collection is available within the same repository (same as RedHat) so installation and maintenance is much easier.
yum install centos-release-SCL yum install perl516 python33
The first command installs the CentOS SCL repository (CentOS-SCL.repo) that hosts all packages. To find available RPMs, simply query the repository:
yum --disablerepo=* --enablerepo=scl list available
Usage
Having more than one version of the same software installed on a machine is beneficial, but how do we go about using them? The packages in the SCL are different by design (JavaScript runtime, programming languages, databases), but using them is essentially the same as each one has its own unique name and path. The scl utility (part of the scl-utils RPM) is used to execute commands from the software collections.
#perl -v This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi #scl enable perl516 'perl -v' This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi # scl enable perl516 bash # perl -v This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi # exit exit # perl -v This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi # source /opt/rh/perl516/enable # perl -v This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi
Final thoughts
The advantage of using software collections is obvious as different versions of the same software can co-exist on the same machine independently of each other. SCLs also facilitate the use of newer software on older Operating Systems (such as Enterprise Linux distros) which is really important as upgrading the OS is not always an option. Looking forward to the next release!