Manyo Library Installation on Linux#

ここでは、万葉ライブラリ(C++)および関連する装置専用ライブラリのビルドおよびインストールについて述べる。

概要#

万葉ライブラリの機能はC++コードで実装されており、それらの機能はPythonから簡単に呼び出せるようになっている。従って万葉ライブラリのビルドにはC++の開発(ビルド)環境に加え、Pythonの開発環境やPythonラッパー用のツール(SWIG)などのインストールも必要である。

本章で対象としているディストリビューションは以下の通り。

  • Ubuntu 24.04 / 22.04 (Mint Linux 22/21)

  • AlmaLinux9

  • AlmaLinux8 / RockyLinux8

同系列のディストリビューションなら同じ手順でインストール可能であろう。

ビルド環境構築#

ツール類のインストール#

ここでは万葉ライブラリのビルドに必要なツールのインストール等の構築手段を示す。

主なツールは以下の通り。

  • g++

  • cmake

  • swig

Ubuntu系列の場合#

Ubuntuであれば、特にレポジトリの追加も必要なく下記のようにインストールできる。

$ sudo apt install g++ cmake swig

AlmaLinux/RockyLinuxの場合#

AlmaLinuxなどRedhat系列のディストリビューションでは、ビルドに必要なgccなど開発系パッケージや、各種ライブラリのパッケージを導入するためにあらかじめレポジトリの追加が必要である。

External repositories required for build#

作業

内容

追加のレポジトリ(AlmaLinux9)

epel および CRB (CodeReady Linux Builder)を追加

追加のレポジトリ(AlmaLinux8)

epel および PowerTools を追加

その他必要なツール類

swig, git および cmake 導入

ビルドにはSwigが必要となるため、そのパッケージをインストールするために AlmaLinux9では CRB (CodeReady Linux Builder) が、 AlmaLinux8/RockyLinux8では PowerTools が必要となる。

上記のうち、開発環境パッケージとepelの導入を以下のように行う。

$ sudo dnf install epel-release

次に、レポジトリ CRB もしくは PowerTools の追加には以下のファイルを編集する。

repo files for each Distribution#

Distribution

File path

AlmaLinux9

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

AlmaLinux8

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

RockyLinux8

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

これらのファイルの以下の行

enabled=0

enabled=1

に書き換える。

続けてこれらのレポジトリの情報を更新するために、アップデートを行う(epelとCRB/PowerToolsのため)。

$ sudo dnf update

最後に、cmake や swig, git(既にインストールされている場合もあるかもしれないが)を以下のようにインストールする。

$ sudo dnf install g++ cmake swig git

インストール先の作成#

本章では万葉ライブラリや空蝉の全てのコードをホームフォルダ(${HOME})以下に mlfsoft というフォルダを作成しインストールする方法を取る場合を例にして説明する。ユーザー名を hogehoge とすると、以下のようになる。

/home/hogehoge/mlfsoft

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

/home/hogehoge/mlfsoft/manyo
/home/hogehoge/mlfsoft/python-utsusemi/utsusemi

インストール作業の記述を簡略化するために、このフォルダの場所を環境変数 MLFSOFT_PATH として指定し、以降の作業ではこれを用いる。またディストリビューションでは提供されないパッケージ(本マニュアルでは別途ビルドするNeXusライブラリ)をビルド・インストールする必要があるが、そのインストール先は万葉ライブラリのインストール先と同じとする。そのために、環境変数 MANYO_PATH も指定しておく。

$ export MLFSOFT_PATH=${HOME}/mlfsoft
$ export MANYO_PATH=${MLFSOFT_PATH}/manyo
$ mkdir -p ${MLFSOFT_PATH}
$ mkdir -p ${MANYO_PATH}
Example for environment variables#

環境変数

MLFSOFT_PATH

“/home/hogehoge/mlfsoft”

MANYO_PATH

“/home/hogehoge/mlfsoft/manyo”

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

万葉ライブラリのコンパイルや、空蟬可視化コードを動作させるのにいくつかの外部ライブラリなどのパッケージの導入が必要である。AlmaLinux9におけるパッケージの情報を下記の一覧に示す。

Python3関連で必要となるライブラリに関し、未だデフォルトのパッケージでは少し古いバージョンがインストールされたりパッケージ間の整合性がよくなかったりするために、 pip3 (python3用pip)を用いてインストールする方法を示す。

External Shared Library required to build C++ code#

ライブラリ

必要なバージョン

万葉ライブラリ関連

(C++コード)

