Getting Access to EESSI¶
Learning Objectives
- Learn how to check if EESSI is available
- Learn how to install EESSI locally if you have administrator permissions
- Learn how to start EESSI inside a container
To get access to EESSI, it suffices to have CernVM-FS installed, and make it aware of the EESSI repository.
Is EESSI accessible?¶
EESSI can be accessed via a native (CernVM-FS) installation,
via a container that includes CernVM-FS, or via a dedicated user-space tool called
cvmfsexec.
Before you look into other options, check if EESSI is already accessible on your system.
Run the following command:
Note
This ls command may take a couple of seconds to finish, since CernVM-FS may need to download
or update the metadata for that directory.
If you see output like shown below, you already have access to EESSI on your system.
For starting to use EESSI, continue reading about Setting up environment.
If you see an error message as shown below, EESSI is not yet accessible on your system.
No worries, you don't need to be aContinue reading about the Native installation of EESSI, or
accessing EESSI via a container or via cvmfsexec.
Native installation¶
Setting up native access to EESSI, that is a system-wide deployment that does not require workarounds like using a container, requires the installation and configuration of CernVM-FS.
This requires administrator privileges, since you need to install CernVM-FS as an OS package.
The following actions must be taken for a (basic) native installation of EESSI:
- Installing CernVM-FS itself, ideally using the OS packages provided by the CernVM-FS project (although installing from source is also possible);
- Creating a small client configuration file for CernVM-FS (
/etc/cvmfs/default.local); see also the CernVM-FS documentation.
The good news is that all of this only requires a handful commands :
# Installation commands for RHEL-based distros like CentOS, Rocky Linux, Almalinux, Fedora, ...
# install CernVM-FS
sudo yum install -y https://cvmrepo.s3.cern.ch/cvmrepo/yum/cvmfs-release-latest.noarch.rpm
sudo yum install -y cvmfs
# create client configuration file for CernVM-FS (no squid proxy, 10GB local CernVM-FS client cache)
sudo bash -c "echo 'CVMFS_CLIENT_PROFILE="single"' > /etc/cvmfs/default.local"
sudo bash -c "echo 'CVMFS_QUOTA_LIMIT=10000' >> /etc/cvmfs/default.local"
sudo bash -c "echo 'CVMFS_USE_CDN=yes' >> /etc/cvmfs/default.local"
# make sure that EESSI CernVM-FS repository is accessible
sudo cvmfs_config setup
# Installation commands for Debian-based distros like Ubuntu, ...
# install CernVM-FS
sudo apt-get update
sudo apt-get install -y lsb-release wget
wget https://cvmrepo.s3.cern.ch/cvmrepo/apt/cvmfs-release-latest_all.deb
sudo dpkg -i cvmfs-release-latest_all.deb
rm -f cvmfs-release-latest_all.deb
sudo apt-get update
sudo apt-get install -y cvmfs
# create client configuration file for CernVM-FS (no squid proxy, 10GB local CernVM-FS client cache)
sudo bash -c "echo 'CVMFS_CLIENT_PROFILE=single' > /etc/cvmfs/default.local"
sudo bash -c "echo 'CVMFS_QUOTA_LIMIT=10000' >> /etc/cvmfs/default.local"
sudo bash -c "echo 'CVMFS_USE_CDN=yes' >> /etc/cvmfs/default.local"
# make sure that EESSI CernVM-FS repository is accessible
sudo cvmfs_config setup
Note
The commands above only cover the basic installation of EESSI.
This is good enough for an individual client, or for testing purposes, but for a production-quality setup you should also set up a Squid proxy cache.
For large-scale systems, like an HPC cluster, you should also consider setting up your own CernVM-FS Stratum-1 mirror server.
For more details on this, please refer to the Stratum 1 and proxies section of the CernVM-FS tutorial.
EESSI via a container¶
Prerequisite
Apptainer 1.0.0 (or newer), or Singularity 3.7.x
- Check with
apptainer --versionorsingularity --version - Support for the
--fusemountoption in theshellandrunsubcommands is required
A small script can provide a very easy yet versatile means to access EESSI using a container.
#!/bin/bash
# honor $TMPDIR if it is already defined, use /tmp otherwise
if [ -z $TMPDIR ]; then
export WORKDIR=/tmp/$USER
else
export WORKDIR=$TMPDIR/$USER
fi
# Make directories required by CVMFS and mount bind them to the right locations
mkdir -p ${WORKDIR}/{var-lib-cvmfs,var-run-cvmfs}
export SINGULARITY_BIND="${WORKDIR}/var-run-cvmfs:/var/run/cvmfs,${WORKDIR}/var-lib-cvmfs:/var/lib/cvmfs"
# Use a temporary home directory since we want a playground
mkdir -p ${WORKDIR}/home
export SINGULARITY_HOME="${WORKDIR}/home:/home/$USER"
# Tell apptainer to fusemount EESSI using CVMFS
export EESSI_REPO="container:cvmfs2 software.eessi.io /cvmfs/software.eessi.io"
# Start a shell
singularity shell --fusemount "$EESSI_REPO" docker://ghcr.io/eessi/client:rocky8
This page guides you through an example scenario illustrating the use of the script.
Quickstart¶
Run the eessi_via_container.sh script to start a shell session in the container with EESSI available:
Note
Startup will take a bit longer the first time you run this because the container image is downloaded and converted.
You should see output like
INFO: Environment variable SINGULARITY_BIND is set, but APPTAINER_BIND is preferred
INFO: Environment variable SINGULARITY_HOME is set, but APPTAINER_HOME is preferred
INFO: Converting OCI blobs to SIF format
INFO: Starting build...
INFO: Fetching OCI image...
161.9KiB / 161.9KiB [===============================================================================] 100 % 3.1 MiB/s 0s
41.2MiB / 41.2MiB [=================================================================================] 100 % 3.1 MiB/s 0s
5.2MiB / 5.2MiB [===================================================================================] 100 % 3.1 MiB/s 0s
68.8MiB / 68.8MiB [=================================================================================] 100 % 3.1 MiB/s 0s
117.8MiB / 117.8MiB [===============================================================================] 100 % 3.1 MiB/s 0s
88.4MiB / 88.4MiB [=================================================================================] 100 % 3.1 MiB/s 0s
INFO: Extracting OCI image...
2026/05/31 08:50:54 warn rootless{usr/libexec/openssh/ssh-keysign} ignoring (usually) harmless EPERM on setxattr "user.rootlesscontainers"
INFO: Inserting Apptainer configuration...
INFO: Creating SIF file...
[=============================================================================================================] 100 % 0s
CernVM-FS: pre-mounted on file descriptor 3
Apptainer>
Note
You may have to press enter to clearly see the prompt as some messages
beginning with CernVM-FS: have been printed after the first prompt
Apptainer> was shown.
In this environment, you should be able to access the EESSI software.eessi.io repository:
EESSI via cvmfsexec¶
When you do not have administrator rights, nor access to singularity/apptainer, there is still another option that
may work for you: cvmfsexec allows you to mount CernVM-FS repositories
as an unprivileged user.
Whether this approach will work is very dependent on the specific system you have access to. If this approach is your only option, the best way to check if it will work is to try it out and see if you run into problems.
The first thing you need to do is clone the cvmfsexec repository, and enter the directory
cvmfsexec does still require an internet connection and some tools from your system that
may not be available by default (but are quite common): curl, rpm2cpio, and cpio. If those are available then the
see if the steps below work for you.
First we gather the files that cvmfsexec requires (this will also tell you if your OS is supported),
by running the makedist script:
If that worked, we can try to start cvmfsexec as follows,
and see if that result in a shell environment in which EESSI is available:
Here we also mount the cvmfs-config.cern.ch repository, which provides the necessary configuration files to CernVM-FS to be aware of EESSI.
To start using EESSI, see Using EESSI.