メインコンテンツまでスキップ

spack の使い方

Spack はユーザ権限で利用できるパッケージマネージャです。

参考資料

spack で利用可能なパッケージを表示する

spack list, spack infoコマンド

spack listコマンドにより利用可能なパッケージの一覧が表示できます。 (初回実行時のみ表示に時間がかかります。)

$ spack list | wc
6348 6348 68228

spack infoコマンドで利用可能なパッケージの詳細を表示することができます。

$ spack info gcc
AutotoolsPackage: gcc

Description:
The GNU Compiler Collection includes front ends for C, C++, Objective-C,
Fortran, Ada, and Go, as well as libraries for these languages.

Homepage: https://gcc.gnu.org

Preferred version:
11.2.0 https://ftpmirror.gnu.org/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz

Safe versions:
master [git] git://gcc.gnu.org/git/gcc.git on branch master
11.2.0 https://ftpmirror.gnu.org/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz
11.1.0 https://ftpmirror.gnu.org/gcc/gcc-11.1.0/gcc-11.1.0.tar.xz
10.3.0 https://ftpmirror.gnu.org/gcc/gcc-10.3.0/gcc-10.3.0.tar.xz
10.2.0 https://ftpmirror.gnu.org/gcc/gcc-10.2.0/gcc-10.2.0.tar.xz
10.1.0 https://ftpmirror.gnu.org/gcc/gcc-10.1.0/gcc-10.1.0.tar.xz
9.4.0 https://ftpmirror.gnu.org/gcc/gcc-9.4.0/gcc-9.4.0.tar.xz
9.3.0 https://ftpmirror.gnu.org/gcc/gcc-9.3.0/gcc-9.3.0.tar.xz
9.2.0 https://ftpmirror.gnu.org/gcc/gcc-9.2.0/gcc-9.2.0.tar.xz
9.1.0 https://ftpmirror.gnu.org/gcc/gcc-9.1.0/gcc-9.1.0.tar.xz
8.5.0 https://ftpmirror.gnu.org/gcc/gcc-8.5.0/gcc-8.5.0.tar.xz
8.4.0 https://ftpmirror.gnu.org/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz
8.3.0 https://ftpmirror.gnu.org/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz
8.2.0 https://ftpmirror.gnu.org/gcc/gcc-8.2.0/gcc-8.2.0.tar.xz
8.1.0 https://ftpmirror.gnu.org/gcc/gcc-8.1.0/gcc-8.1.0.tar.xz
7.5.0 https://ftpmirror.gnu.org/gcc/gcc-7.5.0/gcc-7.5.0.tar.xz
7.4.0 https://ftpmirror.gnu.org/gcc/gcc-7.4.0/gcc-7.4.0.tar.xz
7.3.0 https://ftpmirror.gnu.org/gcc/gcc-7.3.0/gcc-7.3.0.tar.xz
7.2.0 https://ftpmirror.gnu.org/gcc/gcc-7.2.0/gcc-7.2.0.tar.xz
7.1.0 https://ftpmirror.gnu.org/gcc/gcc-7.1.0/gcc-7.1.0.tar.bz2
6.5.0 https://ftpmirror.gnu.org/gcc/gcc-6.5.0/gcc-6.5.0.tar.bz2
6.4.0 https://ftpmirror.gnu.org/gcc/gcc-6.4.0/gcc-6.4.0.tar.bz2
6.3.0 https://ftpmirror.gnu.org/gcc/gcc-6.3.0/gcc-6.3.0.tar.bz2
6.2.0 https://ftpmirror.gnu.org/gcc/gcc-6.2.0/gcc-6.2.0.tar.bz2
6.1.0 https://ftpmirror.gnu.org/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2
5.5.0 https://ftpmirror.gnu.org/gcc/gcc-5.5.0/gcc-5.5.0.tar.bz2
5.4.0 https://ftpmirror.gnu.org/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2
5.3.0 https://ftpmirror.gnu.org/gcc/gcc-5.3.0/gcc-5.3.0.tar.bz2
5.2.0 https://ftpmirror.gnu.org/gcc/gcc-5.2.0/gcc-5.2.0.tar.bz2
5.1.0 https://ftpmirror.gnu.org/gcc/gcc-5.1.0/gcc-5.1.0.tar.bz2
4.9.4 https://ftpmirror.gnu.org/gcc/gcc-4.9.4/gcc-4.9.4.tar.bz2
4.9.3 https://ftpmirror.gnu.org/gcc/gcc-4.9.3/gcc-4.9.3.tar.bz2
4.9.2 https://ftpmirror.gnu.org/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2
4.9.1 https://ftpmirror.gnu.org/gcc/gcc-4.9.1/gcc-4.9.1.tar.bz2
4.8.5 https://ftpmirror.gnu.org/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2
4.8.4 https://ftpmirror.gnu.org/gcc/gcc-4.8.4/gcc-4.8.4.tar.bz2
4.7.4 https://ftpmirror.gnu.org/gcc/gcc-4.7.4/gcc-4.7.4.tar.bz2
4.6.4 https://ftpmirror.gnu.org/gcc/gcc-4.6.4/gcc-4.6.4.tar.bz2
4.5.4 https://ftpmirror.gnu.org/gcc/gcc-4.5.4/gcc-4.5.4.tar.bz2

