EasyBuild¶
EasyBuild je program slúžiaci na zostavovanie a inštaláciu softvéru, umožňujúci efektívnú správu na HPC systémoch.
Pokročilé použitie – postupujte opatrne
Postup na tejto stránke je určený pre skúsených používateľov, ktorí ovládajú modulový systém a kompiláciu softvéru. Zmeny alebo zostavovanie vlastných modulov pomocou EasyBuild môžu viesť k poškodeniu prostredia alebo ku konfliktom so systémovým nastavením. Ak si nie ste istí niektorým z krokov alebo jeho potenciálnymi dôsledkami, dôrazne odporúčame kontaktovať podporný tím pred pokračovaním.
Konfigurácia¶
Predvolená konfigurácia vyzerá nasledovne:
Predvolená konfigurácia
module load EasyBuild
eb --show-config
#
# Current EasyBuild configuration
# (C: command line argument, D: default value, E: environment variable, F: configuration file)
#
buildpath (D) = /home/username/.local/easybuild/build
containerpath (D) = /home/username/.local/easybuild/containers
installpath (D) = /home/username/.local/easybuild
repositorypath (D) = /home/username/.local/easybuild/ebfiles_repo
robot-paths (D) = /storage-apps/easybuild/software/EasyBuild/4.7.2/easybuild/easyconfigs
sourcepath (D) = /home/username/.local/easybuild/sources
Úprava konfigurácie¶
EasyBuild možno konfigurovať nasledujúcimi spôsobmi:
- použitím príkazu eb s argumentmi príkazového riadku,
- nastavením premenných prostredia (\(EASYBUILD_...\)),
- pomocou jedného alebo viacerých konfiguračných súborov.
Odporúčanie
Všetky informácie o konfigurácii EasyBuild nájdete tu. Na konfiguráciu odporúčame použiť argumenty príkazového riadku príkazu eb.
Zdieľané inštalácie EasyBuild¶
Všetky inštalácie softvéru realizované pomocou EasyBuild, ktoré sú dostupné pre všetkých používateľov, sú uložené v /storage-apps/easybuild/. Dôležité sú nasledujúce adresáre:
/storage-apps/easybuild/software– obsahuje všetky pôvodné súbory softvéru nainštalovaného pomocou EasyBuild (binárne súbory, konfiguračné súbory atď.),/storage-apps/easybuild/modules– obsahuje všetky moduly (modulefiles) generované systémom EasyBuild,/storage-apps/easybuild/software/EasyBuild/4.7.2/easybuild/easyconfigs– obsahuje zostavovacie recepty softvéru pre EasyBuild (.eb súbory).
Inštalácie softvéru realizované pomocou EasyBuild sú dostupné na dvoch rôznych cestách v závislosti od architektúry uzla (uzly s procesormi x86 vs. GPU uzly s ARM):
/apps/easybuild_gpu/software– obsahuje všetky pôvodné súbory softvéru nainštalovaného pomocou EasyBuild (binárne súbory, konfiguračné súbory atď.) pre GPU uzly/apps/easybuild_gpu/modules– obsahuje všetky modulefiles vygenerované pomocou EasyBuild pre GPU uzly/apps/easybuild_gpu/easybuild/easyconfigs– obsahuje zostavovacie recepty softvéru pre EasyBuild (.eb súbory) pre GPU uzly/apps/easybuild/software– obsahuje všetky pôvodné súbory softvéru nainštalovaného pomocou EasyBuild (binárne súbory, konfiguračné súbory atď.) pre CPU uzly/apps/easybuild/modules– obsahuje všetky modulefiles vygenerované pomocou EasyBuild pre CPU uzly/apps/easybuild/easybuild/easyconfigs– obsahuje zostavovacie recepty softvéru pre EasyBuild (.eb súbory) pre CPU uzly
Typický pracovný postup¶
Kompilácia s EasyBuild
Kompilácia softvéru pomocou EasyBuild je možná len na prihlasovacích uzloch!
Nainštalujme balík gnuplot pomocou EasyBuild. Začnite načítaním modulu EasyBuild a potom skontrolujte dostupné súbory easyconfig pre gnuplot:
Kontrola všetkých súborov easyconfig pre gnuplot
module load EasyBuild
eb -S gnuplot
== found valid index for /storage-apps/easybuild/software/EasyBuild/4.7.2/easybuild/easyconfigs, so using it...
CFGS1=/storage-apps/easybuild/software/EasyBuild/4.7.2/easybuild/easyconfigs
* $CFGS1/g/gnuplot/gnuplot-5.0.3-foss-2016a.eb
* $CFGS1/g/gnuplot/gnuplot-5.0.3-intel-2016a.eb
* $CFGS1/g/gnuplot/gnuplot-5.0.5-foss-2016b.eb
* $CFGS1/g/gnuplot/gnuplot-5.0.5-intel-2016b.eb
* $CFGS1/g/gnuplot/gnuplot-5.0.6-intel-2017a.eb
* $CFGS1/g/gnuplot/gnuplot-5.2.2-foss-2017b.eb
* $CFGS1/g/gnuplot/gnuplot-5.2.2-foss-2018a.eb
* $CFGS1/g/gnuplot/gnuplot-5.2.2-intel-2017b.eb
* $CFGS1/g/gnuplot/gnuplot-5.2.2-intel-2018a.eb
* $CFGS1/g/gnuplot/gnuplot-5.2.5-foss-2018b.eb
* $CFGS1/g/gnuplot/gnuplot-5.2.6-GCCcore-8.2.0.eb
* $CFGS1/g/gnuplot/gnuplot-5.2.6-foss-2018b.eb
* $CFGS1/g/gnuplot/gnuplot-5.2.6-fosscuda-2018b.eb
* $CFGS1/g/gnuplot/gnuplot-5.2.8-GCCcore-8.3.0.eb
* $CFGS1/g/gnuplot/gnuplot-5.2.8-GCCcore-9.3.0.eb
* $CFGS1/g/gnuplot/gnuplot-5.4.1-GCCcore-10.2.0.eb
* $CFGS1/g/gnuplot/gnuplot-5.4.2-GCCcore-10.3.0.eb
* $CFGS1/g/gnuplot/gnuplot-5.4.2-GCCcore-11.2.0.eb
* $CFGS1/g/gnuplot/gnuplot-5.4.4-GCCcore-11.3.0.eb
* $CFGS1/g/gnuplot/gnuplot-5.4.6-GCCcore-12.2.0.eb
Note: 6 matching archived easyconfig(s) found, use --consider-archived-easyconfigs to see them
Skúsme inštaláciu \(gnuplot-5.4.6\) s toolchainom \(GCCcore-12.2.0\).
Najprv skontrolujte závislosti pomocou možnosti -Dr. Už nainštalované
závislosti sú označené [X].
Kontrola všetkých závislostí pre inštaláciu
eb -Dr gnuplot-5.4.6-GCCcore-12.2.0.eb
== Temporary log file in case of crash /tmp/eb-esp0xabd/easybuild-1gbj5uyi.log
== found valid index for /storage-apps/easybuild/software/EasyBuild/4.7.2/easybuild/easyconfigs, so using it...
== found valid index for /storage-apps/easybuild/software/EasyBuild/4.7.2/easybuild/easyconfigs, so using it...
Dry run: printing build status of easyconfigs and dependencies
CFGS=/storage-apps/easybuild/software/EasyBuild/4.7.2/easybuild/easyconfigs
* [x] $CFGS/m/M4/M4-1.4.19.eb (module: M4/1.4.19)
* [x] $CFGS/b/Bison/Bison-3.8.2.eb (module: Bison/3.8.2)
* [x] $CFGS/f/flex/flex-2.6.4.eb (module: flex/2.6.4)
* [x] $CFGS/z/zlib/zlib-1.2.12.eb (module: zlib/1.2.12)
* [x] $CFGS/b/binutils/binutils-2.39.eb (module: binutils/2.39)
* [x] $CFGS/g/GCCcore/GCCcore-12.2.0.eb (module: GCCcore/12.2.0)
* [x] $CFGS/h/help2man/help2man-1.49.2-GCCcore-12.2.0.eb (module: help2man/1.49.2-GCCcore-12.2.0)
* [x] $CFGS/m/M4/M4-1.4.19-GCCcore-12.2.0.eb (module: M4/1.4.19-GCCcore-12.2.0)
* [x] $CFGS/z/zlib/zlib-1.2.12-GCCcore-12.2.0.eb (module: zlib/1.2.12-GCCcore-12.2.0)
* [x] $CFGS/b/Bison/Bison-3.8.2-GCCcore-12.2.0.eb (module: Bison/3.8.2-GCCcore-12.2.0)
* [x] $CFGS/f/flex/flex-2.6.4-GCCcore-12.2.0.eb (module: flex-2.6.4-GCCcore-12.2.0)
* [x] $CFGS/b/binutils/binutils-2.39-GCCcore-12.2.0.eb (module: binutils-2.39-GCCcore-12.2.0)
* [x] $CFGS/p/pkgconf/pkgconf-1.9.3-GCCcore-12.2.0.eb (module: pkgconf-1.9.3-GCCcore-12.2.0)
* [x] $CFGS/n/ncurses/ncurses-6.3-GCCcore-12.2.0.eb (module: ncurses-6.3-GCCcore-12.2.0)
* [x] $CFGS/l/libtool/libtool-2.4.7-GCCcore-12.2.0.eb (module: libtool-2.4.7-GCCcore-12.2.0)
* [x] $CFGS/b/bzip2/bzip2-1.0.8-GCCcore-12.2.0.eb (module: bzip2-1.0.8-GCCcore-12.2.0)
* [x] $CFGS/g/groff/groff-1.22.4-GCCcore-12.2.0.eb (module: groff-1.22.4-GCCcore-12.2.0)
* [ ] $CFGS/l/libpng/libpng-1.6.38-GCCcore-12.2.0.eb (module: libpng-1.6.38-GCCcore-12.2.0)
* [x] $CFGS/e/expat/expat-2.4.9-GCCcore-12.2.0.eb (module: expat-2.4.9-GCCcore-12.2.0)
* [x] $CFGS/l/libreadline/libreadline-8.2-GCCcore-12.2.0.eb (module: libreadline-8.2-GCCcore-12.2.0)
* [ ] $CFGS/n/NASM/NASM-2.15.05-GCCcore-12.2.0.eb (module: NASM-2.15.05-GCCcore-12.2.0)
* [ ] $CFGS/p/pixman/pixman-0.42.2-GCCcore-12.2.0.eb (module: pixman-0.42.2-GCCcore-12.2.0)
* [ ] $CFGS/g/gperf/gperf-3.1-GCCcore-12.2.0.eb (module: gperf-3.1-GCCcore-12.2.0)
* [x] $CFGS/p/pkgconf/pkgconf-1.8.0.eb (module: pkgconf/1.8.0)
* [x] $CFGS/o/OpenSSL/OpenSSL-1.1.eb (module: OpenSSL/1.1)
* [x] $CFGS/c/cURL/cURL-7.86.0-GCCcore-12.2.0.eb (module: cURL-7.86.0-GCCcore-12.2.0)
* [x] $CFGS/d/DB/DB-18.1.40-GCCcore-12.2.0.eb (module: DB-18.1.40-GCCcore-12.2.0)
* [x] $CFGS/p/Perl/Perl-5.36.0-GCCcore-12.2.0.eb (module: Perl-5.36.0-GCCcore-12.2.0)
* [x] $CFGS/a/Autoconf/Autoconf-2.71-GCCcore-12.2.0.eb (module: Autoconf-2.71-GCCcore-12.2.0)
* [x] $CFGS/a/Automake/Automake-1.16.5-GCCcore-12.2.0.eb (module: Automake-1.16.5-GCCcore-12.2.0)
* [x] $CFGS/a/Autotools/Autotools-20220317-GCCcore-12.2.0.eb (module: Autotools-20220317)
* [ ] $CFGS/p/Perl/Perl-5.36.0-GCCcore-12.2.0-minimal.eb (module: Perl-5.36.0-GCCcore-12.2.0-minimal)
* [ ] $CFGS/u/util-linux/util-linux-2.38.1-GCCcore-12.2.0.eb (module: util-linux-2.38.1-GCCcore-12.2.0)
* [x] $CFGS/l/libffi/libffi-3.4.4-GCCcore-12.2.0.eb (module: libffi-3.4.4-GCCcore-12.2.0)
* [x] $CFGS/u/UnZip/UnZip-6.0-GCCcore-12.2.0.eb (module: UnZip-6.0-GCCcore-12.2.0)
* [x] $CFGS/n/ncurses/ncurses-6.3.eb (module: ncurses/6.3)
* [x] $CFGS/g/gettext/gettext-0.21.1.eb (module: gettext-0.21.1)
* [x] $CFGS/x/XZ/XZ-5.2.7-GCCcore-12.2.0.eb (module: XZ-5.2.7-GCCcore-12.2.0)
* [x] $CFGS/l/libarchive/libarchive-3.6.1-GCCcore-12.2.0.eb (module: libarchive-3.6.1-GCCcore-12.2.0)
* [x] $CFGS/c/CMake/CMake-3.24.3-GCCcore-12.2.0.eb (module: CMake-3.24.3-GCCcore-12.2.0)
* [ ] $CFGS/g/gnuplot/gnuplot-5.4.6-GCCcore-12.2.0.eb (module: gnuplot/5.4.6-GCCcore-12.2.0)
== Temporary log file(s) /tmp/eb-esp0xabd/easybuild-1gbj5uyi.log* have been removed.
== Temporary directory /tmp/eb-esp0xabd has been removed.
Ak chcete získať informácie o konfigurácii softvéru a o spôsobe
vykonania inštalácie, preskúmajte súbor .eb:
Preskúmanie súboru .eb
eb --show-ec gnuplot-5.4.6-GCCcore-12.2.0.eb
== Temporary log file in case of crash /tmp/eb-5lb8lvwf/easybuild-vqyv_apk.log
== found valid index for /storage-apps/easybuild/software/EasyBuild/4.7.2/easybuild/easyconfigs, so using it...
== Contents of /storage-apps/easybuild/software/EasyBuild/4.7.2/easybuild/easyconfigs/g/gnuplot/gnuplot-5.4.6-GCCcore-12.2.0.eb:
easyblock = 'ConfigureMake'
name = 'gnuplot'
version = '5.4.6'
homepage = 'http://gnuplot.sourceforge.net'
description = """Portable interactive, function plotting utility"""
toolchain = {'name': 'GCCcore', 'version': '12.2.0'}
source_urls = [('https://sourceforge.net/projects/gnuplot/files/gnuplot/%(version)s', 'download')]
sources = [SOURCE_TAR_GZ]
checksums = ['02fc27918200ed64d8f0c3b84fe81b95b59cd47ad99f270939ae497c19f27419']
builddependencies = [
('binutils', '2.39'),
('pkgconf', '1.9.3'),
('Autotools', '20220317'),
]
dependencies = [
('ncurses', '6.3'),
('cairo', '1.17.4'),
('libjpeg-turbo', '2.1.4'),
('libpng', '1.6.38'),
('libgd', '2.3.3'),
('Pango', '1.50.12'),
('libcerf', '2.3'),
('X11', '20221110'),
('Qt5', '5.15.7'),
('Lua', '5.4.4'),
('wxWidgets', '3.2.2.1'),
]
preconfigopts = 'autoreconf && '
configopts = '--with-qt=qt5 --without-latex '
sanity_check_paths = {
'files': ['bin/gnuplot'],
'dirs': []
}
# make sure that pdf terminal type is available
sanity_check_commands = ["gnuplot -e 'set terminal pdf'"]
moduleclass = 'vis'
== Temporary log file(s) in case of crash /tmp/eb-5lb8lvwf/easybuild-vqyv_apk.log* have been removed.
== Temporary directory /tmp/eb-5lb8lvwf has been removed.
Teraz môžete nainštalovať softvér a všetky chýbajúce závislosti pomocou možnosti `-r; nasledujúcim príkazom:
eb -r gnuplot-5.4.6-GCCcore-12.2.0.eb --installpath=/project/<project_id>/yourfolder
Projektové adresáre
Odporúčame používateľom používať zdieľané projektové adresáre na osobné inštalácie pomocou EasyBuild, aby bolo zabezpečené zdieľanie nainštalovaného softvéru medzi všetkými účastníkmi projektu.
Nakoniec môžete použiť vlastné moduly a načítať modul svojho softvéru:
module use /project/<project_id>/yourfolder/modules/all
module load gnuplot-5.4.6-GCCcore-12.2.0