Guide to Installing SDDS and AOP Simulation Software on Linux Computers

Authors: Michael Borland, Robert Soliday and Hairong Shang
Packagers: Robert Soliday

If you encounter any installation issues, please [email protected].

Preferred Installation Steps

Step 1: Download prebuilt RPMs

Redhat Enterprise Linux (RHEL) 10 x86_64
Redhat Enterprise Linux (RHEL) 9 x86_64
Red Hat Enterprise Linux (RHEL) 8 x86_64
Fedora 42 x86_64
Fedora 41 x86_64
Fedora 40 x86_64
Fedora 39 x86_64
Debian 12 x86_64
Debian 11 x86_64
Ubuntu 25.04 x86_64
Ubuntu 24.04 x86_64
Ubuntu 22.04 x86_64
Ubuntu 20.04 x86_64
openSUSE 15.6 x86_64
openSUSE 15.5 x86_64

Step 2: Install or upgrade SDDS and AOP software

To install or upgrade the SDDS and AOP software, you can use the following commands:

  1. Review installed files:

    rpm -qpl package.x86_64.rpm
  2. 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 3: Install the sdds Python module (optional)

The sdds is available through either PyPI or Anaconda

  1. PyPI Package:

    python -m pip install soliday.sdds
  2. Conda (Anaconda) Package:

    conda install soliday::sdds

Step 4: Final steps

  1. Download defns.rpn:

    curl -O https://ops.aps.anl.gov/downloads/defns.rpn
    mv defns.rpn ~/.defns.rpn
  2. 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

mkdir epics
cd epics
curl -O https://epics.anl.gov/download/base/base-7.0.9.tar.gz
tar -xf base-7.0.9.tar.gz
rm base-7.0.9.tar.gz
ln -s base-7.0.9 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.8.tar.gz
curl -O https://ops.aps.anl.gov/downloads/SDDSepics.5.8.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.2025.1.0.tar.gz
tar -xf SDDS.5.8.tar.gz
tar -xf SDDSepics.5.8.tar.gz
tar -xf oag.apps.configure.tar.gz
tar -xf oag.1.29.tar.gz
tar -xf elegant.2025.1.0.tar.gz
rm SDDS.5.8.tar.gz
rm SDDSepics.5.8.tar.gz
rm oag.apps.configure.tar.gz
rm oag.1.29.tar.gz
rm elegant.2025.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 -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/tcltklib
make clean all
cd ../tcltkapp/oagapp
make clean all
cd ../../elegant
make clean
make -j

Step 3: Using custom MPI versions for the parallel version of elegant

cd epics/extensions/src/SDDS/SDDSlib
make clean
make -j MPI_CC=/usr/local/bin/mpicc MPI_CCC=/usr/local/bin/mpic++
cd ../../../../../oag/apps/src/elegant
make clean
make -j MPI_CC=/usr/local/bin/mpicc MPI_CCC=/usr/local/bin/mpic++

Additional Resources