Deprecated versions:
None

Variants:
Name [Default] When Allowed values Description
========================= ==== ==================== ===================================================

binutils [off] -- on, off Build via binutils
bootstrap [on] -- on, off Enable 3-stage bootstrap
graphite [off] -- on, off Enable Graphite loop optimizations (requires ISL)
languages [c,c++,fortran] -- ada, brig, c, c++, Compilers and runtime libraries to build
fortran, go, java,
jit, lto, objc,
obj-c++
nvptx [off] -- on, off Target nvptx offloading to NVIDIA GPUs
piclibs [off] -- on, off Build PIC versions of libgfortran.a and libstdc++.a
strip [off] -- on, off Strip executables to reduce installation size

Build Dependencies:
autoconf automake binutils cuda diffutils flex gawk gmp gnat gnuconfig iconv isl libtool m4 mpc mpfr texinfo zip zlib zstd

Link Dependencies:
binutils cuda gmp gnat iconv isl mpc mpfr zlib zstd

Run Dependencies:
binutils

"Spack packages" Web サイト

https://spack.github.io/packages/ Web サイトから spack で利用可能なパッケージを検索できます。

パッケージをインストールする

spack installコマンドでパッケージをインストールします。(アンインストールはspack unintall

最も簡単な例

spack install tree

バージョンの指定

バージョンを指定してインストールするには以下のようにします。

spack install -j 4 --fail-fast gcc@8.5.0
  • --fail-fast : インストール時にコンパイルエラーなどが発生したらその時点で実行を終了する。
  • -j : コンパイル時の並列数を指定する。

その他のオプションについては、spack help installの出力を参照して下さい。

インストール時のコンパイル条件の指定

spack infoコマンドの実行時に表示される Variants の項目を利用して、 インストール時のコンパイル条件を指定することができます。

spack install -j 4 --fail-fast gcc@8.5.0 binutils=True

インストールしたパッケージを利用可能にする

spack loadコマンドでインストールしたパッケージを利用可能にします。(spack unloadでロードの解除)

これにより複数のバージョンを切り替えることができます。

spack load gcc@8.5.0

複数の同一パッケージをインストールしてしまった場合

例えば、emacs@27.2をすでに spack でインストールしてあるにも関わらずもう一度同じemacs@27.2を同一条件でインストールしてしまった場合、spack load emacsを実行した際などに以下のようなエラーが出ることがあります。

==> Error: emacs matches multiple packages.  Matching packages:    
xi4oeab emacs@27.2%gcc@8.5.0 arch=linux-centos7-zen
7ck36ru emacs@27.2%gcc@8.5.0 arch=linux-centos7-zen

Use a more specific spec.

このようなエラーが出る場合、一方は不要なので削除してください。

以下のコマンドにより、上記ハッシュ値を用いてアンインストールできます。

spack uninstall /7ck36ru