CentOS 8 へのインストール

著者

稲村 泰弘

最終更新日

Mar. 11, 2021

ここでは、CentOS 8 (8.3.2011)におけるPython3環境上に空蟬4をインストールする手順の例を示す。

環境構築

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

作業

内容

1

CentOS開発環境の構築

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

2

追加のレポジトリ

epel および PowerTools を追加

3

その他必要なツール類

cmake導入(おそらく導入済み)

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

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

なお、レポジトリ PowerTools の追加には /etc/yum.repos.d/CentOS-Linux-PowerTools.repo を編集する必要がある。このファイルの以下の行

enabled=0

enabled=1

に書き換える。

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

$ sudo yum install cmake

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

$ sudo yum update

空蟬環境に必要な外部ライブラリのインストール

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

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

ライブラリ

必要なバージョン

CenOS 8.3(2011)で使用可能なパッケージ

Manyoライブラリ関連

(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 (pip3) + pyside2(on pip3)

Numpy

1.6.x以降

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

Scipy

0.10.x以降

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

matplotlib

1.0.x以降

python3-pip (pip3) + matplotlib(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-pip
$ sudo pip3 install -U pip
$ sudo pip3 install pyside2
$ sudo pip3 install numpy matplotlib scipy

インストール手順

インストール先の作成

本マニュアルでは、

/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では万葉ライブラリのコンパイルが不可能であることを確認している。そこで、少し前のバージョンのソースコードをダウンロードする。

ダウンロード先 : https://github.com/michaelrsweet/mxml/releases

バージョン : 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 はコードをダウンロードする。

ダウンロード先 : https://github.com/nexusformat/code/releases

ファイル : 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. 空蟬 装置専用コード

準備

ソースコード

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

空蟬ポータルサイトダウンロード から空蟬4の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++コードのコンパイルスクリプト

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

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

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

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

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

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

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

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

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

$ cp -r python-ugao /opt/mlfsoft/
$ ls -F /opt/mlfsoft
manyo/ python-ugao/
$ ls -F /opt/mlfsoft/python-ugao
uGao/

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

万葉ライブラリ用コード

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

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

空蟬のPythonコードのインストール

空蟬の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/

また、それぞれの装置に対して空蟬基本コードを拡張するコードが必要であるが、上記のコピーでそれらは既にコピーされている。

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

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

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++)が導入されているので、それらに必要なライブラリを個別にインストールする必要がある。

必要なC++ライブラリ

必要なバージョン

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

Manyoライブラリ関連

(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の場合

Under Construction

環境変数を設定

空蟬の環境変数設定は、装置ごとに異なる。よって使用する装置に応じて設定を行う必要がある。基本的な設定はそれぞれの装置の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

環境変数について

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

環境変数

説明

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