Simple ITK(http://www.simpleitk.org/)を使うことになったので、Ubuntuにインストールする。なんかチュートリアルもあるらしい(http://www.simpleitk.org/SimpleITK/help/tutorials.html)。
ここ(https://itk.org/Wiki/SimpleITK/GettingStarted#Build_It_Yourself)を参考に自分でビルドする。
$ git clone http://itk.org/SimpleITK.git $ mkdir SimpleITK-build $ cd SimpleITK-build $ cmake ../SimpleITK/SuperBuild $ make -j12 %スレッドでコンパイル
とするもcmakeで以下のエラー。
CMake Error at /homes/Username/hogehoge/simpleITKsource/SimpleITK/CMake/ExternalData.cmake:1122 (message): Object MD5=2e115fe26e435e33b0d5c022e4490567 not found at: https://placid.nlm.nih.gov/api/rest?method=midas.bitstream.download&checksum=2e115fe26e435e33b0d5c022e4490567&algorithm=MD5 ("unsupported protocol") https://simpleitk.github.io/SimpleITKExternalData/MD5/2e115fe26e435e33b0d5c022e4490567 ("unsupported protocol") https://data.kitware.com:443/api/v1/file/hashsum/MD5/2e115fe26e435e33b0d5c022e4490567/download ("unsupported protocol") https://midas3.kitware.com/midas/api/rest?method=midas.bitstream.download&checksum=2e115fe26e435e33b0d5c022e4490567&algorithm=MD5 ("unsupported protocol") https://insightsoftwareconsortium.github.io/ITKTestingData/MD5/2e115fe26e435e33b0d5c022e4490567 ("unsupported protocol") https://itk.org/files/ExternalData/MD5/2e115fe26e435e33b0d5c022e4490567 ("unsupported protocol") make[2]: *** [ExternalData/.ExternalSource/lua-5.1.5.tar.gz-hash-stamp] エラー 1 make[1]: *** [CMakeFiles/SuperBuildSimpleITKSourceReal.dir/all] エラー 2 make: *** [all] エラー 2
cmakeのバージョンがなんか古い(3.2.x。要求は3.3以上)ので、cmake3.5.2でcmake し直したところ、エラー回避できてビルドが続いた(長い・・・)。cmakeは配布されているバイナリをダウンロードして使用。
(追記:このエラーについての説明があった。SSLの問題なのでSSL対応しているバイナリ配布版を使えと書いてある。 https://itk.org/Wiki/SimpleITK/FAQ#Is_my_compiler_supported.3F)
しかし、javadocに関してエラーを吐いて終了。なぜ・・・と思ってエラーログ見たり検索するも謎。OpenJDKが悪さをしているのではないかと思い、Oracle JREをインストール(ここ参考 http://www.linuxmania.jp/apt-install-java.html)。バージョンとサポートを確認したところ、Java6はサポートされてないとのこと。Oracle JRE 8をインストール。
んで、makeし直すもまたエラー。
Linking CXX executable ../../bin/SimpleITKUnitTestDriver5 [ 83%] Built target SimpleITKUnitTestDriver6 [ 83%] Built target SimpleITKUnitTestDriver1 [ 83%] Built target SimpleITKUnitTestDriver0 [ 83%] Built target SimpleITKUnitTestDriver2 [ 83%] Built target SimpleITKUnitTestDriver4 [ 83%] Built target SimpleITKUnitTestDriver5 [ 83%] Built target SimpleITKUnitTestDriver3 Linking CXX shared module lib/SimpleITK.so Linking CXX shared module _SimpleITK.so [ 83%] Built target SimpleITKLuaModule_LUA [ 83%] Built target SimpleITK_PYTHON make[3]: *** [all] エラー 2 make[2]: *** [SimpleITK-prefix/src/SimpleITK-stamp/SimpleITK-build] エラー 2 make[1]: *** [CMakeFiles/SimpleITK.dir/all] エラー 2 make: *** [all] エラー 2
ほわー、だわ。エラー吐いている部分でPython用のWrapperを生成しているぽくて、ここのビルドが終わらないとどうしようもない。
しかたがないので
& make 2>&1 | tee make.log
としてログファイルに標準出力と標準エラーを書き出し。
と思ったら、SimpleITK-buildがSimpleITKディレクトリの中になぜかあったのが問題ぽい・・・。つまり
$ cd SimpleITK $ mkdir SimpleITK-build $ cd SimpleITK-build $ cmake ../SuperBuild $ make -j12 %スレッドでコンパイル
という処理をしていてなんかおかしくなっていたっぽい(アホか)。
というわけで、cmakeとOracke JREを入れておけば普通にビルドできたという・・・。
.bashrcかなんかに以下追加。
export LD_LIBRARY_PATH=$/homes/Username/hogehoge/simpleITKsource//SimpleITK-build/lib
root権限で以下
# cd SimpleITK-build/Wrapping/Python # python Packaging/setup.py install
とすればよいと書いてあったが、上記1行目のディレクトリがない・・・。参考に指定ページの該当部分をよく見ると、
Alternatively, a Python virtual environment can be created and the distribution installed there.
とか書いてあった。つまり、SimpleITK-build/virtualenv/setup.pyができていたという。ところが、こいつを管理者権限で実行してもpermission deniedとなるし、virtualenvを起動させようにもこのvirtualenvディレクトリ下のbinディレクトリにはactivateが存在しない。。。
で、もう直接SimpleITK.pyをimportとしてやれと思い、ビルド用ディレクトリをあさってみたところ
SimpleITK-build/SimpleITK-build/Wrapping/Python
にSimpleITK.pyがあるのを発見。
import sys sys.path.append('/hogehoge/SimpleITK-build/SimpleITK-build/Wrapping/Python') import SimpleITK as sitk
で読み込めた。試しに関数をコールしたら大丈夫だったので、これで使える・・・。
と上記にいろいろビルドする方法を書き散らしたものの、バイナリ配布使うのが一番手っ取り早いよね、って思ったけどなぜか以下でインストールできひん。
$ pip install SimpleITK