Hermes Software Configuration Changes in 2021

Links below were helpful guides in what was done. It should be assumed that the indicated steps were executed by root.

Another general refresh came in mid-2021... and it advanced Hermes from CentOS 7.8 to 7.9.

As in past years, the update started with the annual upgrade to Mathematica (from 12.1 to 12.3) in August.
This was followed by a request for FLASH to be installed in September. In between, a full system refresh was performed.
In October, MDSPlus, dav2fs, VLC, ffmpeg, and miniconda were installed, while rh-python36 was uninstalled.

yum update
shutdown -r +0

FLASH 4.6.2 turned out to have quite a few dependencies. It was necessary to check that the essential ones were present.
2.1 System requirements

The only one missing was HYPRE, according to the U. Chicago list (which has since moved to Univ. of Rochester).
The other dependencies were either optional or already installed.

yum install hypre

The FLASH source was then requested, downloaded, and unpacked.
2.2 Unpacking and configuring FLASH for quick start

Build properties must be specified in Makefile.h. Fortunately, numerous Makefile.h prototypes are provided in the download.
One of these is suitable for ifort and Open MPI. Here is a diff showing the changes that had to be introduced.

diff -y -t -W 160 --suppress-common-lines FLASH4.6.2/sites/hermes.lps.cornell.edu/Makefile \
     FLASH4.6.2/sites/Prototypes/Linux/Makefile.h.intel | cut -c1-80
# Modified for ifort 19.0.0 and gcc 4.8.5 on Hermes by SRL, 9/24/21            <
# Based on: FLASH4.6.2/sites/Prototypes/Linux/Makefile.h.intel                 <
MPI_PATH   = /usr                                                              |
HDF5_PATH  = /usr                                                              |
HYPRE_PATH = /usr                                                              |
ZLIB_PATH  = /usr                                                              |
NCMPI_PATH =                                                                   |
FFLAGS_OPT   = -c -g -r8 -i4 -O3 -xHost -real_size 64 -diag-disable 10120      |
# -diag-disable 10120                                                          |
-D_LARGEFILE64_SOURCE -ftrapuv -fp-stack-check                                 |
# -diag-disable 10120                                                          <

Note, there is no -diag-disable flag for gcc; however, the other C compiler options work for gcc as as well for icc.
The FLASH tar file was placed in /data3/scratch/FLASH, along with the modified Makefile.h and a README.
One single, multi-user installation is not really feasible, as a setup file must be created to build FLASH for any given situation.
The Sedov blast wave setup was run, and plots of its energy conservation were made with gnuplot, which had to be installed.

yum install gnuplot
gnuplot
gnuplot> plot for [col=6:8] 'sedov.dat' using 0:col with lines

MDSplus was installed from packages at the MDSplus repository, after a second "yum update" and reboot.
This necessitated adding the correct MDSplus repository (OS=rhel7, FLAVOR=stable) to yum's repo list.
The RPMs had to be inspected afterward to determine where the MDSplus files had actually been installed.
Latest RPM's and Yum repositories
Enabling MDSplus Yum Repository

yum install mdsplus
yum list mdsplus*
rpm -ql mdsplus-java
ls /usr/local/mdsplus

The installation was tested by downloading a tutorial and running a script from the "quick tour" collection.
Path problems with the .jar files needed by the jTraverser and jScope commands were resolved by opening a fresh shell.
A quick tour over MDSplus concepts

A related goal was to provide access to the lab's experimental data in Box, which is accomplished through WebDAV.
This additional need was tackled in October.

yum install davfs2
usermod -a -G davfs2 <username>

A user wanted to view .avi files, and VLC seemed like the best tool for this. Installation was pretty straightforward.
How to Install VLC Media Player on CentOS 7

yum install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
yum install vlc
yum install ffmpeg

The ffmpeg libraries were already brought in as a dependency of VLC, so it seemed good to install that application as well.

A couple more discoveries came to light in mid-October 2021:

The problem with ParaView could be traced to VisRTX, as the error messages and stack trace from the crash pointed to it.
The developer-approved "issue fix" (really a workaround) is to set VTK_DEBUG_SKIP_VISRTX_CHECK=1 in the environment.
SIGABRT after throwing VisRTX::Exception in CentOS 6.10 (which links -)
Segfault calling VisRTX_GetContext() at startup (which links -)
Introduce env vars to disable VisRTX and OSPray initialization checks

Launchers in MATE's menu bar and Applications menu were updated by editing /usr/share/applications/paraview.desktop.
(For the origins of this file, see the Hermes initial software configuration page.)

Exec=/usr/bin/bash -c "VTK_DEBUG_SKIP_VISRTX_CHECK=1 /opt/ParaView-5.8.1-MPI-Linux-Python2.7-64bit/bin/paraview-mesa paraview"

Icon paths in this file also shifted to ParaView-5.8.1-MPI-Linux-Python2.7-64bit. Users' desktop launchers may need the fix too.
One other minor issue was resolved; it seems also to have pertained to ParaView 4.3.1, back when it was installed:

chown -R root:root /opt/ParaView-5.8.1-MPI-Linux-Python2.7-64bit

With Python 3, "scl enable rh-python36 bash" no longer worked as expected, because /usr/bin/python3 took precedence.
The latter came in as a dependency during the update to CentOS 7.8, although no specific package appears to depend on it:

yum history package-info python3
rpm -q --whatrequires python3

Since both /usr/bin/python3 and /opt/rh/rh-python36/root/bin/python3 were at version 3.6, the one from RHSCL was uninstalled:

yum remove rh-python36
yum remove rh-python36-numpy
yum remove rh-python36-python
yum remove rh-python36-runtime

This effectively undid the RHSCL installation in August 2019. This also cleared the way for "conda" to be installed from EPEL.
But the real request was for Anaconda/Miniconda, as it turned out, so the conda installation was almost immediately undone.
Instead, miniconda3 was installed to provide the desired conda for Python 3:

yum install conda   # whoops, this isn't the one we wanted...
yum history undo 46
yum clean all       # it seems yum's cache got messed up
rm -rf /var/cache/yum/*
yum makecache
wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh
sh Miniconda3-py39_4.10.3-Linux-x86_64.sh

Certain responses in the installer script are recommended to ensure a good multi-user installation.
Install Anaconda Python Distribution for all users on RHEL/CentOS 7

[accept a license?] yes
[install location?] /usr/local/miniconda3
[do init for root?] no
/usr/local/miniconda3/bin/conda install scipy

The SciPy library brings in NumPy and other packages as dependencies.

Explanation for why the yum package for conda had to be uninstalled, and why the yum package for anaconda isn't right either:
In CentOS 7, the conda package from EPEL does give you some kind of equivalent of miniconda, but it's an old one for Python 2.7.
For Python 3, you need to get the miniconda3 package from anaconda.com--or to be safer, run a script they provide (as above).

What about "yum install anaconda"? Again, simply grabbing a package from the CentOS base repository is the wrong thing to do.
There's another Anaconda in the Linux world: the Anaconda installer, a graphical OS installer for Fedora and its derivatives.
But this isn't what people want when they ask for Anaconda; they mean the well-known Python distribution from Anaconda, Inc.
And what they really want is miniconda3, which provides just the conda package manager and a few basic Python packages.
With conda from miniconda3, users can create personalized conda environments containing the exact Python 3 packages they need.


Last updated on 5/8/23 by Steve Lantz (steve.lantz ~at~ cornell.edu)