CentOS 7 へのインストール#

著者:

稲村 泰弘

最終更新日:

Dec. 1st, 2022

概要#

本章では、CentOS 7.9におけるPython3環境上に空蟬をインストールする手順の例を示す。

動作環境#

本章ではCentOS 7.9にて構築しているが、RedHat7系列なら同じ手順でインストール可能である。

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

レポジトリ登録#

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

External CentOS7 repositories required for Utsusemi installation#

作業

内容

CentOS開発環境の構築

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

追加のレポジトリ

epelレポジトリの追加

その他必要なツール類

cmake, doxygen, swig3 の導入

よって、以下のコマンドで上記の導入を行う。

$ su -
# yum groupinstall base 'Development tools' --setopt=group_package_types=mandatory,default,optional
# yum install epel-release
# yum install cmake doxygen

また、C++コードをPython3から呼び出すためのラッパーツールであるSWIGを用いているが、CentOSに入っているバージョン(swig 2.0.x)ではPython3での万葉ライブラリにおいていくつか不具合が生じる(ElementContainer同士の割り算ができない)ため、 SWIG3(swig 3.0.x) に置き換える必要がある。

$ su -
# yum erase swig
# yum install swig3

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

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

Python3関連で必要となるライブラリは、未だデフォルトのパッケージでは提供されていない(Python3用matplotlibなど)ために、 pipを用いてインストールすることに注意。

External Shared Library required for Utsusemi environment (CentOS7)#

対象ソフトウェア

ライブラリ

必要なバージョン

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

万葉ライブラリ関連

(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)

指定なし

gsl-devel

Boost C++ Library

1.46.x以降

boost-devel

Open SSL

指定なし

openssl-devel

Python関連

(GUI関連)

PySide

1.2.x

python3-pip + pyside2

Numpy

1.6.x以降

python3-pip + numpy(pip)

Scipy

0.10.x以降

python3-pip + scipy(pip)

matplotlib

1.0.x以降

python3-pip + matplotlib(pip)

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

$ su -
# yum install python3-devel hdf5-devel gsl-devel boost-devel openssl-devel
# yum install python36-pip
# pip3 install -U pip
# python3 -m pip install pyside2
# python3 -m pip install numpy matplotlib scipy

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

インストール先の作成#

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

/opt/mlfsoft/

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

/opt/mlfsoft/manyo
/opt/mlfsoft/python-utsusemi
/opt/mlfsoft/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を指定する。ただし、CentOSでは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の動作確認#

$ python
>>> 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++コードがコンパイルされ、ライブラリがインストールされる。

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

C++コードのコンパイルスクリプト#

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

書式は以下のようになり、そのオプションなどはTableに示す。

$ 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 (CentOS7)#

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++コードがコンパイルされ、ライブラリがインストールされる。

$ 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 (CentOS7)#

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 (CentOS7)#

対象ソフトウェア

必要な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 (CentOS7)#

環境変数

説明

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

デバッグモードを指定する。

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とインストール方法を確認して手順に問題がないようなら、担当者(著者)へ状況報告をお願いしたい。

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