A6. Julia のインストール, update

juliia web

Julia のインストールや update はいわゆる「ダウンロード & ダブルクリック」でだいたい大丈夫なのだが,自分で少し調整したいことがあるという人もいるだろう. そこで,そのあたりを少しだけ詳しく書いておこう.

Julia 関連の環境変数, 設定ファイル等

Julia 関連の環境変数や設定ファイルは以下のようなものがある. 環境関数の設定&修正等については OS やシェル毎に異なるため,自分の環境に合わせて検索してもらいたい.

■ 環境変数

名前 これはなにか 推奨例(Windows の場合)
JULIA_BINDIR julia の実行ファイル(julia.exeなど)があるディレクトリ.
設定しなくても良い.
設定しておけば,新旧バージョンを切り替えて使うことなどが可能となる.
c:\julia\Julia-1.7.0\bin
JULIA_DEPOT_PATH julia package の置いてあるディレクトリ.
設定しなくても良い.
設定しておけば,新旧バージョンを切り替えて使うことなどが可能となる.

この環境変数を変更した後に julia の package がうまく動かないようならば,julia の packageモードで activate とすると良い.
c:\julia\PKG\v1.7

■ 設定ファイル

ファイル名,
どこにあるか例(Windows の場合)
これはなにか このファイルのどこをどう書き換えるべきか
kernel.json

C:\ユーザー(ユーザー名)\AppData\Roaming\jupyter\kernels\julia-1.7
jupyter を起動する際の設定が書いてある.
julia の update に伴い,書き換えが必要.package をまるごと作り直せばこのファイルは自動で作られるので書き換えなくてもよいが,そうでなければ手動書き換えが必要.
julia の update などをした場合,2行目,4行目, 8行目などの手動書き換えがおそらく必要. どう書き換えるべきかは見るとわかる.

ただし,Package 全体をインストールし直した場合はこのファイルは自動作成されるので何もしなくて良いはず.

Julia のバージョンと Package, Jupyter との関係(主に update がらみで)

julia は,それ単体ではなくライブラリである package と一緒に運用する,いわゆる eco system での運用が想定されている仕組みだ. そしてその package は julia そのものによって JIT コンパイルされるため,julia のバージョンにある程度依存する.

また,julia の実行環境だが,これまでの言語に多い「コンパイルしてからバイナリをコマンドラインで実行」というスタイルではなく,「1行単位で実行,最適化等は関数単位で.実行結果はすぐ見える」という,jupyter などを始めとする近代的なインタラクティブ環境での実行が主であり,これも重要視すべきだ. そしてこの jupyter と julia をつなぐ部分が package として提供されるため,これもやはり julia のバージョンに依存する形である.

よって update の際, julia のバージョンが上がるたびに package や jupyter を入れ替えるべきか,という悩みが出てくる. 毎回必ず入れ替えるのだ! という考え方も可能だが,それはちょっと手間が大きすぎて嫌だなあ.

そこで,次のようにするのがまあ現実的ではないだろうか. おすすめは案 1 で,次点が案 2 というところか.

■ 案 1: 細かいバージョン更新時は package をいじらない方針で.

julia update は? package jupyter
バージョン 3桁目の変更(例. v1.6.3 → v1.6.4)

action: 環境変数 "JULIA_BINDIR" を更新してから update する.
何もしない.
そのまま使い続ける
action: 設定ファイル "kernels.json" の手動書き換えをする.
バージョン 1桁目か2桁目の変更(例. v1.6.4 → v1.7.0)

action: 環境変数 "JULIA_BINDIR" を更新してから update する.
action: 新しいディレクトリを用意し, 環境変数 "JULIA_DEPOT_PATH" をそれに更新する.

例. c:\julia\PKG\v1.7 というディレクトリを作ってその値を環境変数に設定する.

注意: その後,使う package を一つずつインストールし直しだ.手間はかかるがトラブルを未然に防げるぞ.
何もしない.
(設定ファイルは自動作成されるはず… もしうまくいかなければ,"kernel.json" を手動書き換えだ)

■ 案 2: 大きなバージョン更新時以外は package をいじらない方針で.

julia update は? package jupyter
バージョン 2桁目か3桁目の変更(例. v1.6.3 → v1.6.4)

