どの分野にもBibleと呼ばれる書籍は必ず有ります。それが万民にとって有益な書籍で有るかは議論の分かれる所かもしれません1。機械学習の世界でもBibleと呼ばれる書籍2が有ります。厄介なのが演習問題のソースプログラム。何と全てMatLabで実装されています。。。いくらBible解読の為とは言え、時価数100万円もするMatLabを購入する様な財力は筆者には有りません。困り果てていた所、友人からOctaveというOSSがMatLabと粗!?完全互換!?だと教えて貰ったので早速環境構築したところ様々な災難に遭遇した為、備忘録メモとして残しておこうと思います。
検証環境
- macOS 10.14.6 Mojave
Octave(CLI)版のインストール
Homebrewを利用してインストール出来ます。
brew install octave
インストールが完了したら~/.octaverc
に以下の内容を記載します。
setenv('GNUTERM', 'qt')
graphics_toolkit("gnuplot")
謎のエラーでグラフが描画出来ず。。。
通常はこれでセットアップが完了し、正常に動作する筈ですが。。。筆者の環境の場合、グラフ描画時に以下のエラーが表示され強制終了されてしまうトラブルに遭遇しました。
dyld: lazy symbol binding failed: Symbol not found: ___emutls_get_address
Referenced from: /usr/local/opt/gcc/lib/gcc/9/libgomp.1.dylib
Expected in: /usr/lib/libSystem.B.dylib
dyld: Symbol not found: ___emutls_get_address
Referenced from: /usr/local/opt/gcc/lib/gcc/9/libgomp.1.dylib
Expected in: /usr/lib/libSystem.B.dylib
fatal: caught signal Abort trap: 6 -- stopping myself...
Abort trap: 6
既出のバグ情報を探しましたが、そもそもこの様なエラーの情報は無く、頭を抱えていました。しかし、インストールの行程で以下のエラーが。。。筆者の環境は別の検証でインストールしたgfortran
が既にインストールされていた為、それが原因ではないかとの疑いが。。。
==> Pouring gcc-9.3.0_1.mojave.bottle.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/gfortran
Target /usr/local/bin/gfortran
already exists. You may want to remove it:
rm '/usr/local/bin/gfortran'
To force the link and overwrite all conflicting files:
brew link --overwrite gcc
To list all files that would be deleted:
brew link --overwrite --dry-run gcc
Possible conflicting files are:
/usr/local/bin/gfortran -> /usr/local/gfortran/bin/gfortran
綺麗にアンインストールしてやり直し
Octaveのアンインストールは依存関係の有るライブラリーを全てアンインストールする必要が有る為、brew-rmtree
を有効化します。
brew tap beeftornado/rmtree
Octaveをアンインストールします。
brew rmtree octave
gfortranもアンインストールしました。
brew cask uninstall gfortran
再度インストール
brew install octave
今度はインストール中に前述のエラーは出ず、グラフの描画も正常に実行出来ました。gfortranが悪さをしていた様です。
octave:1> x=-2*pi:0.1:2*pi;
octave:2> y=sin(x);
octave:3> plot(x, y);
美しいサインカーブが表示されました。セットアップ成功です。
Octave GUIもインストール
GUI版もインストールします。Octaveはoctave --force-gui
を実行するとGUIが起動しますが、version 5.2.0のGUIには不具合が有り、なぜか終了出来ません。故に別途GUI版をインストールします。
brew tap octave-app/octave-app
brew cask install octave-app
Octave4.4.0がインストールされました。CLI版とバージョンが揃っておいて欲しいですが、現状はGUIは旧版で凌ぐより他無い様です。。。
Reference
- Octave for macOS
- Octave.app
- homebrewでのoctaveインストールにハマった
- OctaveをMac OS X Yosemiteへインストール
- MacBookへのOctaveダウンロード手順と実行