Authors: Michael Borland, Robert Soliday and Hairong Shang
Packagers: Robert Soliday
If you encounter any installation issues, please soliday@anl.gov.
Preferred Installation Steps
Step 1: Download prebuilt RPMs
Redhat Enterprise Linux (RHEL) 9 x86_64
- SDDSToolKit-5.7-1.rhel.9.x86_64.rpm
- SDDSToolKit-devel-5.7-1.rhel.9.x86_64.rpm
- SDDSEpicsToolKit-5.6-1.rhel.9.x86_64.rpm
- OAGTclTk-1.28-1.rhel.9.x86_64.rpm
- elegant-2024.1.0-1.rhel.9.mpich.x86_64.rpm
- elegant-2024.1.0-1.rhel.9.openmpi.x86_64.rpm
- shower-1.13-1.rhel.9.x86_64.rpm
- spiffe-4.8.2-1.rhel.9.x86_64.rpm
- SDDSJava-5.2.1-1.rhel.9.x86_64.rpm
- clinchor-2.0-1.rhel.9.x86_64.rpm
- shield-1.0-1.rhel.9.x86_64.rpm
Red Hat Enterprise Linux (RHEL) 8 x86_64
- SDDSToolKit-5.7-1.rhel.8.x86_64.rpm
- SDDSToolKit-devel-5.7-1.rhel.8.x86_64.rpm
- SDDSEpicsToolKit-5.6-1.rhel.8.x86_64.rpm
- OAGTclTk-1.28-1.rhel.8.x86_64.rpm
- elegant-2024.1.0-1.rhel.8.mpich.x86_64.rpm
- elegant-2024.1.0-1.rhel.8.openmpi.x86_64.rpm
- shower-1.13-1.rhel.8.x86_64.rpm
- spiffe-4.8.1-1.rhel.8.x86_64.rpm
- SDDSJava-5.2.1-1.rhel.8.x86_64.rpm
- clinchor-2.0-1.rhel.8.x86_64.rpm
- shield-1.0-1.rhel.8.x86_64.rpm
Fedora 41 x86_64
- SDDSToolKit-5.7-1.fedora.41.x86_64.rpm
- SDDSToolKit-devel-5.7-1.fedora.41.x86_64.rpm
- SDDSEpicsToolKit-5.6-1.fedora.41.x86_64.rpm
- OAGTclTk-1.29-1.fedora.41.x86_64.rpm
- elegant-2024.1.0-1.fedora.41.mpich.x86_64.rpm
- elegant-2024.1.0-1.fedora.41.openmpi.x86_64.rpm
- shower-1.13-1.fedora.41.x86_64.rpm
- spiffe-4.8.3-1.fedora.41.x86_64.rpm
- SDDSJava-5.2.1-1.fedora.41.x86_64.rpm
- clinchor-2.0-1.fedora.41.x86_64.rpm
- shield-1.0-1.fedora.41.x86_64.rpm
Fedora 40 x86_64
- SDDSToolKit-5.7-1.fedora.40.x86_64.rpm
- SDDSToolKit-devel-5.7-1.fedora.40.x86_64.rpm
- SDDSEpicsToolKit-5.6-1.fedora.40.x86_64.rpm
- OAGTclTk-1.28-1.fedora.40.x86_64.rpm
- elegant-2024.1.0-1.fedora.40.mpich.x86_64.rpm
- elegant-2024.1.0-1.fedora.40.openmpi.x86_64.rpm
- shower-1.13-1.fedora.40.x86_64.rpm
- spiffe-4.8.2-1.fedora.40.x86_64.rpm
- SDDSJava-5.2.1-1.fedora.40.x86_64.rpm
- clinchor-2.0-1.fedora.40.x86_64.rpm
- shield-1.0-1.fedora.40.x86_64.rpm
Fedora 39 x86_64
- SDDSToolKit-5.7-1.fedora.39.x86_64.rpm
- SDDSToolKit-devel-5.7-1.fedora.39.x86_64.rpm
- SDDSEpicsToolKit-5.6-1.fedora.39.x86_64.rpm
- OAGTclTk-1.28-1.fedora.39.x86_64.rpm
- elegant-2024.1.0-1.fedora.39.mpich.x86_64.rpm
- elegant-2024.1.0-1.fedora.39.openmpi.x86_64.rpm
- shower-1.13-1.fedora.39.x86_64.rpm
- spiffe-4.8.2-1.fedora.39.x86_64.rpm
- SDDSJava-5.2.1-1.fedora.39.x86_64.rpm
- clinchor-2.0-1.fedora.39.x86_64.rpm
- shield-1.0-1.fedora.39.x86_64.rpm
Debian 12 x86_64
- SDDSToolKit-5.7-1.debian.12.x86_64.rpm
- SDDSToolKit-devel-5.7-1.debian.12.x86_64.rpm
- SDDSEpicsToolKit-5.6-1.debian.12.x86_64.rpm
- OAGTclTk-1.28-1.debian.12.x86_64.rpm
- elegant-2024.1.0-1.debian.12.mpich.x86_64.rpm
- elegant-2024.1.0-1.debian.12.openmpi.x86_64.rpm
- spiffe-4.8.2-1.debian.12.x86_64.rpm
- SDDSJava-5.2.1-1.debian.12.0.x86_64.rpm
- clinchor-2.0-1.debian.12.0.x86_64.rpm
- shield-1.0-1.debian.12.0.x86_64.rpm
Debian 11 x86_64
- SDDSToolKit-5.7-1.debian.11.x86_64.rpm
- SDDSToolKit-devel-5.7-1.debian.11.x86_64.rpm
- SDDSEpicsToolKit-5.6-1.debian.11.x86_64.rpm
- OAGTclTk-1.28-1.debian.11.x86_64.rpm
- elegant-2024.1.0-1.debian.11.mpich.x86_64.rpm
- elegant-2024.1.0-1.debian.11.openmpi.x86_64.rpm
- spiffe-4.8.1-1.debian.11.0.x86_64.rpm
- SDDSJava-5.2.1-1.debian.11.0.x86_64.rpm
- clinchor-2.0-1.debian.11.0.x86_64.rpm
- shield-1.0-1.debian.11.0.x86_64.rpm
Ubuntu 24.04 x86_64
- SDDSToolKit-5.7-1.ubuntu.24.04.x86_64.rpm
- SDDSToolKit-devel-5.7-1.ubuntu.24.04.x86_64.rpm
- SDDSEpicsToolKit-5.6-1.ubuntu.24.04.x86_64.rpm
- OAGTclTk-1.28-1.ubuntu.24.04.x86_64.rpm
- elegant-2024.1.0-1.ubuntu.24.04.mpich.x86_64.rpm
- elegant-2024.1.0-1.ubuntu.24.04.openmpi.x86_6.rpm
- shower-1.13-1.ubuntu.24.04.x86_64.rpm
- spiffe-4.8.2-1.ubuntu.24.04.x86_64.rpm
- SDDSJava-5.2.1-1.ubuntu.24.04.x86_64.rpm
- clinchor-2.0-1.ubuntu.24.04.x86_64.rpm
- shield-1.0-1.ubuntu.24.04.x86_64.rpm
Ubuntu 22.04 x86_64
- SDDSToolKit-5.7-1.ubuntu.22.04.x86_64.rpm
- SDDSToolKit-devel-5.7-1.ubuntu.22.04.x86_64.rpm
- SDDSEpicsToolKit-5.6-1.ubuntu.22.04.x86_64.rpm
- OAGTclTk-1.28-1.ubuntu.22.04.x86_64.rpm
- elegant-2024.1.0-1.ubuntu.22.04.mpich.x86_64.rpm
- elegant-2024.1.0-1.ubuntu.22.04.openmpi.x86_6.rpm
- shower-1.13-1.ubuntu.22.04.x86_64.rpm
- spiffe-4.8.2-1.ubuntu.22.04.x86_64.rpm
- SDDSJava-5.2.1-1.ubuntu.22.04.x86_64.rpm
- clinchor-2.0-1.ubuntu.22.04.x86_64.rpm
- shield-1.0-1.ubuntu.22.04.x86_64.rpm
Ubuntu 20.04 x86_64
- SDDSToolKit-5.7-1.ubuntu.20.04.x86_64.rpm
- SDDSToolKit-devel-5.7-1.ubuntu.20.04.x86_64.rpm
- SDDSEpicsToolKit-5.6-1.ubuntu.20.04.x86_64.rpm
- OAGTclTk-1.28-1.ubuntu.20.04.x86_64.rpm
- elegant-2024.1.0-1.ubuntu.20.04.mpich.x86_64.rpm
- elegant-2024.1.0-1.ubuntu.20.04.openmpi.x86_64.rpm
- shower-1.13-1.ubuntu.20.04.x86_64.rpm
- spiffe-4.8.1-1.ubuntu.20.04.x86_64.rpm
- SDDSJava-5.2.1-1.ubuntu.20.04.x86_64.rpm
- clinchor-2.0-1.ubuntu.20.04.x86_64.rpm
- shield-1.0-1.ubuntu.20.04.x86_64.rpm
openSUSE 15.6 x86_64
- SDDSToolKit-5.7-1.openSUSE.15.6.x86_64.rpm
- SDDSToolKit-devel-5.7-1.openSUSE.15.6.x86_64.rpm
- SDDSEpicsToolKit-5.6-1.openSUSE.15.6.x86_64.rpm
- OAGTclTk-1.28-1.openSUSE.15.6.x86_64.rpm
- elegant-2024.1.0-1.openSUSE.15.6.mpich.x86_64.rpm
- elegant-2024.1.0-1.openSUSE.15.6.openmpi.x86_64.rpm
- shower-1.13-1.openSUSE.15.6.x86_64.rpm
- spiffe-4.8.2-1.openSUSE.15.6.x86_64.rpm
- SDDSJava-5.2.1-1.openSUSE.15.6.x86_64.rpm
- clinchor-2.0-1.openSUSE.15.6.x86_64.rpm
- shield-1.0-1.openSUSE.15.6.x86_64.rpm
openSUSE 15.5 x86_64
- SDDSToolKit-5.7-1.openSUSE.15.5.x86_64.rpm
- SDDSToolKit-devel-5.7-1.openSUSE.15.5.x86_64.rpm
- SDDSEpicsToolKit-5.6-1.openSUSE.15.5.x86_64.rpm
- OAGTclTk-1.28-1.openSUSE.15.5.x86_64.rpm
- elegant-2024.1.0-1.openSUSE.15.5.mpich.x86_64.rpm
- elegant-2024.1.0-1.openSUSE.15.5.openmpi.x86_64.rpm
- shower-1.13-1.openSUSE.15.5.x86_64.rpm
- spiffe-4.8.2-1.openSUSE.15.5.x86_64.rpm
- SDDSJava-5.2.1-1.openSUSE.15.5.x86_64.rpm
- clinchor-2.0-1.openSUSE.15.5.x86_64.rpm
- shield-1.0-1.openSUSE.15.5.x86_64.rpm
Step 2: Build your own RPM (optional)
You may want to build your own RPMs if you are running a Linux system not listed above or you want to use a custom MPI for Pelegant.
Install the required development packages:
Ensure the following packages are installed based on your Linux distribution:
- Redhat Enterprise Linux:
- tcl, wget, subversion, gzip, tar, make, rpmdevtools, rpm-build, gcc, gcc-c++, gcc-gfortran, zlib-devel, gd-devel, libpng-devel, libtiff-devel, lapack-devel, blas-devel, gsl-devel, fftw-devel, openmotif-devel, motif-devel, libXaw-devel, ncurses-devel, readline-devel, libXt-devel, libXp-devel, tcl-devel, tk-devel, tcsh, python-devel, tktable, hdf5-devel, boost-devel
- Ubuntu:
- tcl, wget, subversion, gzip, tar, make, rpm, alien, gcc, g++, gfortran, zlib1g-dev, libgd2-xpm-dev, liblapack-dev, libblas-dev, libgsl0-dev, libfftw3-dev, libxaw7-dev, libncurses5-dev, libpng12-dev, libxt-dev, libxp-dev, tcl-dev, tk-dev, tk-table, csh, python-dev, libmotif-dev, libtiff5-dev, libreadline6-dev, libhdf5-dev, boost-dev
- Redhat Enterprise Linux:
Download and run the build script:
curl -O https://ops.aps.anl.gov/downloads/Build-AOP-RPMs chmod a+x Build-AOP-RPMs sudo ./Build-AOP-RPMs
It is recommended to run this as sudo to install the necessary system development software using yum or apt-get as root. If you choose to run without sudo, ensure all required development packages are already installed.
If building Pelegant (the parallel version of elegant), locate the directory containing
mpicc
(typically in/usr/bin/
,/usr/lib64/mpich2/bin/
, or/usr/lib64/openmpi/bin/
) prior to running the script. It will query you on it's location.After running the script the RPMs will be located in
~/rpmbuild/RPMS/x86_64/
or~/rpmbuild/RPMS/i386/
.
Step 3: Install or upgrade SDDS and AOP software
To install or upgrade the SDDS and AOP software, you can use the following commands:
Review installed files:
rpm -qpl package.x86_64.rpm
Install or upgrade packages:
For Fedora and RedHat systems:
rpm -Uvh package.x86_64.rpm
For Ubuntu systems:
alien -i package.x86_64.rpm
Step 4: Install the sdds Python module (optional)
The sdds is available through either PyPI or Anaconda
PyPI Package:
python -m pip install soliday.sdds
Conda (Anaconda) Package:
conda install soliday::sdds
Step 5: Final steps
Download defns.rpn:
curl -O https://ops.aps.anl.gov/downloads/defns.rpn mv defns.rpn ~/.defns.rpn
Update ~/.bash_profile (RHEL, Fedora) or ~/.profile (Ubuntu, Debian):
export RPN_DEFNS=$(HOME)/.defns.rpn export HOST_ARCH=linux-x86_64 export EPICS_HOST_ARCH=linux-x86_64
Compiling from Source Code
Step 1: Configure the environment
Update ~/.bash_profile (RHEL, Fedora) or ~/.profile (Ubuntu, Debian)
export PATH=$(HOME)/epics/base/bin/linux-x86_64:$(HOME)/epics/extensions/bin/linux-x86_64:$(HOME)/oag/apps/bin/linux-x86_64:$PATH export HOST_ARCH=linux-x86_64 export EPICS_HOST_ARCH=linux-x86_64 export RPN_DEFNS=$(HOME)/.defns.rpn
Step 2: Download and compile EPICS/Base, SDDS ToolKit, SDDS EPICS Toolkit, OAGTcl/Tk, and Elegant
cd ~ mkdir epics cd epics curl -O https://epics.anl.gov/download/base/base-7.0.8.1.tar.gz tar -xf base-7.0.8.1.tar.gz rm base-7.0.8.1.tar.gz ln -s base-7.0.8.1 base git clone https://github.com/epics-extensions/extensions cd .. curl -O https://ops.aps.anl.gov/downloads/defns.rpn curl -O https://ops.aps.anl.gov/downloads/SDDS.5.7.tar.gz curl -O https://ops.aps.anl.gov/downloads/SDDSepics.5.6.tar.gz curl -O https://ops.aps.anl.gov/downloads/oag.apps.configure.tar.gz curl -O https://ops.aps.anl.gov/downloads/oag.1.29.tar.gz curl -O https://ops.aps.anl.gov/downloads/elegant.2024.1.0.tar.gz tar -xf SDDS.5.7.tar.gz tar -xf SDDSepics.5.6.tar.gz tar -xf oag.apps.configure.tar.gz tar -xf oag.1.29.tar.gz tar -xf elegant.2024.1.0.tar.gz rm SDDS.5.7.tar.gz rm SDDSepics.5.6.tar.gz rm oag.apps.configure.tar.gz rm oag.1.29.tar.gz rm elegant.2024.1.0.tar.gz mv defns.rpn .defns.rpn cd epics/base/configure echo "SHARED_LIBRARIES=NO" >> CONFIG echo "LINKER_USE_RPATH=NO" >> CONFIG echo "COMMANDLINE_LIBRARY=" >> CONFIG cd .. make -j cd ../extensions/configure make clean all cd ../src/SDDS make clean make -j make cd ../oagca make clean make -j cd ../SDDSepics make clean make -j cd ../../../.. cd oag/apps/configure echo "EPICS_BASE=$(dirname $(dirname $(dirname $(pwd))))/epics/base" >> RELEASE echo "EPICS_EXTENSIONS=$(dirname $(dirname $(dirname $(pwd))))/epics/extensions" >> RELEASE make clean all cd ../src/utils/tools make clean make -k cd ../../tcltklib make clean all cd ../tcltkapp/oagapp make clean all cd ../../physics make clean make -j cd ../xraylib make clean make -j cd ../elegant make clean make cd elegantTools make clean make cd ../sddsbrightness make clean make
Additional Resources