Build your own, without asking anyone

What you will be able to do

  1. Install software into a directory the operator owns, on a machine where that operator is not an administrator.

  2. Read --show-config and say where each value came from.

  3. Name the three lists involved, and say which one your prefix does not touch.

Administrator rights are not required for EasyBuild. Direct it to a directory owned by the current user.

One environment variable, eight paths

$ export EASYBUILD_PREFIX=$HOME/eb-demo
$ eb --show-config
#
# Current EasyBuild configuration
# (C: command line argument, D: default value, E: environment variable,
 F: configuration file)
#
buildpath         (E) = /home/rohitg/eb-demo/build
bwrap-installpath (E) = /home/rohitg/eb-demo/bwrap
containerpath     (E) = /home/rohitg/eb-demo/containers
installpath       (E) = /home/rohitg/eb-demo
packagepath       (E) = /home/rohitg/eb-demo/packages
prefix            (E) = /home/rohitg/eb-demo
repositorypath    (E) = /home/rohitg/eb-demo/ebfiles_repo
robot-paths       (D) = /sw/noarch/RHEL9/2025/software/EasyBuild/5.3.1/easybuild/easyconfigs
rpath             (D) = True
sourcepath        (E) = /home/rohitg/eb-demo/sources
sourcepath-data   (E) = /home/rohitg/eb-demo/sources

Recorded: SURF Snellius, int4 interactive node, 2026-09-09, EasyBuild 5.3.1

Read the bracketed letters first. The legend represents the printed configuration model. Each value originates from the command line, a configuration file, the environment, or a default, and --show-config indicates the source for each setting. Precedence follows that order: a flag overrides a variable, and a variable overrides a file.

Eight settings display (E) derived from a single variable.

And one that did not move

The robot-paths command reports (D). It remains the default and continues to point at the easyconfigs supplied with the site’s EasyBuild. The prefix determines the output location. It does not affect where EasyBuild looks, and The robot explains why, as they are two distinct lists. The site’s easyconfigs remain accessible. Any of the thousands covered can be built without copying them. A local directory takes precedence when a site recipe is insufficient:

export EASYBUILD_ROBOT_PATHS=$HOME/my-easyconfigs:

The trailing colon is The robot’s empty element, and in this case it is useful: your directory takes precedence, while the site’s defaults remain behind it. If the colon is omitted, the defaults disappear.

The third list, which is the one people forget

There is a list that the prefix did not touch and that --show-config does not print. The robot demonstrated the robot querying the module system for installed items via modtool.available(). MODULEPATH determines what is considered already built. Either retain the site’s modules on MODULEPATH or remove them, resulting in two distinct build paths. When the site’s modules remain on MODULEPATH, which is the default, every dependency already installed by the site is satisfied. Only a single remaining package is then built, and nothing else. The process takes twenty minutes instead of two days. The user’s own modules are not present on MODULEPATH. They reside in the user’s prefix, and no mechanism places them on MODULEPATH. Therefore, after the build:.

module use $EASYBUILD_PREFIX/modules/all

Omitting that causes a symptom that appears disproportionately confusing. The build succeeded, the tree exists on disk, yet module avail does not list it. The module system has not been instructed to search for it.

modules defaults to subdir-modules, and all is the location where the default naming scheme places them. Confirm this by building a component and reading the path printed by EasyBuild, or by checking --show-config.

The whole path, once

Putting it together on a cluster where EasyBuild is loaded as a module:

module load EasyBuild

export EASYBUILD_PREFIX=$HOME/eb
export EASYBUILD_ROBOT_PATHS=$HOME/my-easyconfigs:

eb --show-config                        # confirm the four lines above
eb GROMACS-2025.2-foss-2025a.eb -r -D   # read the plan first
eb GROMACS-2025.2-foss-2025a.eb -r      # then build it

module use $EASYBUILD_PREFIX/modules/all
module avail GROMACS

The -D line is required, not merely courteous. The robot’s plan depends on the software installed on this machine. Thus it alone indicates whether the plan comprises a single build or ninety. Read it and then decide.

If the site lacks an EasyBuild module, install one in a virtual environment and use it instead. It is a Python package, and the prefix and robot path function identically thereafter.

EB-Own-1 — It built, and it will not load

You set EASYBUILD_PREFIX=$HOME/eb, ran a build, and it finished. The tree is on disk under $HOME/eb/software. module avail does not list it.

  1. Which of the three lists is wrong, and why is it not either of the other two?

  2. What is the one command that fixes it?

  3. A colleague hits the opposite problem: their build takes all night and rebuilds forty things the site already has. Which list is wrong for them?

Solution

MODULEPATH. The robot path was fine easyconfig it needed. The prefix was fine disk where you asked for it. Nothing is broken. You have not told the module system to look in your prefix.

module use $EASYBUILD_PREFIX/modules/all.

Your colleague has the same list wrong in the other direction. Something has dropped the site’s module tree from MODULEPATH, so nothing counts as already built and the whole closure becomes theirs to compile. The robot restated: the robot path decides what can be found, and MODULEPATH decides what counts as already there. This is the one EasyBuild does not set for you.

What this costs

Disk resources are consolidated. Software, sources, and build directories reside under a single prefix within a home directory that has a quota. Set sourcepath to a shared download cache when available and clean the build directory. Time is a factor. From-source is the afterword’s trade, and costs do not decrease. Duplication occurs when MODULEPATH is incorrect. Removing the site’s modules forces building every dependency, turning a twenty‑minute job into an overnight task. Support is also affected. A module located in the prefix belongs to the user. If it breaks after a system change, no one else will notice. The same prefix functions with the site’s EasyBuild and, when mounted, with EESSI. If the robot lacks a recipe, generate or bump a .eb file and still execute eb.