読者です 読者をやめる 読者になる 読者になる

ill-identified diary

所属組織の業務や見解とは一切無関係なアフィリエイト付きメモ帳。所属とは関係ないけどここを見て所属先にも興味を持っていただけると喜びます。

64bit版 Ubuntu で32bit版(学生版) MATLAB を動かす方法

Ubuntu Matlab

学生版は32bit限定のため、 64bit版 Ubuntu ではインストール時や起動時に不具合が発生するおそれがある。 以下は自分が64bit版 Ubuntu 13.04でMATLAB R2012a学生版を起動までこぎつけた時のメモ.とはいえ、大半はMATLAB-Community Ubuntu Documentationの要約。

注: MATLAB 2012a は ubuntu13.04 の動作対象外です。また、他のバージョンでも最新の Ubuntu に対して動作保証してないことが多いので真似する方は自己責任でお願いします。

光学ドライブにディスクをセットし、端末を開き installファイルのあるディレクトリへ移動。
例)

cd /media/USER_NAME/MATHWORKS_R2012a
./install -glnx86 -v

単に./installとするのではなく、 上記のようなオプションをつける。
自分はここで最初のエラー。

インストール時にjavaのエラーっぽいものが出る
exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class java.awt.Component
        at java.lang.Class.forName0(Native Method)
        ...

と出た。しかしJavaの問題ではなく、先のページに書いてあるように、ia32-libs をインストールすれば解決できる。

sudo apt-get install ia32-libs

でインストールできる。リポジトリ登録は特に必要ない。

MATLABインストールウィンドウが現れ、各種設定項目が現れた。
Choose installation type では"Custom"を選ぶ。
specify the install folder は初期設定のまま続行。
次の画面で Create symbolick links to MATLAB scripts in:
にチェックを入れる。pathは初期設定の /usr/local/binのまま。

アクティベーション画面で文字化け

次の不具合、 アクティベーション画面で文字化けがひどく、 所属学部等のリスト選択でどれを選べばよいかわからなかった。
これは、 MathWorks公式サイトにログインし、 そこでのリストの並び順を覚えて選択するという力技で解決。 ログイン後、 右上の「アカウント」をクリックし、 遷移後のページ左上の Edit Profileをクリック。下方の学生ユーザー情報の各ドロップダウンリストの並びを覚えておく。
ただし、 これに関してはJavaランタイムに日本語フォントを指定すれば解決できた可能性がある(後述)。
これ以降インストール完了まで不具合は発生しなかった。
一旦端末で

matlab

と入力し起動するか確認。

ランチャーファイルの作成

そのままではunityドック等に表示されないので、 体裁に拘りたければ、 先のページにしたがってランチャーファイルを作成。端末を開き、アイコン画像の取得

sudo wget http://upload.wikimedia.org/wikipedia/commons/2/21/Matlab_Logo.png -O /usr/share/icons/matlab.png

もちろん、 /usr/share/icons/matlab.pngとして保存すればoctaveのアイコンだろうがmathematicaのアイコンだろうが可能。
次に、 .desktopファイルの取得

sudo wget 'https://help.ubuntu.com/community/MATLAB?action=AttachFile&do=get&target=matlab-r2012a.desktop' -O /usr/share/applications/matlab.desktop

32bit版なので修正する必要がある。テキストエディタで開く.

sudo gedit /usr/share/applications/matlab.desktop

もちろんgedit以外のテキストエディタでもよい。
アイコンを表示させるため、.desktop ファイル内の記述

#StartupWMClass=com-mathworks-util-PostVMInit

をアンコメントアウト(頭の#を消す)。
次にに学生版(つまり64bit環境で32bit版を実行する場合)ならば

Exec=matlab

コメントアウト(頭に#をつける)し、

#Exec=matlab -arch=glnx86 -desktop

をアンコメントアウト
以上を保存しテキストエディタを閉じる。
これで起動できるようになった。自分は cairo dock を使用しているが、これでドラッグ&ドロップで簡単に登録できる。
次は起動後の不具合

シンボリック変数が使えない
syms a b;

のようにシンボリックリンク変数を宣言しようとしたところ、

Invalid MEX-file
'/usr/local/MATLAB/R2012a_Student/toolbox/symbolic/symbolic/mupadmex.mexglx':
libGL.so.1: cannot open shared object file: No such file or directory

というエラーが現れ実行できなかった。 libGL.so.1 にパスが通っていない?
locate等を使いパスを調べる。次に、調べたパスをLS_PRELOADに与えてMATLABを起動する。
例)

LD_PRELOAD=/usr/lib/i386-linux-gnu/mesa/libGL.so.1 matlab

たぶんだいたいの場合これと同じパスになるはず。
あるいは

sudo gedit /etc/ld.so.conf.d/matlab.conf

matlab.conf を作成し、 ライブラリへのPATHを記述。つまりファイル内に

/usr/lib/i386-linux-gnu/mesa/libGL.so.1

とだけ書いて保存し終了。
保存してテキストエディタ終了。 なお更新しないと反映されないので、

sudo /sbin/ldconfig

で更新する。これでシンボリック変数も使用できるようになった。

日本語の文字化け

MATLAB起動後も日本語が表示されるべき箇所が四角の羅列に文字化け(俗に言う豆腐?)している。
日本語のファイルを使うことが無いので放っておこうとも考えたが、 公式に解決方法が記載されていた。
ここの「Linux システムにアジア言語の文字が正しく表示されない」を参照。ただし、わかりにくいのでこちらも参考に。 とりあえず TakaoGothic を指定してみたが、 日本語に対応したフォントならおそらく何でも良いはず。 フォントフォルダにOSにすでにインストールされているフォントファイルへのシンボリックリンクを作れば良いので:

cd /usr/local/MATLAB/R2012a_Student/sys/java/jre/glnx86/jre/lib/fonts/
sudo mkdir fallback
sudo ln -s /usr/share/fonts/truetype/takao-gothic/Takao* ./fallback/.

/usr/.../R2012a_Student/のところはインストール時の設定やバージョンによって変わるので各自適当なものに置換してください。
これで自分は文字化けを解消できた。もう一方の fontconfig.properties を修正するやり方はよくわからなかったので無視。
インストール時の文字化けもこんな感じで解決できたのかもしれない。