LoginSignup
2
6

More than 3 years have passed since last update.

どの分野にも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);

美しいサインカーブが表示されました。セットアップ成功です。:grin:

sin curve

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


  1. プログラミング言語CのBibleとして知られるK&Rはその難解さや出版された時代独特のフォントによる読みにくさも手伝って毀誉褒貶の激しいBible書籍の代表格かと思われます。 

  2. 機械学習のBibleとして取り上げられる書籍は数多!?有る様に思われますが、ここでは厚焼き卵の様な色の表紙が特徴的なあの本です。 

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6