SPADI-A Wiki/SPADI-A DAQ マニュアル/ソフトウェア/ソフトウェアのインストール/NestDAQ


NestDAQのインストール

NestDAQをインストールするには、以下のGitHubのインストールのページを参考にすれば良いが、比較的玄人向け、もしくは開発者向けのインストール方法の説明になっている。

そのため、ここでは簡略化されたインストール方法を記述する。ライブラリのバージョンを切り替えて NestDAQ の動作検証などを行いたい場合は、公式のインストールのページを参照する。また、ネット上には NestDAQ のインストール方法に関するドキュメントがいくつかある。J-PARC MARQ spectrometer T103 実験 (白鳥 et al.) のサーバーマシンのインストール方法のメモとしては、e50server01 のインストールログがある。

また、以下の NestDAQ 利用者のページも参考にできる。

準備

インストールを行う環境は2024年9月30日時点で最新の AlmaLinux 9.4 を想定する。AlmaLinux 9.X であれば、ほぼ同じインストール手順になるはずである。AlmaLinux 9.4 の環境としては、サーバー環境として Graphical User Interface (GUI) がなくてもインストールできるがずであるが、GUIがあると便利であるため、GUI 環境のインストールを仮定する。さらに、言語は英語 (US) を仮定する。また、NestDAQ に必要なパッケージは以下である。

さらに、nestdaq-user-impl では、以下のパッケージが必要になるため、これもインストールしておく。これらがないと、コンパイル時にエラーとなる。

パッケージをインストールするには、sudo dnf install zstd libzstd-devel bzip2-devel などとする。現在インストールされているパッケージを確認する場合は、dnf list といったコマンドがある。このあたりのコマンドは、Google で調べれば出てくるはず。

SELinux は大抵問題を引き起こすので、切っておきたい。以下のコマンドで確認可能。

$ getenforce
Disabled

さらに、一般に DAQ の開発段階では firewall は切っておくとデバッグが捗り、労力削減になる。そのため、LAN 環境などでは、最初は firewall を切って動作検証することを推奨とする。

ディレクトリ構成

NestDAQ のインストールでは管理者権限 (いわゆる root 権限) は必要なく、どのディレクトリにインストールしても構わない。ただ、本マニュアルでは、Linux 初心者向けに推奨のディレクトリ構造を紹介する。いくつかのスクリプトでは、ディレクトリのパスをベタ書きしているところがあるため、他のディレクトリにインストールを行うと、修正項目が増える場合がある。2024年9月30日以前のインストール先は実験毎に変わっている場合があったが、本マニュアルでは spadi アカウントを作成し、ホームディレクトリ以下にインストールを行うことを推奨とする。

/home/spadi/

ちなみに、2024年9月30日以前は nestdaq アカウントを作成し、/home/nestdaq ホームディレクトリ以下にインストールする場合が多かったが、SPADI Alliance のさまざまな活動により nestdaq に限らず、他のソフトウェアを利用することが増えてたため /home/nestdaq ディレクトリではなく、spadi アカウントをデフォルトとし、これを推奨とする。また、公式の NestDAQ のスクリプトも順次 /home/spadi に対応させていくと良いと考えられる。

さらに、SPADI-A DAQ パッケージ関連の Git リポジトリやソースコードは

/home/spadi/repos

というディレクトリにクローンもしくはダウンロードし、ここでビルドすることを本マニュアルのデフォルトとする。また、インストール先は

