入门指南

获取 Spack 非常简单。你可以使用以下命令从 GitHub 仓库克隆它:

$ git clone --depth=2 https://github.com/spack/spack.git

这会创建一个名为 spack 的目录。克隆好 Spack 后,我们建议你为当前 shell 运行对应的初始化脚本。

针对 bash, zshsh 用户

$ . spack/share/spack/setup-env.sh

针对 cshtcsh 用户

$ source spack/share/spack/setup-env.csh

针对 fish 用户

$ . spack/share/spack/setup-env.fish

现在你已经准备好使用 Spack 了!

列出可安装的软件包

Spack 就绪后,你可以使用以下命令列出它所知的所有软件包:

$ spack list

如果你想了解特定软件包的更多信息(例如 hdf5),可以使用:

$ spack info hdf5

该命令会显示关于 hdf5 的信息,包括简要描述、Spack 已知的软件包版本,以及安装时可以启用的所有选项。

正如你所见,在安装软件包之前获取它们的基本信息非常简单!

安装你的第一个软件包

要安装大多数软件包,Spack 需要一个可用的编译器套件。若要搜索机器上可用的编译器,可以运行:

$ spack compiler find

该命令会向用户显示是否找到了编译器,以及它们的配置存储在何处。如果搜索成功,你现在可以列出已知的编译器,并获得类似于以下内容的输出:

$ spack compiler list
==> Available compilers
-- gcc ubuntu20.04-x86_64 ---------------------------------------
[e]  gcc@9.4.0  [e]  gcc@8.4.0  [e]  gcc@10.5.0

如果没有找到编译器,你需要:

  • 安装进一步的先决条件,请参阅 Spack 先决条件,然后重复上述搜索操作。

  • 注册一个提供现成二进制编译器构建缓存。

一旦编译器可用,你就可以继续安装你的第一个软件包:

$ spack install tcl

该命令的输出应类似于以下内容:

[e] zmjbkxx gcc@10.5.0 /usr (0s)
[e] rawvy4p glibc@2.31 /usr (0s)
[+] 5qfbgng compiler-wrapper@1.0 /home/spack/.local/spack/opt/linux-icelake/compiler-wrapper-1.0-5qfbgngzoqcjfbwrjn2vh75fr3g25c35 (0s)
[+] vchaib2 gcc-runtime@10.5.0 /home/spack/.local/spack/opt/linux-icelake/gcc-runtime-10.5.0-vchaib2njqlk2cud4a2n33tabq526qjj (0s)
[+] vzazvty gmake@4.4.1 /home/spack/.local/spack/opt/linux-icelake/gmake-4.4.1-vzazvtyn5cjdmg3vkkuau35x7hzu7pyl (12s)
[+] soedrhb zlib-ng@2.3.3 /home/spack/.local/spack/opt/linux-icelake/zlib-ng-2.3.3-soedrhbnpeordiixaib6utcple6tpgya (3s)
[+] u6nztpk tcl@8.6.17 /home/spack/.local/spack/opt/linux-icelake/tcl-8.6.17-u6nztpkhzbga4ul665qqhxucxqk3cins (49s)

恭喜!你刚刚使用 Spack 安装了你的第一个软件包!

使用你刚才安装的软件

一旦安装了 tcl,你可以通过其绝对路径启动 tclsh 来立即使用它:

$ /home/spack/.local/spack/opt/linux-icelake/tcl-8.6.17-u6nztpkhzbga4ul665qqhxucxqk3cins/bin/tclsh
>% echo "Hello world!"
Hello world!

这样做有效,但使用如此长的绝对路径并不是运行可执行文件的最便捷方式。

在命令行上使用 tclsh 最简单的方法是:

$ spack load tcl

当前 shell 的环境现已修改,你可以直接运行:

$ tclsh

要撤销这些修改,你可以:

$ spack unload tcl

环境与视图

Spack 环境 是安装和加载一组经常一起使用的软件包的更好方式。关于此主题的讨论超出了本 入门指南 的范围,更多信息请参考 环境 (spack.yaml, spack.lock)

后续步骤

本节内容帮助你快速安装并运行了 Spack。文档中还有更多资源,涵盖了基础和高级主题的详细信息。

基本用法
  1. 包管理基础

  2. 配置编译器

  3. Spack 环境

高级主题
  1. 工具链 (toolchains.yaml)

  2. 审计软件包与配置

  3. 验证安装