Spack 镜像制作

以 MUMPS 和 STRUMPACK 软件安装过程为例,首先在本地使用制作 MUMPS 和 STRUMPACK 镜像,并且包含所有依赖库。

$ spack mirror create --dependencies strumpack~cuda+scotch+shared~butterflypack mumps+metis+parmetis+scotch
......
==> Successfully updated mirror in file:///home/li12242/app/spack/var/spack/cache
  Archive stats:
    0    already present
    40   added
    0    failed to fetch.

可以看到安装完成后,显示有 40 个软件包添加到镜像目录内,默认镜像文件夹路径为 <SPACK_DIR>/var/spack/cache,其中 <SPACK_DIR> 为软件的安装路径。在镜像文件夹内,_source-cache 保存了所有压缩包文件,在其他文件夹内,则各自保存了不同版本的软件,并且包含了链接指向 _source-cache 内对应的压缩包。查看文件夹具体内容如下

$ tree cache
cache/
├── _source-cache
│   └── archive
│       ├── 04
│       │   └── 0484d275f87e9b8641ff2eecaa9df2830cbe276ac79ad80494822721de6e1693.tar.gz
│       ├── 09
│       │   └── 09c22e5c6fef327d3e48eb23f0d610dcd3a35ab9207f12e0f875701c677978d3
......
......
│           └── ff3922af377d514eca302a6662d470e857bd1a591e96a2050500df5a9d59facf.tar.gz
├── arpack-ng
│   └── arpack-ng-3.7.0.tar.gz -> ../_source-cache/archive/97/972e3fc3cd0b9d6b5a737c9bf6fd07515c0d6549319d4ffb06970e64fa3cc2d6.tar.gz
├── autoconf
│   └── autoconf-2.69.tar.gz -> ../_source-cache/archive/95/
......

镜像文件夹制作完成后,将此 cache 文件夹打包为 spack-mirror.tar.gz 压缩包。

Spack 镜像使用

在本地将镜像文件 spack-mirror.tar.gz 文件解压,并且重命名为 spack-mirror 文件夹。 运行如下命令向 spack 中添加本地镜像路径。

$ spack mirror add local_mirror file://<PATH_TO_MIRROR>/spack-mirror

添加完成后,运行 spack mirror list 查看添加的本地路径。

$ spack mirror list
spack-public    https://spack-llnl-mirror.s3-us-west-2.amazonaws.com/
local_mirror    file:///public/home/lilongxiang/software/spack-mirror

此时,在本地运行 strumpack~cuda+scotch+shared~butterflypack 即可使用本地软件源进行安装,不再需要从外网下载。