AlmaLinux 9 へのインストール#

著者:

稲村 泰弘

最終更新日:

Jun. 26th, 2023

概要#

本章ではAlmaLinux 9 に空蟬用の環境を準備し空蟬をインストールする手順の例を示す。

動作環境#

本章ではAlmaLinux 9にて構築しているが、他のRedHat9系列なら同じ手順でインストール可能であろう。

ここでは空蟬のインストールの前に必要な環境の構築手段を示す。

レポジトリ登録#

空蟬のインストールに必要となるgccなど開発系パッケージや、各種ライブラリのパッケージを導入するために新たなレポジトリの登録が必要である。

External AlmaLinux9 repositories required#

作業

内容

開発環境の構築

開発ツールのグループパッケージ導入

追加のレポジトリ

epel および CRB (CodeReady Linux Builder)を追加

その他必要なツール類

swig および cmake 導入

ここで CRB (CodeReady Linux Builder) は swigのインストールに必要となる。

上記のうち、開発環境パッケージとepelの導入を以下のように行う。

$ sudo dnf groupinstall base 'Development tools' --setopt=group_package_types=mandatory,default,optional
$ sudo dnf install epel-release

次に、レポジトリ CRB の追加には以下のファイルを編集する。

Distribution

File path

AlmaLinux

/etc/yum.repos.d/almalinux-crb.repo

このファイルの以下の行

enabled=0

enabled=1

に書き換える。

これらのレポジトリの情報を更新するために、アップデートを行う(epelとCRBのため)。

$ sudo dnf update

最後に、swig や cmake (既にインストールされている場合もあるかもしれないが)を以下のようにインストールする。

$ sudo dnf install swig
$ sudo dnf install cmake

必要な外部ライブラリのインストール#

万葉ライブラリのコンパイルや、空蟬可視化コードを動作させるのにいくつかの外部ライブラリなどのパッケージの導入が必要である。AlmaLinux9におけるパッケージの情報を下記の一覧に示す。

Python3関連で必要となるライブラリに関し、未だデフォルトのパッケージでは少し古いバージョンがインストールされたりパッケージ間の整合性がよくなかったりするために、 pip3 (python3用pip)を用いてインストールする方法を示す。

External Shared Library required for C++ code (AlmaLinux9)#

ライブラリ

必要なバージョン

AlmaLinux9のパッケージ

万葉ライブラリ関連

(C++コード)

Python3

3.6

python3-devel

Mini-XML

2.7以降3.0未満

(不使用:理由は後述)

HDF5

1.8.x

hdf5-devel

NeXus

4.2.x以降

(存在せず)

Gnu Scientific Library

指定なし

gsl-devel

Boost C++ Library

1.46.x以降

boost-devel

Open SSL

指定なし

openssl-devel


Python packages required for Utsusemi environment (AlmaLinux9)#

パッケージ

必要なバージョン

Python関連

(GUI関連)

Numpy

1.6.x以降

Scipy

0.10.x以降

matplotlib

1.2.x以降

PySide2

5.x以降


以上のうち、パッケージで存在するC++コード用ライブラリを導入する。

$ sudo dnf install python3-devel
$ sudo dnf install hdf5-devel
$ sudo dnf install gsl-devel
$ sudo dnf install boost-devel
$ sudo dnf install openssl-devel

残りのmini-XMLはパッケージがあるがNeXusと不整合があるためにソースからコンパイルする必要がある。 またNeXusはパッケージが存在しない。 これらに関しては、次のインストール手順で示す。

続けてPythonのパッケージ(主に可視化、GUI関連)を導入する。

上記のPython関連パッケージは全てdnfにてパッケージによるインストールも可能であるが、一部挙動がおかしい部分があるのでpipを用いて最新のパッケージをインストールする。

下記の例ではユーザー領域にインストールしているが、やり方は自由である。

$ sudo dnf install python3-pip
$ sudo python3 -m pip install -U pip
$ python3 -m pip install --user numpy scipy matplotlib pyside2

インストール先の作成#

本章(AlmaLinux9へのインストール)では空蝉の全てのコードをホームフォルダ(${HOME})以下に mlfsoft というフォルダを作成しインストールする方法を取る場合を例にして説明する。ユーザー名を hogehoge とすると、以下のようになる。

/home/hogehoge/mlfsoft

すなわちこのフォルダの下に以下のような万葉ライブラリや空蟬パッケージのフォルダが置かれることになる。

/home/hogehoge/mlfsoft/manyo
/home/hogehoge/mlfsoft/python-utsusemi
/home/hogehoge/mlfsoft/python-ugao

インストール作業の記述を簡略化するために、このフォルダの場所を環境変数 MLFSOFT_PATH として指定し、以降これを用いる。また万葉ライブラリに必要となるライブラリ(本マニュアルでは別途ビルドするmini-xmlとNeXusライブラリ)は万葉ライブラリのインストール先と同じ場所にインストールする。そのために、環境変数 MANYO_PATH も指定しておく。

$ export MLFSOFT_PATH=${HOME}/mlfsoft
$ export MANYO_PATH=${MLFSOFT_PATH}/manyo
$ mkdir -p ${MLFSOFT_PATH}
$ mkdir -p ${MANYO_PATH}

環境変数

MLFSOFT_PATH

“/home/hogehoge/mlfsoft”

MANYO_PATH

“/home/hogehoge/mlfsoft/manyo”

mini-xmlのインストール#

mini-xml は、epelのパッケージで存在するものの、APIが大きく変わってしまったバージョンである3.0が提供されている。3.0では万葉ライブラリのコンパイルが不可能であることを確認している。そこで、少し前のバージョンのソースコードをダウンロードする。

ダウンロード先 : michaelrsweet/mxml

バージョン : v2.7以上(2.8 〜 2.12のどれでも良い)

コンパイル手順は以下の通り。インストール先は ${MANYO_PATH}を指定すること。

$ tar xzvf mxml-2.8.tar.gz
$ cd mxml-2.8
$ ./configure --prefix=${MANYO_PATH}
$ make install

NeXusのインストール#

NeXusのインストールにはコードをダウンロードする必要がある。

ダウンロード先: nexusformat/code

ファイル: v4.4.3.tar.gz (最新版でも大丈夫と思われる)

コンパイル手順は下記の通り。インストール先は${MANYO_PATH}を指定。ただし、RedHat7以降の系列でも64bitのライブラリは lib64 というフォルダに入れられるため、万葉ライブラリでのデフォルトである lib にコピーする。また include/nexus の中身も include に移す。

