【Mavericks】Mac に Octave をインストール

Octave のインストール方法

Mavericks で Octave をインストールする方法についてまとめます。

Mac に Octave をインストールする方法はいくつかあり,代表的なのが,MacPorts を使ってインストールする方法と Homebrew を使ってインストールする方法です。どちらも Mac OS X で動作するパッケージシステムで,手軽にソフトウェアをインストールできます。ソースからビルドすることも可能ですが,依存するソフトウェアが多いため,とても手間がかかります。そのため,依存するソフトウェアも含めた,ソースのダウンロード,展開,パッチの適用,コンフィグ,ビルド,インストールまで自動で行ってくれるパッケージシステムでのインストールが基本といってもいいと思われます。ちなみに,パッケージシステムにはソースコードからビルドできない場合に,バイナリを使用してインストールすることも可能です。

今回は,MacPorts を使ってインストールを行います。

MacPorts を使った Octave のインストール

64bit に対応した octave-devel パッケージをインストールします。
※現在 (2013/10/31),Mavericks で,通常のパッケージのインストールと同様に,sudo port install octave-devel で octave-devel をインストールしようとすると,ビルドでエラーが発生しています。そのため,Octave-devel のコミッターが対応してくれるまで,パッチを適用した方法でインストール作業をおこいます。エラーが解消次第,また別に octave のインストール方法の記事を書きます。

0. MacPorts をインストール

こちらを参考に,Mac に MacPorts をインストールしてください。

1. MacPorts のポートツリーをアップデート

MacPorts のベースシステムと Port をアップデートします。MacPorts でソフトウェアをインストールする際は,基本的にこの操作を行います。

下記コマンドを実行

[bash]
#MacPorts のベースシステムとポートツリーをアップデート
sudo port -dv selfupdate
[/bash]

2. Gnutar をインストール

現在,Mavericks では gnutar が依存パッケージとして存在するとき,自動でインストールされない不具合があるようのなので,念の為に別にインストールしておきます。

下記コマンドを実行

[bash]
#gnutar をインストール
sudo port install gnutar
[/bash]

3. GraphicsMagick をインストール

現在,Mavericks での octave-devel のビルドにおいて,GraphicsMagick が原因のエラーが発生しており,GraphicsMagick を gcc48 でビルドする必要があるため ,別にインストールします。

下記コマンドを実行

[bash]
#GraphicsMagick をインストール
sudo port install GraphicsMagick configure.compiler=macports-gcc-4.8
[/bash]

4. パッチファイルの適用

こちらのリンクから「Portfile.diff」と「patch-configure.diff」ファイルをダウンロードします。ダウンロードはリンク先,添付ファイルの各ファイルのリンクをたどって,ページ下部の「オリジナルフォーマット」リンクからダウンロードします。

Portfile.diff と patch-configure.diff をダウンロードしたディレクトリに移動後,下記コマンドを実行します。

[bash]
#パッチを適用
sudo cp ./Portfile.diff /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/math/octave-devel/
sudo cp ./patch-configure.diff /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/math/octave-devel/files/
sudo patch /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/math/octave-devel/Portfile < /opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/math/octave-devel/Portfile.diff
[/bash]

または,直接 octave-devel の Portfile を編集し,下記を Portfile に追加しても OK です。

117 行目付近,platform darwin 11 や platform darwin 12 がある場所に下記を追加

[c]
platform darwin 13 {
# In 10.9 patch is required as above, also
# the LANG environment variable needs to
# be set to "C" otherwise /usr/bin/sed
# fails with an error, if you installed gsed
# with default name this should have no effect.

patchfiles-append patch-src-display.cc.diff
build.args-append LANG="C"
}
[/c]

5. octave-devel をインストール

octave-devel を gcc48,atlas オプションをつけてインストールします。使っている Mac の性能によりますが,何時間もかかることがほとんどです。
※ 途中 Java のアップデートが入り,ターミナル以外での操作が必要な場合があります。

下記コマンドを実行

[bash]
#octave-devel をインストール
sudo port install octave-devel +gcc48 +atlas
[/bash]

6. octave を起動

octave が起動するか確認しましょう。

[bash]
#octave の起動を確認
octave
[/bash]

Tips

上にも書きましたが,このインストール方法は,現在,Mavericks で octave-devel を普通にインストールしようとした時に発生している,下記のエラーに対する回避策です。おそらく,コミッターが対応し次第,sudo port install octave-devel で普通にインストールできるようになると思います。

エラー(パッチ適用前)

[bash]
:info:build display.cc: In member function ‘void display_info::init(bool)’:
:info:build display.cc:75:46: error: ‘CGDisplayBitsPerPixel’ was not declared in this scope
:info:build dp = CGDisplayBitsPerPixel (display);
[/bash]

パッチ適用後(GraphicsMagick を gcc48 でコンパイルしていない場合)

[bash]
Undefined symbols for architecture x86_64:
"Magick::CoderInfo::CoderInfo(std::basic_string<char, std::char_traits, std::allocator > const&)", referenced from:
F__magick_format_list__(octave_value_list const&, int) in DLD_FUNCTIONS___magick_read___la-__magick_read__.o
ld: symbol(s) not found for architecture x86_64
[/bash]