「tumbleweed」タグアーカイブ

windows11 に WSL をインストールして jupyter lab を動かすまで

1. WSL2のインストール

最終的には、WSL2にtumbleweedを入れて、その上でjupyterlabを動かすことをするわけだが、まずはWSL2のインストールから。

wslコマンドは叩けるようになっていたので、まずはコマンドプロンプトか何かを開いて、以下のコマンド。ここでwslコマンドが入っていなかった場合は、たとえばwindowsストアで適当なLinuxディストリビューションを入れてみるとかすれば使えるようになるのではないかと思う。前は、システム設定か何かでGUIで設定したと思うけど、今はどうやってやったか忘れてしまった。

wsl --install openSUSE-Tumbleweed

ディストリビューションのダウンロード後にインストールが始まり、いくつかぽちぽち選ぶとインストール完了。tumbleweedにログインした状態になる。

とりあえずインストールが終わったら、

$ sudo zypper dup

でディストリビューションをアップデートしておく。

2. pythonのインストールと環境構築

まずはpythonのインストール。基本は pip で必要なパッケージは入れていく。

# zypper install python313

これでpythonはインストール完了。pythonのバージョンは適宜必要なものを入れておく。Tumbleweedは、割と早く最新バージョンが反映され、ディストリビューションのサポート切れも心配しなくていいので、心が楽。その分環境を固定すること必要があるときは使いにくいけれども。

次は一般ユーザーに戻って、venvでjupyter用の環境を作っておく。

$ python3.13 -m venv venv-313
$ ln -s venv-313/ venv

venvで独立した環境ができたので、必要なパッケージをインストール。とりあえずはjupyterとpandasとmaplotlib。

$ . venv-313/bin/activate
$ pip install --upgrade pip
$ pip install jupyter jupyter-lab pandas matplotlib

ウインドウズへのログオン時に、自動でjupyterが立ち上がるようにしたいので、起動用のスクリプトを作成しておく。エディタもvimしか使えないので、必要であればこのタイミングで好きなエディタを入れておいてもいい。nanoとかvscodeとか。

~/bin/launchjupyter.sh # パーミッション設定を忘れずに!
#!/bin/bash
LANG=C
PATH=/usr/bin:/bin
PATH=~/venv/bin:$PATH jupyter lab --no-browser --ip 0.0.0.0 >> ~/log/jupyter-lab.log 2>&1 # ログファイルの場所は適宜変更。

試しに実行してみると見事に実行可能。これでとりあえずはWSLの中でjupyterは実行できた。

3. windows起動時に自動で実行。

上記で立ち上げたjupyterはlocalhost:8888でアクセスできる。いちいち上げるのが面倒くさいので、ログオン時に自動で起動するようにしておく。linux的にはcronを使いたいが、WSLだといろいろと厄介なので、タスクスケジューラを使って設定する。

タスクスケジューラ>タスクの作成

[全般タブ]名前はわかりやすく適当につける。ユーザーがログオンしているかどうかにかかわらず実行するを選択して、パスワードを保存しない、をチェック。

[トリガータブ]タスクの開始:ログオン時を選択。特定のユーザーで、通常使うユーザーを選ぶ。

[操作タブ]プログラムの開始: wsl –cd ~ ~/bin/launchjupyter.sh

[条件タブ][設定タブ]省電力を考慮するのであれば適宜設定。

以上で、jupyterがローカルで立ち上がっているはず。あとは初回起動時のトークンとかをうまく設定すれば出来上がり。思ったより簡単にできてよかった。

こうしてインストールしたjupyterに、vscodeからアクセスするときは、左下の青いマークをクリックして、WSL:openSUSE-Tumbleweedに接続すればつなげる。この時、vscodeで開いたディレクトリが、カレントディレクトリにならないので、以下の内容をvscodeの設定のsettings.jsonに書いておくと幸せになれる。開いているipynbファイルのディレクトリがカレントディレクトリになる。

    "jupyter.runStartupCommands": [
        "import os",
        "__t=os.path.dirname(__vsc_ipynb_file__)",
        "%cd {__t}",
        "del __t"
    ],

本当はこれのためにちっさなサーバを一台買っていたのだけども、windows上で簡単にできてしまったので、実はいらなかったのは内緒。まぁそれは別のサーバのリプレイスに使うからいいのです。。。

CentOS7 からOpenSUSEに移行する話

自宅のサーバは長らくCentOS7で稼働していたが、CentOS7はすでにEoLになってしまった。これの移行先を、あれこれ悩んだうえでOpenSUSEにした。

このサーバで最も重要だった機能はファイルサーバで、スナップショットのバックアップ作成などbtrfsに強く依存していた。Redhatがbtrfsをサポートしなくなってしまったので、後継のRHELクローンはどうも使いにくい。

CentOS7は、Linuxマシンとしてみたときに、どうしてもアプリのバージョンが古くて、まともな開発をしようと思うと、必要なパッケージを下手したらコンパイルからして入れないといけない場面があって面倒だった。できればCentOS Streamにしたかったが、これはやっぱりbtrfsがないのでだめ。btrfsだけならOracleも選択肢だったが、こちらの観点からOracleも却下。

自宅のサーバの使い方では、特にカーネルやパッケージのバージョンを固定することは必要ないと判断して、これまでredhat系を使っていたが、心機一転して、OpenSUSEのtumbleweedを入れることにした。

インストールは今どきのLinuxなので、ストレージパーティションを切るときに気を付ける以外はまぁ特に悩まない。ただ、gnomeを入れると勝手にスリープしてしまうようで、これを切るのが面倒だったので、サーバ用途ではgnomeを避けるのがよさそうだった。

btrfsもサポートしているので普通に使えるし、CentOS7の時とは違って、zypperで公式から、新しいカーネルも最新に近いパッケージも簡単に入れられる。

btrfsに関しては、バックアップを取るためのパッケージもありそうだが、まだこれは試しておらず自前で構築したバックアップを移植して対応した。

これまで1年近く使ってきた感じでは特段問題なく、いろいろスムーズにできてよさそう。もっと早めに移行しておけばよかったくらいで、しばらくはOpenSUSEで行こうと思う。