Help us understand the problem. What is going on with this article?

WSL2でRstudioを使うときのX11 Forwarding設定

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を実行し、その設定が完了していることを確認する。

image.png

RStudio-serverでX11の機能を確認

RStudio-serverのインストールについては、公式でどんどん更新があるほか、いくつか記事はあるため、作業に時間を要するにせよ、あまりつまることなく作業を進められるかと思う。

image.png

写真にあるように、次のコマンドを実施してみる。

capabilities()

すると、X11でFALSEと付記されていることがわかる。
例えば、3次元プロット用パッケージ rgl とかだと、新たにウィンドウを開いて描画結果を出力するのであるが、この状態だとそれができない。

rgl読み込み時のWarning
> 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")

image.png

capabilities()のX11欄がTRUEとなり、これでrglが使える。

image.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした