Spack 现在可在 openSUSE Tumbleweed 中使用
2021 年 2 月 1 日 | Ana Guerrero Lopez | CC-BY-SA-3.0
基于 Python 的可配置 HPC 包管理器 Spack 现在是 openSUSE Tumbleweed 的官方软件包,当前版本为 0.16.0。
如果您从事科学软件开发,您可能已经了解 spack。
Spack 是一个用于 HPC 的包管理器,允许您使用提供的配方安装科学软件。您可以轻松使用多个编译器和编译器版本。并且同一软件的不同版本可以和平共处。
Spack 与 environment-modules 或 lmod 配合使用,以便用户更轻松地为他们的项目选择软件堆栈。
但是,这与 zypper 如何协同工作?Spack 完全独立于 zypper。当您使用 openSUSE 软件包提供的 spack 安装某些内容时,所有内容都会在本地为用户构建和安装在目录 ~/spack 下。
您可以选择构建 spack 配方所需的所有库,也可以使用您 openSUSE 系统上已经安装的一些库。
虽然 spack 可以直接在 git clone 之后使用,但将其打包是为了让用户能够更好地将其与 openSUSE 集成。安装后,spack 将查找您系统中使用的所有库,并创建一个文件 /etc/spack/packages.yaml
此步骤需要一些时间,如果您在安装 spack 之前 在您的系统中创建一个文件 /etc/spack/no_rpm_trigger,您可以选择避免它。
如何使用 spack
安装 spack 非常简单,只需输入
# zypper install spack
spack 将拉取一些广泛使用的软件包,但是安装 spack 配方中使用的更多软件包是一个好主意
# zypper install patch pcre2-devel gcc-c++
如果一切顺利,只需输入 spack,您将获得一个子命令列表。您可以使用以下命令获取可用 spack 配方的列表:
$ spack list
并且构建和安装软件包非常简单:
$ spack install fdupes
输出将类似于以下内容:
ana@localhost:~> spack install fdupes
==> Warning: Missing a source id for ncurses@6.1.20180317
[+] /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 将在 ~/spack 下创建和安装所有文件。将有两个目录:
modules包含要与 environment-modules 或 lmod 一起使用的模块文件packages包含
使用 lmod 的模块文件需要更新 MODULEPATH,如下所示:
$ export MODULEPATH=$MODULEPATH:~/spack/modules/linux-opensuse_leap15-skylake
$ module available
第二个命令将显示可用的模块,并应列出 spack 生成的所有模块,以及系统中已有的模块。检查 ~spack 后的确切路径,以便在您的系统中进行使用。
这些模块只能由创建它们的用户使用。有可能让系统中的所有用户都可以访问和使用模块文件。为此,构建软件包的用户必须能够写入全局 spack 目录 /usr/lib/spack/。只有当用户属于 spack 组时才能执行此操作。您可以使用以下命令将用户添加到此组:
# usermod -a -G spack <user_login>
然后,更改此用户的配置 ~/.spack/config.yaml 中的 install_tree: 设置为全局 spack 目录。
最后,重要提示。Tumbleweed 是滚动发布版,所以不要惊讶于今天工作完美的配方在两周后无法工作!
这是 spack 在 openSUSE 中的首次集成。我们希望通过您的反馈改进并扩展其在 openSUSE 中的使用,请访问 此 wiki 页面。