Installing Software - General Steps
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 ... $CFGS1/OpenCV-3.4.1-foss-2018a-Python-3.6.4.eb ... $ 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