yNagaokaのブログ

このブログはNGS解析初心者がつまずいた部分と解決方法をまとめた覚書のようなものです。

Singularityとは何か?の覚書ーその2

はじめに

Singularityとは何か?は前回のまとめで大体イメージができたかと思いますので実際にインストールしてみたいと思います。
SingularityCEをネイティブに動作させるにはLinuxシステムが必要です。また、Linux, Windows, Macそれぞれインストール方法が違うため順にまとめていきます。

インストール方法-共通

Singularityのインストール手順は主に3つです。
1. Goをインストールする
2. Singularityをダウンロードする
3. Singularityのソースコードコンパイルする

※Singularity v3以上は主にGoで書かれているため、ソースからコンパイルするにはGoが必要です。Goの最新バージョンをインストールする場合は、sudo rm -r /usr/local/go で古いgo ディレクトリを削除する必要があります(違う場所にgoをインストールしている場合は適切なpathに変更してください)。既存の ディレクトリ上に新しいバージョンを展開すると、ビルドするときにエラーが発生する可能性があります。
また、最新バージョンのsingularityをインストールする場合も、古いバージョンはアンインストールする必要があります。削除は以下のコマンドで行えます。

$ sudo rm -rf \
    /usr/local/libexec/singularity \
    /usr/local/var/singularity \
    /usr/local/etc/singularity \
    /usr/local/bin/singularity \
    /usr/local/bin/run-singularity \
    /usr/local/etc/bash_completion.d/singularity

Ubuntuにインストールする方法

・初めに必要なツールをインストールします。

$ sudo apt-get update
$ sudo apt-get install -y \
    autoconf \
    automake \
    cryptsetup \
    git \
    libfuse-dev \
    libglib2.0-dev \
    libseccomp-dev \
    libtool \
    pkg-config \
    runc \
    squashfs-tools \
    squashfs-tools-ng \
    uidmap \
    wget \
    zlib1g-dev

・次に最新バージョンのGoをインストールして$PATHをセットします。
最新のバージョンはhttps://go.dev/dl/で確認して、VERSION=XXXの部分を変更してください。

#インストール
$ export VERSION=1.21.5 OS=linux ARCH=amd64 
wget -O /tmp/go${VERSION}.${OS}-${ARCH}.tar.gz \
  https://dl.google.com/go/go${VERSION}.${OS}-${ARCH}.tar.gz
sudo tar -C /usr/local -xzf /tmp/go${VERSION}.${OS}-${ARCH}.tar.gz
sudo rm /tmp/go${VERSION}.${OS}-${ARCH}.tar.gz

#PATHの設定
$ echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.bashrc && \
  source ~/.bashrc  
#バージョンの確認
$ go version

・次にSingularityCEをダウンロードします。
今回はなるべく最新バージョンをインストールするためにGitHubのRepositoryからダウンロードする方法で行います。gitが使用できない場合は、以下のコマンドでインストールしてください。

$ sudo apt-get install git-all

・最新版のsingularity repositoryのclone (versionはhttps://github.com/sylabs/singularityで確認してください) 以下のコマンドではGitHubのmain branchがcloneされます。

$ git clone --recurse-submodules https://github.com/sylabs/singularity.git
$ cd singularity

・今回 (2023/12/18時点) はv4.0.2なので以下のコマンドで確認可能できます。

$ git checkout --recurse-submodules v4.0.2

・最後にsingularityのコンパイルを行って完了です。

$ ./mconfig
make -C builddir
sudo make -C builddir install

完了したらsingularityが使用できるようになっていると思います。 以下でバージョンを確認してみてください。

$ singularity --version

Windowsにインストールする方法

この場合は何通りか方法があります。
1) Windows内にUbuntuをインストールする
2) Git for Windowsを用いる
3) VirtualBox, Vagrant, Vagrant Manager for Windowsを用いる

私自身はWindows内にUbuntuをインストールする方法を用いました。Ubuntuさえインストールできれば上述のコマンドがそのまま使用できます。後の解析を考えると恐らくこれが一番楽です。

Macにインストールする方法

・SingularityCEはVagrantで利用することができます。インストールしていなければHomebrewとともにインストールします。

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ brew install --cask virtualbox vagrant vagrant-manager

HomebrewApple(またはLinux)が提供していない必要なものをインストールすることができるもので、/Homebrewにパッケージをインストールし、それらへのシンボリックリンクを/usr/localに作成するらしい...詳しくは下記参照

Homebrew — The Missing Package Manager for macOS (or Linux)

・インストールが完了したらTerminalを起動しVagrant VM で使用するディレクトリを作成します.

$ mkdir vm-singularity-ce && \
    cd vm-singularity-ce

すでに/vm-singularity-ceを別のVMに作成して使用している場合は、VMを破棄してVagrantfileを削除する必要があります。

$ vagrant destroy && \
    rm Vagrantfile

・最後にVirtual Machineを立ち上げればsingularityが使用できるはずです。(必要に応じて、$VMに別の値を代入してください)。

$ export VM=sylabs/singularity-ce-3.8-ubuntu-bionic64 && \
    vagrant init $VM && \
    vagrant up && \
    vagrant ssh

以下のコマンドで使用できるか確認してみてください。

vagrant@vagrant:~$ singularity version

インストール方法をまとまてみましたが無事インストールできましたか?問題や解決方法があった場合は教えて頂けるとありがたいです。