(これは Quine-relay Advent calendar 21 日目の記事、兼、Julia Advent Calendar 2014 の 21 日目の記事です)
21 日目の今日は、Julia を追加しました (97 言語目、コミット) 。Julia はわりと若い言語ですが、最近よく名前を聞きます。
Quine リレーでは、残念ながら print するだけ。
Julia Advent Calendar の記事を読みに来た人へ
まず、自分は完全に Julia の素人です。そして、この記事は完全なジョーク記事です。期待して読みに来た人は残念でしたすみません。
上記の通り、Quine リレーに Julia を追加した、という内容です。以上。なお、Quine リレーとは、プログラミング言語の曼荼羅のようなジョークプログラムのことです。詳しくはリンク先を見てください。
以下、Julia を Quine リレーに組み込む上で出会った問題について余談を語っていきます。
余談1: Ubuntu 14.10 で Julia を起動する 2 つの方法
Julia Advent calendar 2014 の 3 日目の記事で
という発言が引用されていました。実際インストールはできるのですが、起動しない *1 という重大な問題があります。
$ julia ERROR: could not open file /home/mame//home/mame//etc/julia/juliarc.jl in include at boot.jl:238
juliarc.jl を読みにいってるパスがあきらかにおかしい……。
ここで、「何でもいいからとにかく動かしたい」という場合の方法。
- ルートディレクトリで起動する
- -f をつけて起動する
いずれもどうかと思う解決策ですが、とりあえず動きます。
$ cd / $ julia _ _ _ _(_)_ | A fresh approach to technical computing (_) | (_) (_) | Documentation: http://docs.julialang.org _ _ _| |_ __ _ | Type "help()" to list help topics | | | | | | |/ _` | | | | |_| | | | (_| | | Version 0.2.1 (2014-02-11 06:30 UTC) _/ |\__'_|_|_|\__'_| | |__/ | x86_64-linux-gnu julia>
まあ、0.2.1 とか古すぎて、どのみち実用に耐えない気はしますが。
参考:
余談2: Ubuntu 12.04 で Julia と Octave を同居させる方法
または、Travis CI で Julia と Octave を同時にインストールする方法。Julia と Octave と Scilab には「配列のインデックスが 1 から始まる」という共通点がある *2 ので、同時に使いたくなる人は多数いるでしょう。いるに違いありません。
3 日目の記事にもあるように、Ubuntu 12.04 で Julia をインストールする方法としては、ppa を使うのが定石のようです。
$ sudo add-apt-repository ppa:staticfloat/juliareleases $ sudo add-apt-repository ppa:staticfloat/julia-deps $ sudo apt-get update $ sudo apt-get install julia
しかしこうすると、Octave がインストールできなくなります。
$ sudo apt-get install octave3.2 Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: octave3.2 : Depends: libarpack2 (>= 2.1+parpack96.dfsg) but it is not going to be installed Recommends: libatlas3gf-base but it is not going to be installed E: Unable to correct problems, you have held broken packages.
逆に、octave インストール済の状態で julia をインストールすると octave が削除されます。
$ sudo apt-get install julia Reading package lists... Done Building dependency tree Reading state information... Done (略) The following packages will be REMOVED: libatlas3gf-base octave3.2 (略) After this operation, 85.7 MB of additional disk space will be used. Do you want to continue [Y/n]?
Julia 怖い。
要するに依存関係の問題(octave は古い atlas を期待するけど julia は新しい atlas を期待する)だと思いますが、まじめに解決するのは難しそうでした。
試行錯誤で見つけた簡単な解決は、octave も ppa を使うことです。
$ sudo add-apt-repository ppa:octave/stable $ apt-get update $ apt-get install julia octave
これで無事両方入るようです。
しかしまだ問題があり、Julia と Octave と Scilab を同時にインストールしようとすると依存関係で文句を言われます。(なお Scilab も配列が 1 から始まる系)
$ sudo apt-get install julia octave scilab Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: julia : Depends: libopenblas-base but it is not going to be installed or libblas3 but it is not going to be installed or libatlas3-base but it is not installable Depends: liblapack3 but it is not going to be installed or libatlas3-base but it is not installable Depends: libcholmod1.7.1 but it is not going to be installed Depends: libumfpack5.4.0 but it is not going to be installed Depends: libarpack2 but it is not going to be installed octave : Depends: libarpack2 (>= 2.1) but it is not going to be installed Depends: libcholmod1.7.1 (>= 1:3.4.0) but it is not going to be installed Depends: liboctave2 (= 3.8.1-1ubuntu1~octave1~precise1) but it is not going to be installed scilab : Depends: scilab-cli (>= 5.3.3-6) but it is not going to be installed Depends: scilab-full-bin but it is not going to be installed E: Unable to correct problems, you have held broken packages.
apt-get が悪いのか julia が悪いのか octave が悪いのか scilab が悪いのかさっぱりわかりませんが、とりあえず、libblas3 を明示的にインストールしてやるとクリアできるようです。
$ apt-get install julia octave scilab libblas3
なにそれ、という感じですが。
また、同時にインストールするのではなく、1 つずつインストールするのでも問題は起きないようです。(インストール順によるかもしれないけど、未確認)
$ sudo apt-get install julia $ sudo apt-get install octave $ sudo apt-get install scilab
これは FUD ですが、julia の ppa を使うときは、julia 専用環境にする覚悟をしたほうがよさそうです。julia を動かすために必要なパッケージをてきとーに突っ込みまくって他パッケージとの相性とか考えてないみたいなので、他にも相性問題を引き起こす予感がすごくします。