Installing Software - General Steps

From HPC users
Jump to navigationJump to search

Latest Easybuild (>=4.x)

Start with loading Easybuild and the software environment where you want to install the package:

$ ml hpc-env/8.3
$ ml EasyBuild/4.2.0       # alternatively, ml restore eb83 loads both modules

Look for existing eb-files, e.g. of OpenCV. Make a copy if adjustments are needed:

$ eb -S OpenCV
$ copy_eb OpenCV-3.4.1-foss-2018a-Python-3.6.4.eb

The copy of the eb-file can be found in s subdir at $HOME/Easyconfig/uniol:

$ cd $HOME/Easyconfig/o/OpenCV

Now you can rename the file if needed (to reflect changes in version, toolchain, and so on) and modify the the eb-files as needed, After that a dry run should indicate if more changes are needed:

$ mv OpenCV-3.4.1-foss-2018a-Python-3.6.4.eb OpenCV-3.6.2-foss-2020a-Python-3.7.4.eb
$ vim OpenCV-3.6.2-foss-2020a-Python-3.7.4.eb
$ eb -D OpenCV-3.6.2-foss-2020a-Python-3.7.4.eb
* [ ] $CFGS/b/Bison/Bison-3.0.5-GCCcore-8.2.0.eb (module: Bison/3.0.5-GCCcore-8.2.0)
* [ ] $CFGS/b/Bison/Bison-3.3.4-GCCcore-8.2.0.eb (module: Bison/3.3.4-GCCcore-8.2.0)

If you find different versions of the packages like Bison above you should tweak the eb-file (or that of a dependency) to minimize the number of installations (and thus modules). If you get errors like

ERROR: Missing dependencies: help2man/1.47.7-GCCcore-8.3.0

you need to create an eb-file for these packages (it probably does not exist for the combination of version and toolchain). Use eb -S and copy_eb again.

Once the eb-file is ready and you are happy with the output of eb -D you can proceed to install the software. For this, you can use one of the available aliases, e.g.:

$ eb83 OpenCV-3.6.2-foss-2020a-Python-3.7.4.eb --robot

Alternatively, install the missing dependencies one by one without the --robot option.

If (and only if) the eb-file uses

toolchain = SYSTEM

and does not depend on GCCcore in any way, you should use the alias

$ ebgen <package-ebfile>

which installs the packaage in the subdirs software/generic and modules/generic. However, the module needs to be made available in the current software environment by creating a symbolic link:

$ ln -s /cm/shared/uniol/modules/generic/all/<name>/<version>.lua /cm/shared/uniol/modules/<hpc-env_version>/<cat>/<name>/

Here, <cat> is the moduleclass in the eb-file. For example, help2man/1.47.4 is installed in software/generic, and to make it available in hpc-env/8.3 you need to use the commands:

$ mkdir -pv /cm/shared/uniol/modules/8.3/tools/help2man   # create the needed subdirs, <cat> is tools
$ ln -s /cm/shared/uniol/modules/generic/all/help2man/1.47.4.lua /cm/shared/uniol/modules/8.3/tools/help2man/

That way you can reuse the same module in different environments without the need to reinstall them.

Older Easybuild (<4.0)

With example OpenCV, replace name of software if needed:

$ ml EasyBuild
$ ml hpc-env/6.4                                        # or the env you want
$ eb -S OpenCV                                          # find version you want (or one that is close)
$ cp $CFGS1/OpenCV-3.4.1-foss-2018a-Python-3.6.4.eb .   # to copy eb file to ~erle1100/InstallationPackagesCE/6.4/VIS/OpenCV

Now you need to adjust eb file

  • change version and/or toolchain, rename file if needed (attention if versionsuffix)
  • check dependencies and adjust version if resonable
  • identiy missing deps
    • install missing deps, in other word go to top (eb -S <dep>)
    • if possible install deps with GCCcore toolchain
      • use version of hpc-env, here GCCcore/6.4.0
      • add binutils (existing version) to builddependencies
  • if all deps exist as module install eb file
$ eb64 $EB_DEF_ARGS OpenCV-3.4.1-foss-2017b-Python-3.6.3.eb