修订版
22-Apr-2022 revision 1.
30-Jul-2022 revision 2.
前言
众所周知,研发架构是企业的安全与效率需经权衡后的结果。大多数企业的研发环境并不能连接互联网,这也就意味着不能很好地(至少是第一时间)使用各种开源工具。
在Linux环境下使用开源工具,除了要安装该工具本身,也可能涉及到非常复杂的依赖链。显然,使用trial-and-error的方式进行安装,已不太现实。笔者曾在海思HPC环境,为海外同事安装一个开源工具环境,手动花了两周(到拖拖拖一两个月)时间,因受困于复杂的依赖链关系,最终以失败告终,告诉用户你这需求解决不了。
痛定思痛,2019年我开始找自动化安装解决方案。spack与easybuild浮出水面。在这方面,原来全球的超算同行已经走在很前面。
本文就spack mirror展开探讨,解释它如何能为芯片研发HPC环境自动化安装正确的包,同时能节省管理员的安装时间,节省用户的使用时间。
架构图(待补充)
以安装vim为例
在在线环境,直接执行
[tools_adm@internet-server-001 ~]$ spack install vim +gtk +gui +lua +perl +python +ruby +x +cscope
生成mirror,并在离线环境的安装步骤:
1. 在联网的服务器执行
[tools_adm@internet-server-001 ~]$ mkdir /tools/oss/spack-mirror/pkgs-mirror
[tools_adm@internet-server-001 ~]$ spack mirror create --directory /tools/oss/spack-mirror/pkgs-mirror --dependencies vim +gtk +gui +lua +perl +python +ruby +x +cscope
将vim的默认版本安装包,以及相应的依赖,全部mirror到 /tools/oss/spack-mirror/pkgs-mirror 文件夹下,如下图:
2. 传到离线的生产服务器
2.1 上传
将 /tools/oss/spack-mirror/pkgs-mirror 目录打包上传到离线的生产环境,同步到 /tools/oss/spack-mirror/pkgs-mirror 路径下。这个步骤,建议使用自动化的方式完成。
2.2 配置mirror
pack mirror add local_filesystem file:///tools/oss/spack-mirror/pkgs-mirror
或手动编辑 ~/.spack/mirrors.yaml 文件
mirrors:
local_filesystem: /tools/oss/spack-mirror/pkgs-mirror
2.3 使用
[tools_adm@internal-server-001 ~]$ spack install vim +gtk +gui +lua +perl +python +ruby +x +cscope
根据终端刷的信息,可以看到本次安装使用的是本地mirror目录下的包了。