WSLのバージョン
もともと旧WSLを使用していたのだが、同じ端末でWSL2に更新した。
WSLにおいて下記コマンドを入力。
lsb_release -a
出力でバージョンが20.XXとなっていることからWSL2への更新がなんとかできたことを確認。
Distributor ID: Ubuntu
Description: Ubuntu 20.04.1 LTS
Release: 20.04
Codename: focal
WSL2でのX11 Forwarding設定
実用面でWSL (18.XX)とWSL2 (20.XX)の使い勝手の差はほとんどなく(何かしらのツールがバージョンしているしていないの違いはある)、パフォーマンスなどへの改善が多いのかと思う。
大きく違う点として、X11 Forward設定のアドレスがlocalhostでなくなったということがある。
この設定は、ホームの.bashrcなどで次の一行を追加することで行われる。
(WSL)
export DISPLAY=localhost:0.0
(WSL2)
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
WSL2では、端末を起動するたびにアドレスが変わるため、/etc/resolv.confからnameserverを読み取ることによって設定している。
> $DISPLAY
172.20.XXX.X:0: command not found
x11-appsなどをインストールしたうえで、コマンドxeyes
を実行し、その設定が完了していることを確認する。
RStudio-serverでX11の機能を確認
RStudio-serverのインストールについては、公式でどんどん更新があるほか、いくつか記事はあるため、作業に時間を要するにせよ、あまりつまることなく作業を進められるかと思う。
写真にあるように、次のコマンドを実施してみる。
capabilities()
すると、X11でFALSEと付記されていることがわかる。
例えば、3次元プロット用パッケージ rgl とかだと、新たにウィンドウを開いて描画結果を出力するのであるが、この状態だとそれができない。
> library(rgl)
Warning messages:
1: In rgl.init(initValue, onlyNULL) : RGL: unable to open X11 display
2: 'rgl.init' failed, running with 'rgl.useNULL = TRUE'.
> open3d()
null
1
読込時に上記Warningが現れ、open3d()
にてウィンドウを開こうとしても開けない。
ちなみに、WSL2のコマンドライン上でRを起動すると、このようなエラーはでず、正常に機能する。
解決策:再起動とDISPLAYの修正
原因は、環境変数DISPLAYがRStudioだと異なってしまっているため。
> Sys.getenv("DISPLAY")
[1] ":0"
これは、X11 Forwardingにlocalhostを用いていたWSLでは正常に動く状態だが、WSL2からは書き換える必要がある。
一度、Rをrestartする。
WSL2のコマンドライン上で$DISPLAY
を確認したうえで、RStudioの設定を変更する。
> Sys.setenv("DISPLAY" = "172.20.XXX.X:0")
capabilities()
のX11欄がTRUEとなり、これでrglが使える。