$ tar xzvf code-4.4.3.tar.gz
$ cd code-4.4.3
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX:PATH=${MANYO_PATH} ..
$ make
$ make install
$ mkdir ${MLFSOFT_PATH}/manyo/lib
$ cp ${MANYO_PATH}/lib64/* ${MANYO_PATH}/lib
$ cp ${MANYO_PATH}/include/nexus/* ${MANYO_PATH}/include/

PySide, numpy, scipy, matplotlibの動作確認#

$ python3
>>> import numpy
>>> import scipy
>>> import PySide

手順の概要#

主な手順は以下の通りである。

  1. ソースコードの準備

  2. 万葉ライブラリ コアコード

  3. 夕顔コード

  4. 空蟬基本コード

  5. 空蟬 装置専用コード

インストール#

ソースコードの準備#

ソースコードは、subversionやgithubなどで管理されているが、Ubuntu Linux版のインストールパッケージにまとまって入っているのでそれを利用する。

空蟬ポータルサイトダウンロード から空蟬のUbuntuLinux用をダウンロードする。

これを展開した src ディレクトリにあるので、それを利用する。

$ tar xzvf Utsusemi_4.0_201112_Ubuntu_1604_2004LTS_PY3.tar.gz
$ cd Utsusemi_4.0_201112_Ubuntu_1604_2004LTS_PY3
$ ls -F
Install.py src/
$ ls -F src/
    environ-DNA/            manyo-DNA/              manyo-SAS/              manyo-core/             manyo-utsusemi/         python-ugao/            version.txt
lib-levmar/         manyo-LevmarTools/      manyo-TKtools/          manyo-emaki/            python-emaki/           python-utsusemi/

万葉ライブラリコアコードのインストール#

万葉ライブラリコアコードを以下のようにインストールする。C++コードがコンパイルされ、ライブラリがインストールされる。なお、AlmaLinux9であっても、引数の -dist-name の値は RH7 で良い。

$ cd manyo-core
$ make clean;
$ python do_make_Manyo.py --manyo-path=${MANYO_PATH} --dist-name=RH7 install

コンパイルスクリプトについて#

上記のように、万葉ライブラリのC++コード、及び後述する空蟬のC++コードをコンパイルする場合、コードと同じフォルダに入っているスクリプト(do_make_Manyo.pyやdo_make_Utsusemi.py)を利用してインストールを行う。

書式とパラメータは以下のとおり。

$ python do_make_Manyo.py <command> [<option> <option> ...]
$ python do_make_Utsusemi.py <command> [<option> <option> ...]
Command List of do_make_Manyo.py and do_makeUtsusemi.py (AlmaLinux9)#

do_make_Manyo.py / do_make_Utsusemi.py <command> [<option> <option> …]

command

make

コンパイルを行う

install

コンパイル+インストールを行う

clean

make cleanを行う

man

helpを作成するスクリプトを実行する

depend

コンパイル時に必要な情報を収集する(普段は使用しない)

option

–help

ヘルプ表示

–manyo-path=<path>

MANYO_PATHを指定する (通常は/opt/mlfsoft/manyo)

–dist-name=<name>

Linuxディストリビューションの指定 ( “RH6” “RH7” “Ubuntu” )

–pyver=n.m

使用するPythonのバージョンの指定。 省略時はスクリプト実行に使用したPythonのバージョン。

–numth=n

マルチスレッド処理の数の指定

–without-para

コンパイルのパラレル処理を行わない。指定しない場合、 高速に処理されるがメモリを大量に消費(数GB)するので注意。

–debug

デバッグモード

–ver=<version>

バージョンの指定(表記の問題なので不要)

–without-depend

コンパイル時に必要な情報を収集する手順を省く。これにより 高速化するが必ず一度は実施する必要があるので使用しないこと。

–other-modules=<mod>[,<mod>,..]

他のモジュールに依存する場合に使用する。 <mod>はモジュール名。

夕顔コードのインストール#

夕顔はPythonコードのみで構成されている。インストール先のフォルダにコピーするだけである。

$ cp -r python-ugao ${MLFSOFT_PATH}
$ ls -F ${MLFSOFT_PATH}
manyo/ python-ugao/
$ ls -F ${MLFSOFT_PATH}/python-ugao
uGao/

空蟬基本コードのインストール#

空蟬基本コードは、以下の手順となる。

  1. C++(万葉ライブラリ)コード

  2. Pythonコード

まず、空蟬の万葉ライブラリ用コードを以下のようにインストールする。C++コードがコンパイルされ、ライブラリがインストールされる。 万葉ライブラリの時と同様に、引数の -dist-name の値は RH7 で良い。

$ cd manyo-utsusemi
$ make clean;
$ python do_make_Utsusemi.py --manyo-path=${MANYO_PATH} --dist-name=RH7 install

次に空蟬のPythonコードをインストールする。実際には所定のフォルダをコピーするだけである。

$ cp -r  python-utsusemi ${MLFSOFT_PATH}
$ ls -F ${MLFSOFT_PATH}
manyo/ python-ugao/ python-utsusemi/
$ ls -F ${MLFSOFT_PATH}/python-utsusemi
utsusemi/
$ ls -F ${MLFSOFT_PATH}/python-utsusemi/utsusemi
AMR/ DNA/ ENG/ HPN/ SAS/ SIK/ TKtools/ __init__.py ana/ facade/ scripts/ vis/

それぞれの装置における固有の関数が必要な場合がある。固有の関数を機能させるためには空蟬基本コードを拡張する装置固有コードが必要であるが、上記のコピーでそれらは既にコピーされている。

Installation paths of python codes specialized to beam lines (AlmaLinux9)#

BL

万葉ライブラリ用コード

Pythonコードインストール先

BL01

なし

python-utsusemi/utsusemi/SIK

BL02

manyo-DNA(詳細は後述)

python-utsusemi/utsusemi/DNA

BL11

なし

python-utsusemi/utsusemi/HPN

BL14

なし

python-utsusemi/utsusemi/AMR

BL15

manyo-SAS(詳細は後述)

python-utsusemi/utsusemi/SAS

BL17

BL15と同じ(詳細は後述)

python-utsusemi/utsusemi/VNR

BL19

manyo-Emaki

ただし、いくつかの装置は下記のように、万葉ライブラリ用のC++コードを別途インストールする必要があるが、それぞれのBLごとのインストール方法は後述する。

最後に、空蟬の一部の機能は一時ファイルを作成するため、そのためのフォルダを作成する必要がある。

通常はユーザーのホームフォルダに ana というフォルダを作成し、その下に xml 及び tmp フォルダを作成する。

$ mkdir -p ~/ana/xml
$ mkdir -p ~/ana/tmp

この ana フォルダのある場所(上記の例ではホームフォルダ)は、環境変数 UTSUSEMI_USR_DIR にて指定しておく必要がある(設定方法は環境設定の項で述べる)。

BL01, BL11, BL14の場合#

これらのビームライン用のコードは、pythonコードだけであるので、特に作業は生じない。

BL15, BL17の場合#

BL15は、専用の万葉ライブラリ用のコード(C++)のコンパイル・インストールが必要である。

BL17は基本BL15の環境を利用するので、BL15のインストールを行った後であれば使用可能である。

万葉ライブラリ用コード#

空蟬の万葉ライブラリコードと同じである。インストール先などのパラメータも一致させること。

$ cd manyo-SAS
$ make clean
$ python do_make_Utsusemi.py --manyo-path=${MANYO_PATH} --dist-name=RH7 install

空蟬のPythonコードは既にインストール(コピー)されているので特に作業はない。

BL02の場合(未確認)#

BL02においては、独自の計算用関数(C++)が導入されているので、それらに必要なライブラリを個別にインストールする必要がある。

External Shared Libraries for BL02 environment (AlmaLinux9)#

必要なC++ライブラリ

必要なバージョン

CenOS 7.9で使用可能なパッケージ

万葉ライブラリ関連

(C++コード)

blas

指定なし

blas-devel

lapack

指定なし

lapack-devel

levmar

2.5

(存在せず)

万葉ライブラリ用C++コード#

levmarコードのコンパイルに必要な、blasおよびlapackのパッケージインストールを行う。

$ su -
# dnf install lapack-devel blas-devel
# exit

続けてlevmarライブラリをコンパイルし、出来上がったlibファイルを万葉ライブラリと同じ場所へコピーする。

$ cd Utsusemi-DNA/lib-levmar/2.5
$ make
$ cp liblevmar.* ${MANYO_PATH}/lib
$ cp *.h ${MANYO_PATH}/include/

さらにlevmarライブラリを使用するDNA用関数群(万葉ライブラリの一部として)をコンパイルする。

$ cd ../../manyo-LevmarTools/
$ python3 do_make_Utsusemi.py --manyo-path=${MANYO_PATH} --dist-name=RH7 install
$ cd ../manyo

最後にDNA用のC++コードをコンパイルする。

$ python3 do_make_Utsusemi.py --manyo-path=${MANYO_PATH} --dist-name=RH7 install

なお、前述のようにPythonコードのインストールは既に行っているので不要である。

最後にDNA専用の環境設定を行う。DNA用のコマンドなどを $(HOME)/ana/DNAとしてコピー、もしくはリンクを作成する。

$ mkdir -p ~/ana/xml
$ mkdir -p ~/ana/tmp
$ cp -r $(pwd)/environ-home/ana ~/ana/DNA
もしくは
$ ln -s $(pwd)/environ-home/ana ~/ana/DNA

BL19の場合#

BL19は、専用の万葉ライブラリ用のコード(C++)のコンパイル・インストールが必要である。

万葉ライブラリ用コード#

空蟬の万葉ライブラリコードと同じである。インストール先などのパラメータも一致させること。

$ cd manyo-emaki
$ make clean
$ python do_make_Utsusemi.py --manyo-path=${MANYO_PATH} --dist-name=RH7 install

Pythonコードは特に作業はない。

環境設定#

環境変数について#

空蟬の動作に関わる環境変数は以下の通りである。

Environment variables for Utsusemi (AlmaLinux9)#

環境変数

説明

UTSUSEMI_INST_CODE

対象となる装置コード

装置コード

UTSUSEMI_DATA_DIR

Raw Dataの置き場所(この下に装置コードのフォルダ(“SIK”,”AMR”)が並び、それらの下にRunNoごとのデータフォルダが並ぶ

フォルダパス

UTSUSEMI_USR_DIR

ユーザーのベースフォルダ。いくつかの設定ファイルやテンポラリファイルが作成される

フォルダパス

UTSUSEMI_WORK_DIR

作業フォルダ(一部のアプリのみ使用だが、AlmaLinuxの場合不使用とする)

フォルダパス

UTSUSEMI_LOG_QUIET

処理中のログを減らす

y/n

UTSUSEMI_MULTH

マルチスレッドで動作する処理のスレッド数を指定する(仮に大きな値を入れてもCPUの個数よりは大きくならない)

正の整数

UTSUSEMI_DEBUGMODE

デバッグモード

y/n

環境変数を設定#

空蟬の環境変数設定は使用する装置ごとに異なる。よって使用する装置に応じて設定を行う必要がある。基本的な設定はそれぞれの装置のPythonコードのフォルダに存在する bashrc.py3.XXX (XXXは装置コード)に収められている。

${MLFSOFT_PATH}/python-utsusemi/SIK/bashrc.py3.SIK
${MLFSOFT_PATH}/python-utsusemi/SAS/bashrc.py3.SAS
など
# Utsusemi software environment
# (2021.02.08)

# Utsusemi Environment
export UTSUSEMI_INST_CODE=SIK
export UTSUSEMI_DATA_DIR=/data
export UTSUSEMI_USR_DIR=${UTSUSEMI_USR_DIR-${HOME}}
export UTSUSEMI_LOG_QUIET=n
export UTSUSEMI_MULTH=8
export UTSUSEMI_DEBUGMODE=n

# Path to MLF Software
MLFSOFT_PATH=/opt/mlfsoft

...

本項では、インストール先が /opt/mlfsoft ではないので、このファイルの MLFSOFT_PATH 環境変数の設定を上記で使用してきた ${HOME}/mlfsoft (/home/hogehoge/mlfsoft)に変えること。

MLFSOFT_PATH=${HOME}/mlfsoft

これらの設定を有効にするには、空蟬を使用するユーザーのホームフォルダ直下の環境設定用ファイル .bashrc に bashrc.py3.XXX をそのまま追記するか、以下のように source コマンドで空蟬の環境設定用ファイルを実行する。

$ source /opt/mlfsoft/python-utsusemi/XXX/bashrc.py3.XXX

推奨する方法は、.bashrcに以下のような設定を、それぞれの装置ごとに追加することである。

# For Utsusemi environment SIK
if [ -f /opt/mlfsoft/python-utsusemi/SIK/bashrc.py3.SIK ]; then
    alias SIK="source /opt/mlfsoft/python-utsusemi/SIK/bashrc.py3.SIK"
fi

# For Utsusemi environment SAS
if [ -f /opt/mlfsoft/python-utsusemi/SAS/bashrc.py3.SAS ]; then
    alias SAS="source /opt/mlfsoft/python-utsusemi/SAS/bashrc.py3.SAS"
fi

この設定では装置コード”SIK”と”SAS”の空蟬パッケージがインストールされたことを意味する。またこれが設定されている場合、以下のようの装置コードを入力することで、それぞれの装置の環境に切り替えることが可能となる。

BL01の場合

$ SIK

BL15の場合

$ SAS

空蟬の実行#

初期設定が終わっていれば、ターミナルから空蟬のコマンドが実行できるはずである。例えば空蟬の基本GUIであるSequencerの起動は以下のようになる。

$ Ana

空蟬のバージョン確認#

前節の空蟬環境の有効化を済ませたのちに下記のコマンドを入力する。

$ python3
>>> import utsusemi
>>> utsusemi.__version__
'4.0.220825'

もしくは

$ python3
>>> import UtsusemiInfo
---------------------------------------------
               Utsusemi Info
---------------------------------------------
         version : 4.0 (rev 220825)
  Contact person : Yasuhiro Inamura
      e-mail : yasuhiro.inamura@j-parc.jp
---------------------------------------------

Manyo>>>

ソースコードのリリース番号とバージョン番号が表示される。

アンインストール#

手順としては、インストール先のフォルダを消去する。

$ rm -r ${MLFSOFT_PATH}
もしくは
$ rm -rf /home/hogehoge/mlfsoft

なお、まだいくつかフォルダ(データフォルダ、データ処理用フォルダ)が残っているので下記のように削除する。

$ rm -r ~/ana
$ sudo rm -r /data

問題が発生した場合#

インストール時にエラーや予期せぬ状態になった場合、使用したOSとインストール方法を確認して手順に問題がないようなら、担当者(著者)へ状況報告をお願いしたい。

インストール後の動作に問題が発生した場合は、前節に示した空蟬のバージョンを確認し、発生した事象を担当者(著者)報告していただきたい。