Minicondaのパッケージ+αでさらに追加
下記の記事でCloud ShellにMinicondaを導入しているものとして進めます。
基本的に実行ファイルがホームディレクトリ直下のminiconda3/bin
に配備されるため、環境変数PATH
へ追加しておかなければ、カーネル個別にフルパスでの設定が必要となります。それ以外のJupyter Labの起動パターンを例示しておきます。
- Miniconda環境に移行してからの作業
$ source ~/miniconda3/bin/activate
(base) $ jupyter lab &
- 一時的にMiniconda環境をPATHに追加して起動
$ PATH=${HOME}/miniconda3/bin:${PATH} jupyter lab &
- システム起動時にPATHに自動追加
$ export PATH=${HOME}/miniconda3/bin:${PATH}
上記のうちのどれか、運用方法に適したものを選択して構いません。
まずは手軽で易しいLuaにとりかかる
それほど時間もかからないので、最初はLuaにします。
はじめにMinicondaのパッケージを利用しLua本体のインストール。
$ ~/miniconda3/bin/conda install -c conda-forge lua
JupyterカーネルはPythonで実装されていますので、pipでiLua(パッケージ名ilua)を導入。
$ ~/miniconda3/bin/pip install ilua
以上でJupyterへのインストールも完了。特に問題無く出来るはずです。
kernel.json
が~/miniconda3/share/jupyter/kernels/lua
に配備されることが今までと違うぐらいです。
次はもう少し手間のかかるErlangとElixirを
Erlangを使うのであれば、Erlang VM(BEAM)で動作するElixirもインストールしたほうが絶対に良いです。
MinicondaパッケージでElixirをインストールすれば、依存しているErlangも同時に入ります。
$ ~/miniconda3/bin/conda install -c conda-forge elixir
カーネルはGitHubからErlang、Elixir両対応のインストーラーをダウンロードします。とりあえずホームディレクトリ直下の.local/bin
に設置することにします。
$ curl -L https://github.com/filmor/ierl/releases/download/v0.6.0/ierl --create-dirs -o ~/.local/bin/ierl
実行ファイルのパーミッションを変更してインストールを実施。ここでも--user
オプションがポイント。
$ chmod +x ~/.local/bin/ierl
$ PATH=${HOME}/miniconda3/bin:${PATH} ~/.local/bin/ierl install erlang --user
$ PATH=${HOME}/miniconda3/bin:${PATH} ~/.local/bin/ierl install elixir --user
Juliaは処理系を一括ダウンロード
MinicondaのパッケージでもJuliaは導入できますが、どうもカーネルをインストールして実行したところ、署名に関するエラーとなり、異常終了してしまいます。
ここは公式サイトからオールインワンの圧縮ファイルを入手してランタイムを導入し、IJuliaパッケージをインストールします。
ひとまずホームディレクトリ直下に圧縮ファイルを展開すれば、Julia自体はすぐに利用可能となります。
$ curl -L https://julialang-s3.julialang.org/bin/linux/x64/1.7/julia-1.7.1-linux-x86_64.tar.gz | tar xzv
$ ~/julia-1.7.1/bin/julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.7.1 (2021-12-22)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
julia>
JuliaのREPLのプロンプトが表示されている状態で単に]
キーを押下すればパッケージモードのプロンプトに変わります。
その状態でadd
コマンドでIJuliaパッケージを追加してstatus
コマンドで追加されていることが確認できます。後はバックスペース押下でREPLに戻りますが、単にctrl + D
押下で終了してよいでしょう。
(@v1.7) pkg> add IJulia
(@v1.7) pkg> status
Status `~/.julia/environments/v1.7/Project.toml`
[7073ff75] IJulia v1.23.2
専用インストーラーによりScalaを導入
ScalaもMinicondaのパッケージで導入できますが、カーネルalmondのインストールには、coursierというパッケージマネージャを使用します。
coursierをセットアップする段階でScalaもインストールされますし、またMinicondaと違いScala3も導入できる(カーネルは不可)ので、こちらだけで済ませます。
今回はcoursierを~/.local/bin
にダウンロードします。
$ curl -L https://git.io/coursier-cli --create-dirs -o ~/.local/bin/coursier
次にパーミッションを変更してからセットアップします。どうもalmondにはバージョンを指定しないと失敗するようでした。
$ chmod +x ~/.local/bin/coursier
$ ~/.local/bin/coursier launch --fork almond:0.10.9 -- --install
注意点としては、パッケージ本体は~/.cache/coursier
ディレクトリに配備されるらしく、一時ファイルだと思って削除してしまうと動作しません。
最後は時間がかかるRustにチャレンジ
$ curl https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init --create-dirs -o ~/.local/bin/rustup-init
$ chmod +x ~/.local/bin/rustup-init
とりあえずは最小構成でRustをインストールして、EvCxR Jupyter Kernelカーネル(
cargo
パッケージ名evcxr_jupyter
)をインストールしました。
$ ~/.local/bin/rustup-init -y --no-modify-path --profile minimal
$ ~/.cargo/bin/cargo install evcxr_jupyter
$ ~/.cargo/bin/evcxr_jupyter --install
パッケージのインスト―ル進行中は、コンパイルにかなり時間がかかるので、いったんその場を離れてもよいかもしれません。
Jupyterへのインストール完了後、RustのランタイムをPATHを通していない場合はkernel.json
ファイルに修正が必要になります。
{
"argv": [
"~/.cargo/bin/evcxr_jupyter",
"--control_file",
"{connection_file}"
],
"env": {
"PATH": "${HOME}/.cargo/bin:${PATH}"
},
"display_name": "Rust",
"language": "rust",
"interrupt_mode": "message"
}
まとめ
Minicondaのパッケージは導入、管理が容易に出来る反面、構成が完全ではなく、限定的な利用で妥協することになりがちのようです。
また、一つの言語に対して、カーネルが複数の種類が提供されているものもあり、今後は目的によって使い分けするのが一般的になるのかもしれないと思います。