Python3

3.9 or later

Mini-XML

3.5 or later

HDF5

1.8.x

NeXus API

latest version

Gnu Scientific Library

1.1x or later

Boost C++ Library

1.46 or later

Open SSL

zLib

C++コード用ライブラリのインストール#

パッケージで存在するC++コード用ライブラリを導入する。それぞれのディストリビューションでのパッケージは以下のようになる。

Python packages required for Utsusemi environment#

Distribution

Packages

Ubuntu 24/22

python3-dev, libhdf5-dev, libmxml-dev, libgsl-dev, libssl-dev, liblapack-dev, libnexus-dev, libboost-serialization-dev, libboost-filesystem-dev, libboost-system-dev, libboost-program-options-dev, zlib1g-dev

Mint Linux 22/21

AlmaLinux9

python3-devel, mxml-devel, hdf5-devel, gsl-devel, boost-devel, openssl-devel

AlmaLinux8

python3.11-devel, mxml-devel, hdf5-devel, gsl-devel, boost-devel, openssl-devel

これらの具体的なインストール例としては、Ubuntu系(Ubuntu, Mint)であれば以下のようになる。

$ sudo apt install -y python3-dev libhdf5-dev libmxml-dev libgsl-dev libssl-dev liblapack-dev libnexus-dev libboost-serialization-dev libboost-filesystem-dev libboost-system-dev libboost-program-options-dev zlib1g-dev

また、RedHat9系(AlmaLinux9)では以下のようになる。

$ sudo dnf install python3-devel mxml-devel hdf5-devel gsl-devel boost-devel openssl-devel

Redhat8系(AlmaLinux8/RockyLinux8)では、デフォルトのPython3のバージョンが3.6と少し古いので、ここでは3.11を導入しalternativesコマンドでデフォルトのPython3とする。

$ sudo dnf install python3.11-devel mxml-devel hdf5-devel gsl-devel boost-devel openssl-devel
$ sudo alternatives --set python3 /usr/bin/python3.11

NeXusのインストール(AlmaLinux/RockyLinux)#

AlmaLinuxやRockyLinuxでは、NeXus APIはパッケージが存在しないためインストールにはコードをダウンロードしビルドする必要がある。なおインストール先は万葉ライブラリのインストール先と同じとする。

ダウンロード先: nexusformat/code

ファイル: 最新版をgitでダウンロード

コンパイル手順は下記の通り。インストール先は${MANYO_PATH}を指定。ただし、RedHat7以降の系列でも64bitのライブラリは lib64 というフォルダに入れられるため、万葉ライブラリでのデフォルトである lib にコピーする。

