spack

ソースコードからビルドするタイプのパッケージマネージャー。https://spack.io/

インストールしたソフトウェアをenvironmentとして分離できるのだが、environmentのactivateに時間が掛かる(数十秒程度)のが難点。

homebrew

元々はmacOS用のパッケージマネージャーだが、Linuxでも利用できる。 多くの場合、ソースコードからビルドされる。

本来はmacOSに管理者権限と共にインストールするソフトウェアであるため、Ubuntu上で実行する場合にはユーザー権限のみで実行している&Linux環境であるという2段階の例外的環境で実行することになるため、spackよりも扱いが難しくなる印象。

nix

nixはroot権限無しでインストールできるらしい。 https://nixos.wiki/wiki/Nix_Installation_Guide

まだ試していないが、nixによるパッケージのインストールはビルドを必要としないため、上記2つと比べて高速なので、使い勝手も良いかもしれない。

[番外編] singularity

もしsingularityが使えるのならば、必要なパッケージ毎にコンテナを作り、それを実行することもできる。

例えば、Gitを使いたい場合、

$ singularity exec docker://bitnami/git:2.43.0 git --version
INFO:    Using cached SIF image
git version 2.43.0

のように直接dockerイメージのURLを指定して実行も出来る。内部的には、SIF形式と呼ばれるコンテナイメージへ変換され、その後実行される。個人的にはこの方法はそれぞれのソフトウェア毎にコンテナとして分離できるため、気に入っている。

whalebrewのsingularityバックエンド版があると良いなーと思っている。