Avoiding package incompatibility on a Rocks cluster

After a successful Rocks installation of a cluster, the compute nodes have a set group of packages installed. To bring this cluster into compliance with the Intel® Cluster Ready architecture, we may need to add some additional packages to meet the base software interface that's defined in the specification. Where is the best place to get those packages?

For starters, Rocks comes with CentOS, a Linux distribution that aims to be 100% compatible with Red Hat Enterprise Linux, version by version. But Rocks' version number does not necessarily correspond to the CentOS version number.

For example, Rocks 5.3 comes with CentOS 5.4 "and all updates as of December 15, 2009"[1]. Rocks 5.2 comes with CentOS 5.3 "and all updates as of June 22, 2009"[2]. If the package we need is included in the standard CentOS distribution or an extra repository, it makes sense to pick the closest version to the distribution.  In other words, mixing updates from different distributions, e.g. updating a CentOS 5.3 cluster with packages from a CentOS 5.4 distribution, is more likely to introduce instability, incompatibilities, or issues.

The CentOS Project has a number of mirrors, where the most current version can be found, but older versions are kept on a separate server, accessible from http://vault.centos.org/.

There is yet another case where keeping the OS distribution homogeneous is required. Sometimes, a cluster is built only to run a proprietary application. That application may support only a specific version of Red Hat Enterprise Linux. Mixing versions may add incompatibilities and subtle, hard to debug problems.

As an example, let’s suppose we want to certify a Rocks 5.2 cluster as Intel Cluster Ready. The Intel Cluster Runtime RPM needs the libstdc++.so.5 file, while Rocks installs libstdc++.so.6. Then, we need to download and install the files
compat-libstdc++-33-3.2.3-61.x86_64.rpm and compat-libstdc++-33-3.2.3-61.i386.rpm from http://vault.centos.org/5.3/os/x86_64/CentOS/ by executing:
[shell:nogutter]wget http://vault.centos.org/5.3/os/x86_64/CentOS/compat-libstdc++-33-3.2.3-61.x86_64.rpm
wget http://vault.centos.org/5.3/os/x86_64/CentOS/compat-libstdc++-33-3.2.3-61.i386.rpm
rpm -Uhv compat-libstdc++-33-3.2.3-61.*.rpm[/shell:nogutter] Using the packages from the same version of CentOS keeps us on the safe side - just pick the right download site to use.

[1] http://www.rocksclusters.org/roll-documentation/base/5.3/
[2] http://www.rocksclusters.org/wordpress/?p=109

For more complete information about compiler optimizations, see our Optimization Notice.