action: 環境変数 "JULIA_BINDIR" を更新してから update する.
何もしない.
そのまま使い続ける
action: 設定ファイル "kernels.json" の手動書き換えをする.
バージョン 1桁目の変更(例. v0.7.1 → v1.0.0)

action: 環境変数 "JULIA_BINDIR" を更新してから update する.
action: 新しいディレクトリを用意し, 環境変数 "JULIA_DEPOT_PATH" をそれに更新する.

例. c:\julia\PKG\v1 というディレクトリを作って環境変数に設定する.

注意: その後,使う package を一つずつインストールし直しだ.手間はかかるがトラブルを未然に防げるぞ.
何もしない.
(設定ファイルは自動作成される… もしうまくいかなければ,"kernel.json" を手動書き換えだ)

■ 案 3: 細かいことは知らんという,手抜きな方針.でも,julia に大きな変更があるとトラブる.あんまりおすすめしない.

julia update は? package jupyter
どの場合でも同じ方針で.

action: 環境変数 "JULIA_BINDIR" は設定しない.よって更新も不要だ!
何もしない.
そのまま使い続ける

ただし,update による julia の変更が大きいとトラブるので,その場合は package の入っているディレクトリの中身をいったん全部消して入れ直すなどしよう.具体的には,package ディレクトリの中のファイルをすべて消したあと,julia の package モードで activate とすれば package が有効になる.あとは package を一つずつインストールだ.

注意: 環境変数 "JULIA_DEPOT_PATH" を設定していない場合,package は自動で変なディレクトリに置かれるかもしれないぞ.どこにあるのか,探すのは大変だが頑張って探そう.
action: 設定ファイル "kernels.json" の手動書き換えをする(これは必要).

Julia のインストール

準備

環境変数を設定するかどうか,設定するならばどのような値にするかを決め,設定する.

これは「update の方針」に依存するので,Julia のバージョンと Package, Jupyter との関係(主に update がらみで)を読んで,update の方針にどの案を採用するか選択しよう.

  トラブル時に面倒なので,環境変数 "JULIA_DEPOT_PATH" だけでも設定しておくことを強くすすめる.

インストーラのダウンロード & インストール

科学技術計算用言語 Julia に書いてあるので,そこを読もう.

jupyter を使えるようにする

これも 科学技術計算用言語 Julia に書いてあるので,そこを読もう.

Julia の update

julia の update そのものは,インストールと全く同じ作業でできるはずだ. あとは設定等の更新だが,これは Julia のバージョンと Package, Jupyter との関係(主に update がらみで) に沿って,自分の方針にあう方法を選んで行おう.



おまけ: package の 更新を定期的に自動実行する

julia の package の開発はかなり活発なので,いざ使おうとするときに調べてみると「もっと新しいバージョンがあるんだけど」という状況になっていることが多い.

そのたびに package の更新を手動で行っていてはなにかと煩わしい. そこで,定期的に package の更新を自動的に行えれば手間も省けて良い1ということでその方法を解説しておこう.

やり方は簡単で,以下のようにすれば良い.

  1. 下記の内容のファイルを例えば "julia-package-update.jl" という名前で作成し,ディスクのどこかに置いておく.
1
2
3
4
using Pkg
Pkg.update()
Pkg.precompile()
exit()
  1. このプログラムを julia.exe で実行するようにOS の自動実行システムに登録する.
    MS Windows の場合は,タスクスケジューラに
トリガー 詳細
毎日 毎日 4:00 に起動
操作 詳細
プログラムの開始 %JULIA_BINDIR%\julia.exe (ファイルを置いたディレクトリを書く)julia-package-update.jl

という感じで登録する. やるべきことはこれだけだ.あとは自動でこの操作が動くはず. Unix(linux) や Mac OS だと crontab による設定で同様のことができるはずだ.

こうしておけば,いつでも package はほぼ最新バージョンになっている,というわけだ. ちなみに, 教員の環境では 1日に 2回,この自動更新を行っている.


  1. ただし,package を更新してしまうことで今使っているプログラムでトラブルが発生する可能性もゼロではない.非常に重要なプロジェクトの途中であるときなどは package の自動更新は停めておいたほうが良いかもしれない.このあたりは柔軟に判断しよう. ↩︎