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など開発系パッケージや、各種ライブラリのパッケージを導入するためにあらかじめレポジトリの追加が必要である。
作業 |
内容 |
---|---|
追加のレポジトリ(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 の追加には以下のファイルを編集する。
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}
環境変数 |
例 |
---|---|
MLFSOFT_PATH |
“/home/hogehoge/mlfsoft” |
MANYO_PATH |
“/home/hogehoge/mlfsoft/manyo” |
必要な外部ライブラリのインストール#
万葉ライブラリのコンパイルや、空蟬可視化コードを動作させるのにいくつかの外部ライブラリなどのパッケージの導入が必要である。AlmaLinux9におけるパッケージの情報を下記の一覧に示す。
Python3関連で必要となるライブラリに関し、未だデフォルトのパッケージでは少し古いバージョンがインストールされたりパッケージ間の整合性がよくなかったりするために、 pip3 (python3用pip)を用いてインストールする方法を示す。
ライブラリ |
必要なバージョン |
|
---|---|---|
万葉ライブラリ関連 (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++コード用ライブラリを導入する。それぞれのディストリビューションでのパッケージは以下のようになる。
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/
手順の概要#
主な手順は以下の通りである。
ソースコードの準備
万葉ライブラリ コアコード
空蟬基本コード
空蟬 装置専用コード
ビルド作業#
ソースコードの準備#
ソースコードは、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)]]
Options |
必須|説明 |
|
---|---|---|
CMAKE_INSTALL_PREFIX |
Y |
インストール先となるMANYO_PATHを指定 |
MULTH |
N |
マルチスレッド処理の数の指定 |
NEXUS_PATH |
N |
Nexusformatのインストール先 |
MANYO_INSTTYPE |
N |
インストール方式: “N”/”O”(省略時”O”riginal) |
空蟬基本コード#
空蟬基本コードとしては
C++(万葉ライブラリ)コード
Pythonコード
から構成されているが、本章ではC++(万葉ライブラリ用)のビルドのみを示す。
実際には万葉ライブラリコアコードとほぼ同じ方法である。以下のようにC++コードがビルドされ、ライブラリがインストールされる。
$ cd Utsusemi
$ mkdir build
$ cmake .. -DCMAKE_INSTALL_PREFIX=${MANYO_PATH} -DMULTH=8 -DMANYO_INSTTYPE=O
$ make install
それぞれの装置における固有の関数が必要な場合がある。固有の関数を機能させるためには空蟬基本コードを拡張する装置固有コードが必要となる場合がある。 そのため、いくつかの装置は下記のように万葉ライブラリ用のC++コードを空蝉基本コード以外に別途ビルドする必要がある。 それぞれのBLごとのインストール方法は後述する。
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++)が導入されているので、それらに必要なライブラリを追加でインストールする必要がある。
必要な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}
環境変数 |
役割 |
---|---|
MLFSOFT_PATH |
万葉ライブラリ、空蝉を含めたMLF関連ソフトウェアのインストール先 |
MANYO_PATH |
万葉ライブラリのインストール先 |
LD_LIBRARY_PATH |
共有ライブラリの検索パス(Linux一般で使用) |
PYTHONPATH |
Pythonのライブラリ検索パス(Pythonが使用) |
$ python3
>>> import Manyo
Manyo >>>