-
Notifications
You must be signed in to change notification settings - Fork 0
Running DUNE DAQ Release on Ubuntu
Note: This guide is not officially supported by the DUNE DAQ Consortium. Updates may be infrequent, and compatibility is not guaranteed.
Note: These steps have been tested with Ubuntu 22.04 LTS, docker-ce
, and VirtualBox
.
Note: Follow these steps on Virtual Machines, Docker containers, or natively on bare metal with root privilege.
Note: For your convinince, this docker image ghcr.io/dune-daq/ubuntu:latest
built with this dockerfile
has all the system packages and modifcations in place as described by this document.
DUNE DAQ release and its required external software stack are typically used on RHEL-derived Linux distributions like Scientific Linux 7, CentOS 7, CentOS Stream 8, and AlmaLinux 9.
Here are some more details about how they are built and deployed:
Although all officially supported linux server at Fermialb and CERN are RHEL-derived linux distros, often times a new developer may want to build/test/run the DAQ release on their personal/institutional Ubuntu machines.
This documentation describes a few things needed on the OS side before you can run the DUNE DAQ release on Ubuntu servers.
Here is the list of system packages required:
git python3-yaml build-essential gfortran wget tar
zip rsync patch lbzip2 texinfo file keyutils
libkeyutils-dev gcc-multilib g++-multilib libunwind-dev
openssh-server
They can be installed via:
sudo apt update \
&& sudo apt-get install -y git python3-yaml \
build-essential gfortran wget tar zip \
rsync patch lbzip2 texinfo file keyutils \
libkeyutils-dev gcc-multilib g++-multilib \
libunwind-dev openssh-server
openssh-server
is not needed if you are using the DAQ release in docker containers.
Note: You can skip installing openssh-server
if you're using DAQ release in Docker containers. You will not have the ability to run nanorc
or DAQ integration tests
, but you can have access to the DAQ development environment and develop/build DAQ packages.
If you are using Virtual Machines, or a native installation on bare metal, you will need to configure openssh server to allow password-less ssh login. If your institution's security policy allows SSH Public Key authentication, you can do the following to set it up:
ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa <<<y >/dev/null 2>&1
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
You can follow the instructions here to install cvmfs for Ubuntu.
If you are using docker containers, you will need to have cvmfs available on the host machine, and then bind mount the /cvmfs
volume to the container (-v /cvmfs:/cvmfs:shared
. :shared
is optional. Refer to docker documentation for more details).
Alternatively, you may also use the official docker image for cvmfs client, and expose the cvmfs volume to other docker containers or the host. Instructions can also be found here.
Briefly, here are the steps I took to install cvmfs on a Ubuntu server.
# 1. Install the cvmfs pacakge
wget https://ecsft.cern.ch/dist/cvmfs/cvmfs-release/cvmfs-release-latest_all.deb
sudo dpkg -i cvmfs-release-latest_all.deb
sudo apt update
sudo apt-get install cvmfs
# 2. Add local configuration
sudo echo "CVMFS_REPOSITORIES=dunedaq.opensciencegrid.org,dunedaq-development.opensciencegrid.org" > /etc/cvmfs/default.local
sudo echo "CVMFS_CLIENT_PROFILE=single" >> /etc/cvmfs/default.local
# 3. Check setup and verify access to the DUNE DAQ repos
sudo cvmfs_config chksetup
sudo cvmfs_config probe
# 4. If step 3 failed initially, restart autofs and check again
systemctl restart autofs
sudo cvmfs_config probe
Although we built the DAQ release and its external software stack with a minimal requirement on system packages, some of binaries do assume the availability of system libraries under /usr/lib64
. One major difference between RHEL-derived linux distros and Ubuntu/Debian is the default location of system libraries. Ubuntu/Debian distros have the default locations as
# libc default configuration
/usr/local/lib
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/mesa
To ensure smooth DAQ release building and running on Ubuntu, create symbolic links for system libraries under /usr/lib64
:
# As root
cd /usr/lib64
for i in $(ls /usr/lib/x86_64-linux-gnu/)
do
if [[ "$i" != "ld-linux"* ]]; then
ln -s /usr/lib/x86_64-linux-gnu/$i .
fi
done
If you create a work area by following the daq-buildtools
documentation, and want to build a DAQ package, there is one more change needed in the <workarea>/sourecode/CMakeLists.txt
. You will need to tell cmake
to search targets files under lib64
subdirectories. You can apply the change via
sed -i '7 i set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE)' sourcecode/CMakeLists.txt
You're ready to build and run the DAQ release on Ubuntu as you would on RHEL-derived systems. If using multiple nodes, check firewall and SELinux settings. For questions or issues, consult the Integration/Facility Working Group, Software Coordinators, or the #np04-sysadmin
and daq-sw-librarians
Slack channels. Keep in mind that Ubuntu is not officially supported, and these instructions may not be updated in the future.