/home/spadi/local/
                 |-- bin
                 |-- share
                 |-- lib
                 `-- etc

をデフォルトとする。Linux に慣れている人であれば、このディレクトリでなくても運用できるであろう。

NestDAQ 本体のインストール

NestDAQ 本体のビルドに必要な以下のライブラリをまずインストールする。

さらに、以下の redisinsight をインストールしてもよい。

このプログラムは Redis データベースの中身を便利に見るためのソフトウェアである。ただ、Redis デフォルトの CUI コマンド redis-cli でも Redis データベースの中身を見ることができるので、必ずしも redisinsight をインストールする必要はない。

その後、NestDAQ 本体のインストールを行う。ちなみに、Boost のビルドの前に、zstd, libzstd-devel, bzip2-devel パッケージをパッケージマネージャでインストールしておく必要がある。これらパッケージをインストールしていなくても Boost 自体のコンパイルはできてしまうが、nestdaq-user-impl のコンパイル時にエラーとなる。

redis のインストール

git でソースをダウンロードしてコンパイル

$ mkdir -p $HOME/repos
$ cd $HOME/repos
$ git clone https://github.com/redis/redis.git
$ cd redis
$ git checkout -b 6.0.16 6.0.16
$ make -j10 PREFIX=$HOME/local
$ make PREFIX=$HOME/local install

make の所要時間は 20 - 30秒程度。設定ファイルを $HOME/local/etc にコピー

$ mkdir $HOME/local/etc
$ cp $HOME/repos/redis/redis.conf $HOME/local/etc/

daemon mode をオンにする。

$ emacs -nw $HOME/local/etc/redis.conf
#daemonize no
daemonize yes

さらに、コンピュータ外からのアクセスを有効にするために、以下の行を有効にする。

# bind 127.0.0.1
bind 0.0.0.0

また、プロテクトモードを無効にする。これをしないと、redis-cli などで外部コンピュータからアクセスはできるがデータベースの中身を見られない(たしか)。

protected-mode yes
               |||
               VVV
protected-mode no

RedisTimeSeries をインストール

$ cd $HOME/repos
$ git clone --recursive https://github.com/RedisTimeSeries/RedisTimeSeries.git
$ cd RedisTimeSeries
$ git checkout -b v1.4.9 v1.4.9
$ make
   ...
$ mkdir $HOME/local/lib
$ cp $HOME/repos/RedisTimeSeries/bin/linux-x64-release/redistimeseries.so $HOME/local/lib/

make の所要時間は数秒程度。make 時に make -j2 とすると、以下のようなエラーとなるので、-jオプションは使わないようにすべし。

$ make -j2
make[1]: warning: -j0 forced in submake: resetting jobserver mode.
Submodule path 'deps/RedisModulesSDK': checked out 'c0740b8209abae38775adc6f3fefe05a520be55b'
Submodule path 'deps/readies': checked out '32e37e68f6ffa66f5a6e41cb37794147e84c38cb'
../deps/readies/mk/main:67: /home/spadi/repos/RedisTimeSeries/deps/readies/mk/cfg: No such file or directory
make[1]: *** No rule to make target '/home/spadi/repos/RedisTimeSeries/deps/readies/mk/cfg'.  Stop.
make: *** [Makefile:31: build] Error 2

Boost をインストール

Boost をダウンロードしてきて make する。

$ cd $HOME/repos
$ git clone https://github.com/boostorg/boost.git
$ cd boost
$ git checkout -b boost-1.80.0 boost-1.80.0
$ git submodule update --init --recursive
$ ./bootstrap.sh
$ ./b2 install \
 link=static,shared \
 threading=single,multi \
 cxxstd=17 \
 variant=release,debug \
 --layout=tagged \
 -j10 \
 --prefix=$HOME/local
 ...
 ...updated 20451 targets...

早いコンピュータであれば、./b2 install の所要時間は 10 分程度。

ZeroMQ をインストール

ZeroMQ を持ってきてコンパイル

$ cd $HOME/repos
$ git clone https://github.com/zeromq/libzmq.git
$ cd libzmq
$ mkdir build
$ cmake \
-DCMAKE_INSTALL_PREFIX=$HOME/local \
-DCMAKE_CXX_STANDARD=17 \
-B ./build \
-S .
$ cd build
$ make -j10
$ make install

make -j10 の所要時間は20秒程度。

FairLogger をインストール

$ cd $HOME/repos
$ git clone https://github.com/FairRootGroup/FairLogger.git
$ cd FairLogger
$ mkdir build
$ cmake \
 -DCMAKE_INSTALL_PREFIX=$HOME/local \
 -DCMAKE_CXX_STANDARD=17 \
 -DUSE_EXTERNAL_FMT=OFF \
 -B build \
 -S .
$ cd build
$ make -j10
$ make install

make -j10 の所要時間は20秒程度。

FairMQ をインストール (v1.4.55)

$ cd $HOME/repos
$ git clone https://github.com/FairRootGroup/FairMQ.git
$ cd FairMQ
$ git checkout -b v1.4.55 v1.4.55
$ mkdir build
$ cmake \
-DCMAKE_INSTALL_PREFIX=$HOME/local \
-DCMAKE_CXX_STANDARD=17 \
-DCMAKE_PREFIX_PATH="$HOME/local" \
-B build \
-S .
$ cd build
$ make -j10
$ make install

make -j10 の所要時間は2分程度。

hiredis のインストール (v1.1.0)

$ cd $HOME/repos
$ git clone https://github.com/redis/hiredis.git
$ cd hiredis
$ make PREFIX=$HOME/local install

make の所要時間は数秒程度。

redis-plus-plus のインストール (1.3.6)

$ cd $HOME/repos
$ git clone https://github.com/sewenew/redis-plus-plus.git
$ cd redis-plus-plus
$ mkdir build
$ cmake \
-DCMAKE_INSTALL_PREFIX=$HOME/local \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=$HOME/local \
-DREDIS_PLUS_PLUS_CXX_STANDARD=17 \
-DREDIS_PLUS_PLUS_BUILD_TEST=OFF \
-B ./build \
-S .
$ cd build
$ make -j10 install

make の所要時間は数秒程度。

nestdaq のインストール

$ cd $HOME/repos
$ git clone https://github.com/spadi-alliance/nestdaq.git
$ cd nestdaq
$ mkdir build
$ cmake \
  -DCMAKE_INSTALL_PREFIX=$HOME/local \
  -DCMAKE_PREFIX_PATH=$HOME/local \
  -B ./build \
  -S .
$ cd build
$ make -j10 install

make の所用時間は 20-30 秒程度。

redisinsight のインストール

redisinsight をもし使いたい場合はインストールする。以前は wget コマンドでコンパイル済のバイナリを配布していたが、最近は web でアカウント登録してからバイナリをダウンロードする方式に変わったようだ?バイナリをダウンロードして、

$ mv <ダウンロードしたディレクトリ>redisinsight-linux64 $HOME/local/bin
$ cd $HOME/local/bin
$ chmod +x redisinsight-linux64
$ ./redisinsight-linux64
<なにも表示されなければOK。Ctrl-Cで殺す。殺したときはいろいろメッセージが出る。>
$

付録: エキスパート向けのインストール

NestDAQを使う場合、いくつかのライブラリが必要であるが、そのバージョンを切り替えて試したい時がある。そのような場合、ライブラリのバージョンに応じてインストール先を変えて用意しておき、ライブラリのリンクを変えることで、異なるライブラリを用いた動作確認を行う。ただ、Linuxにおけるリンク方法の知識が必要であるため、本マニュアルでは、慣れない人向けにより簡単なインストール方法を説明をしている。その代わり、異なるライブラリを試したい場合は、いちいちバージョンの異なるライブラリをインストールする必要があるだろう。