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)で使用可能なパッケージ  | 
|
|---|---|---|---|
 (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  | 
|
 (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
空蟬インストール手順¶
万葉ライブラリ コアコード
夕顔コード
空蟬基本コード
空蟬 装置専用コード
準備¶
ソースコード¶
ソースコードは、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で使用可能なパッケージ  | 
|
|---|---|---|---|
 (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  |