Java
archLinux
Scilab

(メモ) ArchLinux に Scilab をインストールする際にハマるポイント


Scilab の用途を知っていて ArchLinux を既に使っている方は序章をすっ飛ばしてかまいません。


そもそもScilab って何?

商用数値解析アプリ MATLAB みたいなもの。GNU Octave も同類。私自身は MATLAB を使ったことがないので本当にそうなのかはわかりかねますが、ちょっと調べてみたら Octave は MATLAB クローンを目指していて、Scilab のほうはそこまで互換性を求めていない感じらしい。1

本家 MATLAB はここ最近、無料の Octave や Scilab に追い上げられているので、自動車/ロボット/半導体製造/通信キャリアといった金を持っている企業向けの設計/プロトタイピング/テスト用プラグインに注力している模様。

そして カテゴリ的には R を代表とする統計処理ソフト群も似たようなもの。2

数値解析ソフトはリアルタイム処理が必要な工業系、統計処理ソフトはデータベースからデータを持ってくるバイオ系/人文科学系御用達ってところですかね。


ArchLinux ってどんなディストリ?

詳細は日本語公式を見てください。

以下、個人的な感想


  • とにかく軽い3

  • 適度なローリングアップデートでOSS新バージョンへの対応が早い4

  • メジャーなアプリ/ライブラリに関してはコンパイル不要でサクサクアップデート可能56


なぜ ArchLinux に Scilab を入れようと?

R と Octave を使ったことはあったのですが、Scilab を使ったことはなかったので、比較・評価してみよう、という安易な考えでした。・・・


ArchLinux に Scilab をインストールする

R や Octave は純正パッケージに登録されているけれど、Scilab は純正パッケージに登録されていないので、AUR からパッケージ作成用ファイル群をダウンロードして、自分でパッケージをコンパイルする。これが地獄の始まりだった。

[hoge@fuga ~]$ git clone https://aur.archlinux.org/scilab.git

(git の出力省略)
[hoge@fuga ~]$ cd scilab
[hoge@fuga scilab]$ makepkg -si
(以下、エラーメッセージ多数)
[hoge@fuga scilab]$


ハマりポイントその1: 依存関係多すぎでビルドまでたどり着かない・・・

ArchLinux のパッケージをビルド→インストールしようとする際、依存していて未インストール状態のプログラム/ライブラリが純正パッケージに登録されている場合は素直にインストールしてくれる。ただし、AUR にしか登録されていないライブラリに依存している場合は、そちらのパッケージも自前でコンパイルする必要が出てくる。結局、Scilab のためだけに新たに12,3個ライブラリをビルドした。7


ハマりポイントその2: コンパイルに時間がかかりすぎる・・・

今回インストールした環境は gcc のコンパイルに2時間弱もかかる貧弱 VMWare 仮想マシンですが、gcc よりも多くの時間(2.5時間)かかりりました。ArchLinux を使う意味が失われる・・・


ハマりポイントその3: 起動しねぇ(第1段階)・・・

[hoge@fuga ~]$ scilab

(libjava.so が見つからない、という内容のエラーメッセージ)
[hoge@fuga ~]$

ああ、そうですか・・・こういうことでしょ?

[hoge@fuga ~]$ cat | sudo tee /etc/ld.so.conf.d/java.conf

/usr/lib/jvm/default-runtime/lib
[hoge@fuga ~]$ sudo /sbin/ldconfig
[hoge@fuga ~]$ source /etc/profile
[hoge@fuga ~]$ scilab
(libjvm.so が見つからない、という内容のエラーメッセージ)
[hoge@fuga ~]$

ファッ!

[hoge@fuga ~]$ find /usr/lib/jvm/default-runtime -name libjvm.so

/usr/lib/jvm/default-runtime/lib/server/libjvm.so
[hoge@fuga ~]$ cat | sudo tee -a /etc/ld.so.conf.d/java.conf
/usr/lib/jvm/default-runtime/lib/server
[hoge@fuga ~]$ sudo /sbin/ldconfig
[hoge@fuga ~]$ source /etc/profile
[hoge@fuga ~]$ scilab
(不正なリフレクトが発生したから JVM がメインクラスを作成できねぇよ! という内容のスタックトレースが長大なエラーメッセージ。)
[hoge@fuga ~]$

なんじゃこりゃ・・・


ハマりポイントその4: 起動しねぇ(第2段階)・・・

ん?もしかして


Java on ArchLinux


  • OpenJDK 7-10 まで幅広く対応。

  • 複数メジャーバージョンをインストールしておいて、選択可能。

  • 専用の archlinux-java コマンドでデフォルトのバージョンを設定可能

Scilab をインストールした環境に入っている Java は Java9 のみ。

[hoge@fuga ~]$ sudo pacman -S jre8-openjdk jre8-openjdk-headless

(インストール)
[hoge@fuga ~]$ sudo archlinux-java set java-8-openjdk
[hoge@fuga ~]$ scilab
(初回起動のせいか時間はかかったもののなんとか起動)
[hoge@fuga ~]$


まとめ


  • Scilab 6.0.x を実行するためには Java8 必須。

  • 最終的に、Octave 使ったほうが環境構築面では圧倒的に楽。

  • 起動確認までしかしていないので、言語の習得、パフォーマンス評価等は一切してない。





  1. 最大のポイントは、GUI が Javaベース、ってこと。 



  2. ここ10年で無料の R が主流になったせいで、商用統計処理ソフトはもう完全に瀕死の状態ですな・・・ 



  3. systemd-analyze time コマンドによる計測で 10秒台がザラ。リモートファイルシステムを自動マウントしない、といった起動プロセスのシェイプを施せば5秒台なんて場合も。 



  4. ミニマリズム、という同じポリシーを持つものの、「枯れた技術」で安定性を重視する Slackware より良い点(私にとって) 



  5. gcc とか llvm のコンパイルで多大な時間を浪費させられる Gentoo よりも圧倒的に良い点 



  6. マイナーなものに関しては AUR から git 経由でソースダウンロード、コンパイル、パッケージ作成、インストール という手順を踏む必要があるものの、コマンド一発で終了するので面倒ではない。 



  7. それにしてもなんで Java とか Ocaml まで必要になるんだよ(怒り)。Java は予めインストール済みだったし、Ocaml は純正パッケージが存在するからまだ良しとしようか(だから純正パッケージになっていないんだな・・・)