AlmaLinux 9 へのインストール#
- 著者:
稲村 泰弘
- 最終更新日:
Jun. 26th, 2023
概要#
本章ではAlmaLinux 9 に空蟬用の環境を準備し空蟬をインストールする手順の例を示す。
動作環境#
本章ではAlmaLinux 9にて構築しているが、他のRedHat9系列なら同じ手順でインストール可能であろう。
ここでは空蟬のインストールの前に必要な環境の構築手段を示す。
レポジトリ登録#
空蟬のインストールに必要となるgccなど開発系パッケージや、各種ライブラリのパッケージを導入するために新たなレポジトリの登録が必要である。
作業 |
内容 |
---|---|
開発環境の構築 |
開発ツールのグループパッケージ導入 |
追加のレポジトリ |
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)を用いてインストールする方法を示す。
ライブラリ |
必要なバージョン |
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関連 (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
手順の概要#
主な手順は以下の通りである。
ソースコードの準備
万葉ライブラリ コアコード
夕顔コード
空蟬基本コード
空蟬 装置専用コード
インストール#
ソースコードの準備#
ソースコードは、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> ...]
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/
空蟬基本コードのインストール#
空蟬基本コードは、以下の手順となる。
C++(万葉ライブラリ)コード
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/
それぞれの装置における固有の関数が必要な場合がある。固有の関数を機能させるためには空蟬基本コードを拡張する装置固有コードが必要であるが、上記のコピーでそれらは既にコピーされている。
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++)が導入されているので、それらに必要なライブラリを個別にインストールする必要がある。
必要な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コードは特に作業はない。
環境設定#
環境変数について#
空蟬の動作に関わる環境変数は以下の通りである。
環境変数 |
説明 |
値 |
---|---|---|
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とインストール方法を確認して手順に問題がないようなら、担当者(著者)へ状況報告をお願いしたい。
インストール後の動作に問題が発生した場合は、前節に示した空蟬のバージョンを確認し、発生した事象を担当者(著者)報告していただきたい。