|
|
|
|
|
by tgamblin
1187 days ago
|
|
If I have to pick one difference, the fundamental one is that Spack does dependency resolution with a solver, while EB does not. So, in Spack, you write a package.py file (like say the one for gromacs: https://github.com/spack/spack/blob/develop/var/spack/repos/...), and you can build that package with any of the versions/options/dependencies/etc. expressed in the package. With Easybuild, someone (maybe you?) has to write a specific configuration (easyconfig) for every build you want to do. Want to tweak a version? Write a new easyconfig. The dependencies point at specific versions, too, so now write configs for all the dependencies, and so on. There is a lot of copying/tweaking of file trees in the EB workflow. Aside from that: - Spack has a package database and allows you to query what is installed.
- EB does not have "uninstall", just `rm -rf`
- Spack builds from source and also handles binary packages (no binaries in EB)
- Spack supports environments via `spack.yaml` / `spack.lock`; EB doesn't have that.
- Spack doesn't require Lmod to work -- you can just `spack load` or `spack env activate` to use packages.
- Spack builds with RPATH by default (much like Nix does) -- dependency libraries are found automatically even if you run an executable straight from its directory.
There's more but Spack is a package manager, while EB is really set up to automate a certain type of installation common in HPC. |
|
Not all of this is 100% correct, so let me pitch in:
- EasyBuild currently doesn't have an uninstall option, that's true, but since every software installation sits in its own separate directory, it basically boils down to removing that directory + the environment module file that EasyBuild generated for it;
- EasyBuild can install "binary packages" (see the 'Binary' easyblock). Examples are the Intel compilers, CUDA, etc. We don't provides pre-built binaries for software that EasyBuild installs from source though, that's true;
- EasyBuild has no "environments" concept. The closest thing perhaps is the 'Bundle' easyblock, that can be used to "glue" different environment modules together. We mostly rely on the environment modules tool (Lmod) so this, see for example module collections: https://lmod.readthedocs.io/en/latest/010_user.html#user-col...;
- EasyBuild does indeed require an environment modules tool. Both Lmod (Lua-based) and Environment Modules (Tcl-based) are supported;
- EasyBuild also supports RPATH linking (see https://docs.easybuild.io/rpath-support/), but it's not the default.
> "EB is really set up to automate a certain type of installation common in HPC"
EasyBuild is definitely geared towards installing software on HPC systems, but there's no "certain type of installation common in HPC": we support software using a wide variety of installation procedures. But maybe you're referring to installing software in a shared filesystem (NFS, usually something like /apps).