$ git clone https://github.com/nexusformat/code
$ cd code
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX:PATH=${MANYO_PATH} ..
$ make
$ make install
$ mkdir ${MANYO_PATH}/lib
$ cp ${MANYO_PATH}/lib64/* ${MANYO_PATH}/lib
$ cp ${MANYO_PATH}/include/nexus/* ${MANYO_PATH}/include/

手順の概要#

主な手順は以下の通りである。

  1. ソースコードの準備

  2. 万葉ライブラリ コアコード

  3. 空蟬基本コード

  4. 空蟬 装置専用コード

ビルド作業#

ソースコードの準備#

ソースコードは、subversionやgithubなどで管理されているが、空蝉Install PortalサイトにあるLinux汎用版のインストールパッケージにまとまって入っているので、本稿ではこれを利用する。

空蟬ポータルサイトLinux(汎用版) における Download links からダウンロードする。

これを展開した src ディレクトリにあるので、それを利用する。

$ tar xzvf Utsusemi_4.0.250718.tar.gz
$ cd Utsusemi_4.0.250718
$ ls -F
Install.py src/
$ ls -F src/
    manyo/  uGao/  Utsusemi/  Utsusemi-DNA/  Utsusemi-ENG/  Utsusemi-SAS/

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

基本的に万葉ライブラリ関連のビルドには CMake を使用する。 万葉ライブラリコアコードのインストールは以下のように行う。結果、C++コードがビルドされ、作成されたライブラリがインストールされる。

$ cd manyo
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_INSTALL_PREFIX=${MANYO_PATH} -DMULTH=8 -DMANYO_INSTTYPE=O
$ make install

なお、 MANYO_PATH は前節で示したようにインストール先のパスである。

ビルドについて#

上記のようにビルドにはCMakeを使用する。 万葉ライブラリのC++コード、及び後述する空蟬のC++コードが対応する。 いずれもCMakeで同じ手順でビルドできるように共通化してある。

書式とパラメータは以下のとおり。

cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/Manyo [-DMULTH=<n>[, -DNEXUS_PATH=/path/to/nexul, -DMANYO_INSTTYPE=(N/O)]]
CMake options for Manyo-lib build#

Options

必須|説明

CMAKE_INSTALL_PREFIX

Y

インストール先となるMANYO_PATHを指定

MULTH

N

マルチスレッド処理の数の指定

NEXUS_PATH

N

Nexusformatのインストール先

MANYO_INSTTYPE

N

インストール方式: “N”/”O”(省略時”O”riginal)

空蟬基本コード#

空蟬基本コードとしては

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

  2. Pythonコード

から構成されているが、本章ではC++(万葉ライブラリ用)のビルドのみを示す。

実際には万葉ライブラリコアコードとほぼ同じ方法である。以下のようにC++コードがビルドされ、ライブラリがインストールされる。

$ cd Utsusemi
$ mkdir build
$ cmake .. -DCMAKE_INSTALL_PREFIX=${MANYO_PATH} -DMULTH=8 -DMANYO_INSTTYPE=O
$ make install

それぞれの装置における固有の関数が必要な場合がある。固有の関数を機能させるためには空蟬基本コードを拡張する装置固有コードが必要となる場合がある。 そのため、いくつかの装置は下記のように万葉ライブラリ用のC++コードを空蝉基本コード以外に別途ビルドする必要がある。 それぞれのBLごとのインストール方法は後述する。

Manyo Library codes for each beamline#

BL

万葉ライブラリ用コード

BL01

(空蝉基本コードに含まれる)

BL02

Utsusemi-DNA/manyo

BL11

(空蝉基本コードに含まれる)

BL14

(空蝉基本コードに含まれる)

BL15

Utsusemi-SAS/manyo.

BL17

(BL15のものを流用)

BL19

Utsusemi-ENG/manyo

BL01, BL11, BL14の場合#

空蝉基本コードに含まれるので、特に追加の作業は生じない。

BL15, BL17の場合#

BL15は、専用の万葉ライブラリ用のコード(C++)のビルドが必要である。

BL17は基本BL15の環境を利用するので、BL15のインストールを行った後であれば使用可能である。

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

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

$ cd Utsusemi-SAS
$ mkdir build
$ cmake .. -DCMAKE_INSTALL_PREFIX=${MANYO_PATH} -DMULTH=8 -DMANYO_INSTTYPE=O
$ make install

BL02の場合#

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

External Shared Libraries for BL02 environment (AlmaLinux9)#

必要なC++ライブラリ

必要なバージョン

万葉ライブラリ関連

(C++コード)

blas

指定なし

lapack

指定なし

levmar

2.5

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

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

Ubuntuであれば

::

$ sudo apt install liblapack-dev

AlmaLinux/RockyLinuxであれば

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

となる。 続けてUtsusemi-DNAのC++関数群のビルドとインストールを以下に示すように実行する。これにより、 levmar , manyo/LevmarTools , manyo/DNA といったライブラリがビルド・インストールされる。

$ cd Utsusemi-DNA
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_INSTALL_PREFIX=${MANYO_PATH} -DMULTH=8 -DMANYO_INSTTYPE=O
$ make install

BL19の場合#

BL19は、専用の万葉ライブラリ用のコード(C++)のコンパイル・インストールが必要である。

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

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

$ cd Utsusemi-ENG
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_INSTALL_PREFIX=${MANYO_PATH} -DMULTH=8 -DMANYO_INSTTYPE=O
$ make install

動作環境構築#

万葉ライブラリをPythonからimportするために必要な最小限の設定は下記のようになる。

export MLFSOFT_PATH=${HOME}/mlfsoft
export MANYO_PATH=${MLFSOFT_PATH}/manyo
export LD_LIBRARY_PATH=${MANYO_PATH}/lib:${LD_LIBRARY_PATH}
export PYTHONPATH=${MANYO_PATH}:${PYTHONPATH}
Environment variables to import Manyo#

環境変数

役割

MLFSOFT_PATH

万葉ライブラリ、空蝉を含めたMLF関連ソフトウェアのインストール先

MANYO_PATH

万葉ライブラリのインストール先

LD_LIBRARY_PATH

共有ライブラリの検索パス(Linux一般で使用)

PYTHONPATH

Pythonのライブラリ検索パス(Pythonが使用)

$ python3
>>> import Manyo
Manyo >>>