If you work with scientific software, you probably know about spack.
Spack is a package manager for HPC that allows to install scientific software using provided recipes. You can easily use multiple compilers and compiler versions. And different versions of the same software can coexist peacefully.
However, how does this work with zypper? Spack is totally independent of zypper. When you install something with the spack provided by the openSUSE package, everything is built and installed locally for the user under the directory
You have the option of building all the libraries required by the spack recipe or to use some of the libraries already installed on your openSUSE system.
While spack can be used directly after a git clone, it was package to give users the possibility of having it better integrated with openSUSE. After installation, spack will look for all the libraries used in your system and will create a file
This step takes a bit of time, and you have the option of avoiding it if you create a file
/etc/spack/no_rpm_trigger in your system before installing spack.
How to use spack
Installing spack is very easy, just type:
# zypper install spack
spack will pull a few packages widely used, however is a good idea to install a few more packages used by the spack recipes:
# zypper install patch pcre2-devel gcc-c++
If everything went fine, just typing
spack, you’ll get a list of subcommands. You can get a list of the available spack recipes with:
$ spack list
And building and installing a package is straightforward:
$ spack install fdupes
Output will be something like this:
ana@localhost:~> spack install fdupes ==> Warning: Missing a source id for firstname.lastname@example.org [+] /usr (external ncurses-6.1.20180317-c4tkkuqm2rejq5ecbotrezyowmtinhtm) ==> Installing fdupes-2.1.2-erz3orzx7gedujr4nckkgtwgzqruf7cs ==> No binary for fdupes-2.1.2-erz3orzx7gedujr4nckkgtwgzqruf7cs found: installing from source ==> Using cached archive: /var/tmp/ana/spack-cache/_source-cache/archive/cd/cd5cb53b6d898cf20f19b57b81114a5b263cc1149cd0da3104578b083b2837bd.tar.gz ==> fdupes: Executing phase: 'autoreconf' ==> fdupes: Executing phase: 'configure' ==> fdupes: Executing phase: 'build' ==> fdupes: Executing phase: 'install' [+] /home/ana/spack/packages/linux-opensuse_leap15-skylake/gcc-7.5.0/fdupes-2.1.2-erz3orzx7gedujr4nckkgtwgzqruf7cs
Spack will create and install all the files under
~/spack. There will be two directories:
modulescontaining the module files to be used with environment-modules or lmod
Using the module files with lmod requires updating
MODULEPATH like this:
$ export MODULEPATH=$MODULEPATH:~/spack/modules/linux-opensuse_leap15-skylake $ module available
The second command will show the modules available and it should list all the modules produced by spack in addition to the ones already available in the system. Check the exact path after
~spack to be used in your system.
These modules can be only used by the user who created them. There is the possibility of having all the users from the system able to access and use the module files.
For this, the user who builds the packages, must be able to write a global spack directory under
/usr/lib/spack/. This can only be done if the user belongs
to the group spack. You can add the user to this group with the following command:
# usermod -a -G spack <user_login>
then change the setting for
install_tree: to the global spack directory in the
~/.spack/config.yaml for this user.
Finally, an important note. Tumbleweed is a rolling release, do not be surprised if a recipe that works perfectly today doesn’t work in two weeks!
This is a first integration of spack in openSUSE. We aim to improve with your feedback and expand its usage in openSUSE in this wiki page.