AlmaLinux 8 及び RockyLinux 8 へのインストール#

著者

稲村 泰弘

最終更新日

Dec. 1st, 2022

概要#

本章では、既にサポートが終了したCentOS 8の代替手段として開発された AlmaLinux 8 及び RockyLinux 8上に空蟬用の環境を準備し空蟬をインストールする手順の例を示す。両方とも同じ手順である。

動作環境#

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

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

レポジトリ登録#

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

External AlmaLinux8 and RockyLinux8 repositories required#

作業

内容

開発環境の構築

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

追加のレポジトリ

epel および PowerTools を追加

その他必要なツール類

swig および cmake 導入

よって、以下のように上記の導入を行う。

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

なお、レポジトリ PowerTools の追加には、それぞれ以下のファイルを編集する必要がある。

Distribution

File path

AlmaLinux

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

RockyLinux

/etc/yum.repos.d/Rocky-PowerTools.repo

このファイルの以下の行

enabled=0

enabled=1

に書き換える。

swig や cmake は既にインストールされているはずであるが、以下のようにインストールする。

$ sudo yum install swig
$ sudo yum install cmake

最後に、レポジトリのアップデートを行っておく(epelとPowerToolsのため)

$ sudo yum update

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

万葉ライブラリのコンパイルや、空蟬可視化コードを動作させるのに必要な外部ライブラリ及び、AlmaLinux8やRockyLinux8におけるパッケージの情報を下記の一覧に示す。

Python3関連で必要となるライブラリは、未だデフォルトのパッケージでは提供されていない(PySide2など)もしくは少し古いバージョンのために、 pip3 (python3用pip)を用いてインストールする方法を示す。

External Shared Library required for Utsusemi environment (RH8 series)#

対象ソフトウェア

ライブラリ

必要なバージョン

AlmaLinux8, RockyLinux8のパッケージ

万葉ライブラリ関連

(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以降

python3-numpy

Scipy

0.10.x以降

python3-scipy

matplotlib

1.0.x以降

python3-matplotlib

PySide

1.2.x

python3-pip (pip3) + pyside2(on pip3)

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

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

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

続けてPythonのパッケージ(主に可視化、GUI関連)を導入する。すべてpipのパッケージを用いるが、インストールのやり方は自由である(以下は一例)

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

インストール先の作成#

本マニュアルでは、以下をインストール先とする。

/opt/mlfsoft/

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

/opt/mlfsoft/manyo
/opt/mlfsoft/python-utsusemi
/opt/mlfsoft/python-ugao

インストール作業を簡略化するために、このフォルダの所有者を作業者のアカウント(本マニュアルでは hoge)とする。

$ su -
# mkdir -p /opt/mlfsoft/
# chown hoge.hoge -R /opt/mlfsoft

万葉ライブラリに必要となるライブラリ(本マニュアルでは別途ビルドするNeXusライブラリ)は、万葉ライブラリのローカルフォルダにインストールする。

mini-xmlのインストール#

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

  • ダウンロード先 : michaelrsweet/mxml

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

コンパイル手順は以下の通り。

$ tar xzvf mxml-2.8.tar.gz
$ cd mxml-2.8
$ ./configure --prefix=/opt/mlfsoft/manyo
$ make install

NeXusのインストール#

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

ダウンロード先: nexusformat/code

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

コンパイル手順は下記の通り。インストール先は /opt/mlfsoft/manyoを指定する。ただし、RedHat8系列では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=/opt/mlfsoft/manyo ..
$ make
$ make install
$ mkdir /opt/mlfsoft/manyo/lib
$ cp /opt/mlfsoft/manyo/lib64/* /opt/mlfsoft/manyo/lib
$ cp /opt/mlfsoft/manyo/include/nexus/* /opt/mlfsoft/manyo/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++コードがコンパイルされ、ライブラリがインストールされる。なお、AlmaLinux8 と RockyLinux8 であっても、引数の -dist-name の値は RH7 で良い。

$ cd manyo-core
$ make clean;
$ python do_make_Manyo.py --manyo-path=/opt/mlfsoft/manyo --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> ...]

パラメータは以下のTableを参照すること。

Command List of do_make_Manyo.py and do_makeUtsusemi.py (RH8 seriese)#

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 /opt/mlfsoft/
$ ls -F /opt/mlfsoft
manyo/ python-ugao/
$ ls -F /opt/mlfsoft/python-ugao
uGao/

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

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

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

  2. Pythonコード

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

$ cd manyo-utsusemi
$ make clean;
$ python do_make_Utsusemi.py --manyo-path=/opt/mlfsoft/manyo --dist-name=RH7 install

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

$ cp -r  python-utsusemi /opt/mlfsoft
$ ls -F /opt/mlfsoft
manyo/ python-ugao/ python-utsusemi/
$ ls -F /opt/mlfsoft/python-utsusemi
utsusemi/
$ ls -F /opt/mlfsoft/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 (RH8 series)#

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=/opt/mlfsoft/manyo --dist-name=RH7 install

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

BL02の場合(未確認)#

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

External shared libraries for BL02 environment (RH8 series)#

対象ソフトウェア

必要なC++ライブラリ

必要なバージョン

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

万葉ライブラリ関連

(C++コード)

blas

指定なし

blas-devel

lapack

指定なし

lapack-devel

levmar

2.5

(存在せず)

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

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

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

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

$ cd Utsusemi-DNA/lib-levmar/2.5
$ make
$ cp liblevmar.* /opt/mlfsoft/manyo/lib
$ cp *.h /opt/mlfsoft/manyo/include/

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

$ cd ../../manyo-LevmarTools/
$ python3 do_make_Utsusemi.py --manyo-path=/opt/mlfsoft/manyo --dist-name=RH7 install
$ cd ../manyo

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

$ python3 do_make_Utsusemi.py --manyo-path=/opt/mlfsoft/manyo --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++)のコンパイル・インストールが必要である。

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

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

$ cd manyo-emaki
$ make clean
$ python do_make_Utsusemi.py --manyo-path=/opt/mlfsoft/manyo --dist-name=RH7 install

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

環境設定#

環境変数を設定#

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

/opt/mlfsoft/python-utsusemi/SIK/bashrc.py3.SIK
/opt/mlfsoft/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_WORK_DIR=${UTSUSEMI_USR_DIR}
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 環境変数の設定を変えること。

これらの設定を有効にするには、空蟬を使用するユーザーのホームフォルダ直下の環境設定用ファイル .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

環境変数について#

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

Environment variables for Utsusemi (CentOS8)#

環境変数

説明

UTSUSEMI_INST_CODE

対象となる装置コード。

装置コード

UTSUSEMI_DATA_DIR

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

フォルダパス

UTSUSEMI_USR_DIR

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

フォルダパス

UTSUSEMI_WORK_DIR

作業フォルダ。(一部のアプリのみ使用)

フォルダパス

UTSUSEMI_LOG_QUIET

処理中のログを減らす。

y/n

UTSUSEMI_MULTH

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

正の整数

UTSUSEMI_DEBUGMODE

デバッグモードを指定する。デフォルトはn。

y/n

空蟬の実行#

初期設定が終わっていれば、ターミナルから空蟬のコマンドが実行できるはずである。例えば空蟬の基本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 /opt/mlfsoft

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

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

問題が発生した場合#

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

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