前提・実現したいこと
サクサクと動作する jupyter lab の環境でタイトルの拡張機能を使いたいのですが、どうするのが最善かお知恵をお貸し下さい。
特に誰かと共有するつもりはないのでオンラインにある必要はありませんが、無料で簡単に構築できるならオンラインだろうがオフラインだろうが問題ないです。
ひとまず自分の状況では古い手持ちのmacbookに軽量な jupyter lab の docker コンテナを入れて運用するのが最善と思ったのですが問題が発生して先に進めません。
この問題さえ解決すれば目的は達成できるので、自分的にはこの方向で奮闘してみました。
mac os Sierra (10.12.6)
発生している問題・エラーメッセージ
軽量なosということでalpine linuxが良いと考え、その条件で検索すると選択肢があまりないので mikebirdgeneau/jupyterlab というイメージを選択して環境を構築してみました。
他に良い選択肢があればお教え下さい。自分で試してダメだったものについては後述します。
このイメージは動作が軽くて良かったのですが、タイトルの拡張機能を入れようとしたところで、以下のエラーが発生しました。
~ # jupyter labextension install @lckr/jupyterlab_variableinspector
An error occured.
ValueError: Please install nodejs >=10.0.0 before continuing. nodejs may be installed using conda or directly from the nodejs website.
See the log file for details: /tmp/jupyterlab-debug-0g_2gfd8.log
上記のメッセージでnodejsのバージョンの問題で失敗しているのだと推測し色々と実施(後述)しましたがnodejsのバージョンを上げられず、上記のコマンドが実行できません。
使用したコマンド
ホスト側作業
docker pull mikebirdgeneau/jupyterlab
docker run -d -p 80:8888 mikebirdgeneau/jupyterlab
コンテナ側作業
apk upgrade
pip install --upgrade pip
pip install --upgrade jupyterlab
以下の作業で bash が必要だと判断し、ついでにログインシェルとしても設定しようと思い、以下のコマンドを実行しました。
apk add bash
apk add shadow
chsh -s /bin/bash
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
=> Profile not found. Tried ~/.bashrc, ~/.bash_profile, ~/.zshrc, and ~/.profile.
=> Create one of them and run this script again
OR
=> Append the following lines to the correct file yourself:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
環境変数の設定が必要とのことなので以下を実施。
cd
vi .bashrc
source .bashrc
nvm install v10.22.1
Downloading and installing node v10.22.1...
Downloading https://nodejs.org/dist/v10.22.1/node-v10.22.1-linux-x64.tar.gz...
######################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
nvm is not compatible with the npm config "prefix" option: currently set to "/usr"
Run nvm use --delete-prefix v10.22.1
to unset it.
--delete-prefix がなんなのかよくわかりませんが言われた通りに以下を実施。
~ # nvm use --delete-prefix v10.22.1
Now using node v10.22.1 (npm v6.14.6)
(ちなみに何度か環境を作り直してその中で--delete-prefix を付けずにやってみたりもしましたが、nodejsのバージョンは変化しません)
上記を実施しても以下の通りnodejsのバージョンは nvm use をする前と変わりませんでした。
~ # node -v
v8.14.0
nvm では以下のように認識されてる様子です。
~ # nvm ls-remote |grep "*"
-> v8.14.0 * (LTS: Carbon)
v10.22.1 * (Latest LTS: Dubnium)
試したこと
特にnvmにこだわりは無いので、他の方法があれば教えて下さい。
とりあえずデフォルトのnodejsを消せばなんとかなるかなと思い試してみましたが依存関係で挫折しました。
apk del nodejs
World updated, but the following packages are not removed due to:
nodejs: .build-dependencies
素のalpine linux のコンテナに自分で jupiter lab を入れようとしましたが、知ってるコマンドが殆ど使えないので挫折しました。
もっと新しい jupiter lab のイメージを使おうとしましたが、軽量なものが見つからず、仕方なく
umids/jupyterlab という debian のイメージを入れてみたところ、タイトルの目的は達成できましたが、全体の容量が5GB近くあり、ストレージの空き容量的に厳しいのと、動作が重くて煩わしかったり、コンテナ側で何故か(bashにしても)入力補完が使えなくて、使いにく過ぎたので挫折しました。
代替案として無料の heroku の環境に jupiter lab を入れようかと思っていますが、無料で使えるリソースだと上記のdebianの環境みたいに重くて使い物にならないんじゃ無いか、という懸念がありやる気になれていません。
macbookに直接入れるのが一番簡単だとは思いますが、もし失敗したら面倒臭い事になるので、なるべくなら docker のような簡単にやり直せるものが良いです。
補足情報(FW/ツールのバージョンなど)
mac os Sierra (10.12.6)
~ # cat /etc/alpine-release
3.8.0
~ # jupyter lab --version
2.2.8
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。