============
Linuxへのインストール
============

.. important:: 
    EMSolutionをインストールする前に，ライセンスをアクティベーションする必要があります。ライセンスのアクティベーション方法については， :doc:`/handbook/install/licence_protection` を参照してください。


------------------------
1. 実行モジュールのコピー
------------------------

Linuxでは、EMSolutionの実行モジュールを任意のディレクトリにコピーして使用します。以下の手順に従ってください。

1. EMSolutionの実行モジュールをダウンロードします。

2. ダウンロードしたアーカイブファイル(Zipファイル)を使用マシンにコピーします。

3. アーカイブファイルを解凍します。以下のコマンドを使用します。

.. code-block:: bash

    unzip emsol_(version).zip

4. 実行モジュールを適当なフォルダに格納してください。例えば、`/usr/local/bin` ディレクトリに格納する場合は、以下のコマンドを使用します。

.. code-block:: bash

    sudo cp emsol_(version) /usr/local/bin/
    sudo chmod +x /usr/local/bin/emsol_(version)

-------------------
2. ライブラリのインストール
-------------------

.. important::
    `pyemsol` のLinux版 ではIntel oneAPI ランタイム（``libimf.so`` / ``libsvml.so`` / ``libirng.so`` / ``libintlc.so.5``）が必要となるため，別途 oneAPI の導入が必要です。
    Intel oneAPIをダウンロードしてインストールしてください。

    
    以下のコマンドを実行することで，emsol_(version) の実行モジュールや `pyemsol.so` で使用しているライブラリを確認できます。

    .. code-block:: console
        :caption: Linuxでのライブラリ確認コマンド

        # EMSolutionの場合
        ldd /usr/local/bin/emsol_(version) 

        # pyemsolの場合
        ldd (your_python_env)¥Lib¥site-packages¥pyemsol_(version)/pyemsol.so

    その他 `pybind11` や Intelの `mkl` などのPythonライブラリが必要になる場合があります。これらのライブラリは、通常のPythonパッケージ管理ツール（pipなど）やcondaを使用してインストールできます。

    .. code-block:: bash

        # 例: pipを使用してインストールする場合
        pip install pybind11 pybind11-abi
        pip install mkl mkl-include

        # 例: condaを使用してインストールする場合
        conda install -c conda-forge pybind11 pybind11-abi
        conda install -c intel mkl mkl-include


-------------------------
3. パスの付け方
-------------------------
EMSolutionを実行するためには、実行モジュールのパスを環境変数に追加する必要があります。以下の手順に従ってください。

1. EMSolutionの実行モジュールを格納したディレクトリのパスを確認します。

2. 環境変数 `PATH` にそのパスを追加します。以下のコマンドを使用します。

.. code-block:: bash

    export PATH=$PATH:/usr/local/bin/emsol_(version)

3. この設定を永続化するために、ホームディレクトリの `.bashrc` ファイルに以下の行を追加します。

.. code-block:: bash

    echo 'export PATH=$PATH:/usr/local/bin/emsol_(version)' >> ~/.bashrc
    source ~/.bashrc

-------------------------
4. テスト
-------------------------
EMSolutionのインストールが正しく行われたかを確認するために、以下のコマンドを実行してみてください。
[-v]はバージョン情報を表示するオプションです。

.. code-block:: bash

    emsol_(version) -v

もし正しくインストールされていれば、EMSolutionのバージョン情報が表示されます。
もしエラーが表示される場合は、パスの設定や実行モジュールの配置を再確認してください。

.. note:: 
    もしライブラリが見つからない等のエラーが発生した場合は、必要なライブラリがインストールされているか確認してください。EMSolutionは、特定のライブラリに依存している場合があります。
    使用しているライブラリを確認するには，以下のコマンドを実行します。

    .. code-block:: bash

        ldd /usr/local/bin/emsol_(version)

    必要なライブラリが不足している場合は、適切なパッケージマネージャを使用してインストールしてください。例えば、Ubuntuでは以下のようにします。

    .. code-block:: bash

        sudo apt-get install libiomp5md
        sudo apt-get install libstdc++6

    Red Hat系のディストリビューションでは以下のようにします。
    .. code-block:: bash

        sudo yum install libiomp5md
        sudo yum install libstdc++.so.6
