UbuntuでAnaconda3を用いてEMAN2仮想環境を構築する

提供: Eospedia
移動: 案内検索

この記事について

  • Ubuntuマシンには、公式手順に倣ってMiniconda2を用いたソースビルドでEMAN2入れていたのだが、MacOSでAnaconda3を用いたビルドに成功したことを受けてこっちでもやってみたくなった。その作業の覚書。
  • 2019年8月26日実施。

追記

その1(2020/1/23)

実行環境

  • Ubuntu 16.04.6 LTS


手順

Anaconda3のインストール

インストーラのダウンロードとインストールの実施

# インストーラのダウンロード
> wget https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh

# インストール
> sh Anaconda3-2019.07-Linux-x86_64.sh
> bash

bashして新しいシェル立ち上げたときにプロンプトの前に(base)と出てくればインストール成功している。

EMAN2用仮想環境の作成

公式では cmake=3.9 も指定しているが、バージョンを3.9にする意味がよく分からないので、とりあえずバージョン指定なしで、最新版を入れてみる。

> conda create -n eman-env python=2.7 cmake -c defaults

仮想環境へ必要物をインストールする。

> conda install -n eman-env eman-deps=14 -c cryoem -c defaults -c conda-forge

cmakeとかpythonとかが勝手にダウングレードされる。

で、EMAN2用仮想環境へ切り替える。

> conda activate eman-env

EMAN2のビルドとインストール

ソースコードの用意

Githubからソースを取ってくる。~/softwaresにEMAN2を置くことにする。

> cd ~/softwares
> git clone https://github.com/cryoem/eman2.git

# 2019年8月現在の最新の安定版をチェックアウト
> git checkout v2.3

ビルド

> cd ~/softwares/eman2
> mkdir build && cd build
> cmake ..

OpenGL系で警告が出てくる

CMake Warning (dev) at /home/kttn/anaconda3/envs/eman-env/share/cmake-3.12/Modules/FindOpenGL.cmake:270 (message):
  Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when
  available.  Run "cmake --help-policy CMP0072" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  FindOpenGL found both a legacy GL library:

    OPENGL_gl_LIBRARY: /usr/lib/x86_64-linux-gnu/libGL.so

  and GLVND libraries for OpenGL and GLX:

    OPENGL_opengl_LIBRARY: /usr/lib/x86_64-linux-gnu/libOpenGL.so
    OPENGL_glx_LIBRARY: /usr/lib/x86_64-linux-gnu/libGLX.so

  OpenGL_GL_PREFERENCE has not been set to "GLVND" or "LEGACY", so for
  compatibility with CMake 3.10 and below the legacy GL library will be used.
Call Stack (most recent call first):
  cmake/OpenGL.cmake:15 (find_package)
  libEM/CMakeLists.txt:175 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.

よく分からないので無視する。 ビルド実施。

> make -j

引くぐらい警告出てくるけどC++あるあるなので無視する。nvccが動かなかったような気がするのでGPUアプリのビルドが出来ていないかもしれない。

インストール

> make install

~/anaconda3/envs/eman-env/bin/ にEMAN2のプログラムがインストールされる。

テスト

> make test

Running tests...
Test project /home/kttn/softwares/eman2/build
    Start 1: imports
1/5 Test #1: imports ..........................   Passed    0.17 sec
    Start 2: test-EMAN2DIR
2/5 Test #2: test-EMAN2DIR ....................   Passed    0.21 sec
    Start 3: nose-tests
3/5 Test #3: nose-tests .......................***Failed    9.22 sec
    Start 4: progs
4/5 Test #4: progs ............................   Passed   40.76 sec
    Start 5: py-compile
5/5 Test #5: py-compile .......................   Passed    0.42 sec

80% tests passed, 1 tests failed out of 5

Total Test time (real) =  50.78 sec

The following tests FAILED:
          3 - nose-tests (Failed)
Errors while running CTest
Makefile:96: ターゲット 'test' のレシピで失敗しました
make: *** [test] エラー 8

なにかに失敗している。

make test-verbose でチェックしてみると、test_write_jpeg ってところで失敗していた。

3: ======================================================================
3: ERROR: test ignore negative index for jpeg ..............
3: ----------------------------------------------------------------------
3: Traceback (most recent call last):
3:   File "/home/kttn/softwares/eman2/rt/pyem/test_imageio.py", line 207, in test_write_jpeg
3:     os.unlink(filename)
3: OSError: [Errno 2] No such file or directory: 'testimage.jpeg'
3:
3: ----------------------------------------------------------------------

他は特に異常なし。

同じ環境では無いが同じところでエラーが発生する例がある様( https://github.com/cryoem/eman2/issues/399 )。

よくわからないが、jpegは使うことは無い気がするし、とりあえず気にせず使ってみることにする。

以上。