Date Tags spack

Spack 是一个跨平台的包管理器,可以用来安装和编译不同版本的软件,使得他们不与系统环境冲突并且多个版本可以共存。

1. 下载和安装

spack无需安装,下载完成后,直接调用/spack/bin/下的可执行文件即可。

git clone https://github.com/spack/spack.git
export SPACK_ROOT=/path/to/spack
export PATH=${SPACK_ROOT}/bin:${PATH}
source ${SPACK_ROOT}/share/spack/setup-env.sh

2. 常用的命令

官方的get started比较详细,而且手册也很全面。这里仅简单记录几种我常用的命令。

2.1 添加外部compiler

# 列出当前所有添加到spack里的compiler
spack compilers 
# 自动检测系统环境中可以用的compiler并添加进来
# An alias for spack compiler find
spack compiler add
# 添加特定路径的compiler到spack中
spack compiler find /home/test/opt/gcc10.0

2.2 安装软件

https://spack.readthedocs.io/en/latest/package_list.html

这个页面显示了当前spack维护的所有软件及其版本。(不是所有的软件版本都在支持列表中)

spack install  -j 12 gcc@9.4.0

如果不加@9.4.0,将默认安装master版本。

-j 12跟make的一致,表示12个thread来执行。

注意观察安装过程中出现的错误。最后软件安装的位置在类似:

/home/test/spack/opt/spack/linux-ubuntu18.04-zen/gcc-7.5.0/gcc-9.4.0-XXXX
你的spck路径/opt/spack/你的操作系统和cpu架构/编译使用的compiler/安装的软件包

2.3 虚拟环境

spack支持类似python的virtualenv的功能,可以通过创建虚拟环境来将自己安装的软件隔离开。

spack env create myenv
# 如果之前创建过,可以直接activate
spack env activate myenv
# 如果已经在默认的spack环境中安装过,这里将只是在当前的myenv里注册一下
spack intall [email protected]
# 取消虚拟环境
despacktivate

3. Tips

Curl

由于spack需要用curl从软件的官网或者mirror下载源码,而有些站点仅支持https或者自动转发请求为https请求,所以要求curl必须支持https协议。在部分发行版上(比如centos7),默认的curl可能不支持https,导致安装软件的过程出现curl的错误。可以通过curl --version查看curl支持的协议。如果不支持https,那么需要自己手动编译下curl。

curl官网

cd /home/test/opt/Downloads/curl/
mkdir build && cd build
../configure --with-ssl 
make 
export PATH/home/test/opt/Downloads/curl/bin/:$PATH

hash校验

可能由于网络问题,极少情况会出现下载的源码包校验出错的问题。在spack的源码中,对每个源码包都有固定的hash值。一个临时解决方案是顺着错误提示,找到对应的spack源码,修改下载的包的hash值。spack目录下的var/cache/里存储了下载的源码包。

Reference

https://spack.readthedocs.io/en/latest/environments.html

https://spack.readthedocs.io/en/latest/basic_usage.html

https://askubuntu.com/questions/821186/protocol-https-not-supported-or-disabled-in-libcurl


文章版权归 FindHao 所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明作者 FindHao 和本文原始地址:
https://www.findhao.net/academic/2571.html

Comments

comments powered by Disqus