Windows Subsystem for LinuxとRStudio Server

Windows Subsystem for Linux (WSL) を使ってRStudio Serverを動かす。ついでに,RStanやPythonも。

星野祐司
立命館大学総合心理学部

1. Windows Subsystem for Linuxの設定

RStudio Serverがあると何かと便利ですので,Windows 11(バージョン 21H2)にWSLを組み込み,Ubuntu 22.04をインストールして、RStudio Serverを動かします。まず,WSLを組み込むためにWindowsの設定を変更します。

Windowsの設定を開き,アプリのオプション機能を選択します。さらに,Windowsのその他の機能をクリックし,「Windowsの機能の有効化または無効化」を開きます。「Linux 用 Windows サブシステム」と「仮想マシン プラットフォーム」にチェックを入れます。チェック後,パネルを閉じて Windows を再起動します。

WSLコマンドを使ってWSLを更新できます。Windowsのスタートを右クリックし,Windowsターミナル(管理者)を起動してアップデートします。

> wsl --update

2. Microsoft StoreからUbuntu 22.04をダウンロード

WSLにはバージョン1と2があります。WSL 1の状態でUbuntu 22.04をインストールすると不都合が生じるようなので,念のため,WSLコマンドを使ってバージョンの初期設定を2にしておきます。Windowsのスタートを右クリックし,Windowsターミナルを起動し,WSLコマンドを入力します。

> wsl --set-default-version 2

Microsoft StoreでUbuntuを検索すると,いくつかの異なるバージョンが見つかります。ここでは,Ubuntu 22.04をインストールします。

Ubuntu 22.04のインストールを始めると,しばらくして,「We are almost done.」が表示され,続いて,文字化けした画面(Select your language)が表示されますが,japaneseが選択されているようなので,右下の色が濃いボタンをクリックします。

Profile setup画面が表示されますので,ユーザ名とパスワードを入力します。Advanced Setup画面では何も変更せずに右下のSetupをクリックして続行します。しばらくするとSetup complete画面が表示されますので,Finishをクリックします。Ubuntu22.04が起動し,自動的にログインが完了します。

ここで,Ubuntu 22.04の更新作業を行います。

$ sudo apt update
$ sudo apt upgarade

3. Ubuntuの起動

インストールしたUbuntu 22.04は,Windowsのスタートからすべてのアプリを開いて,「Ubuntu 22.04 LTS」をクリックすれば起動します。あるいは,Windowsターミナルを起動し,メニュからUbuntu 22.04を選択すれば起動します。

Ubuntu側のファイルはWindowsから閲覧・操作することが可能です。エクスプローラーの左ペイン(ナビゲーションウィンドウ)にLinuxを選択します。あるいは,Windowsのスタートをクリックし,ファイルを指定して実行を選択し,「\\wsl$」を入力します。

WSLと一緒にWindows Subsystem for Linux WSLg Previewがインストールされています。WSL 2であれば,WSLg経由でGUIを利用できます。MicrosoftのページにはGUIを利用するいくつかのアプリのインストール方法が記載されています。

4. テキストエディター

Ubuntuにはviとnanoがインストールされています。

Visual Studio Codeがあればプログラミングには便利ですので,Microsoftのページを参考にしてインストールします。WindowsにインストールしたVisual Studio CodeをUbuntuから呼び出すことができるようになります。

5. aliasとシンボリックリンク

.bash_aliasesという名前のファイルを作成しaliasを記述しておくと,ログインとともに自動的にaliasが設定されます。エディタ―を使ってaliasの設定ファイル(.bash_aliases)を作成します。

$ vi .bash_aliases

ファイルを誤って削除しないようにaliasを設定します。

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ln='ln -i'

lsについてもaliasを設定して,見やすいようにすると便利でしょう。たとえば,

alias ll='ls -lh --color=auto'
alias la='ls -AF --color=auto'
alias ls='ls -F'

WSLのホームからWindowsのフォルダーへシンボリックリンクを作成し,作業フォルダーにすると便利です。ただし,Windowsのフォルダーではフォルダー名やファイル名の大文字・小文字を区別しません。Cドライブへのパスは/mnt/cです。たとえば,

$ ln -s /mnt/c/Users/ユーザーフォルダへのパス 新リンク名

6. 文字コード

WindowsとWSLでは標準の文字コードが異なりますので,文字コードの変換が必要になる場合があります。

$ sudo apt install nkf lv

nkfは文字コードを変更します。また行末のコードも変換してくれます。lv は less のシフトJIS版です。

たとえば,フォルダー内のRファイルをすべてUTF8に対応させるには,以下のようなコマンドをタイプして実行します。

$ find . -name '*.R' | xargs nkf --overwrite -w -Lu

ちなみに,Macを使って作成されたZipファイルをWindowsで展開するとファイル名が文字化けすることがありますが,WSL のunzipを使えば文字化けせずに展開できるようです。

7. Rのインストール

The Comprehensive R Arichive Networkのページを参考にR 4.2をインストールします。

$ wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc 
$ sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"
$ sudo apt install r-base

とりあえず,sudo を使って R を起動し,

$ sudo R

システム・ライブラリーのパッケージをアップデートします。

> update.packages()

8. RStudio Serverのインストール

RStudio Server をインストールではRStudio Serverのページを参考にします。Debian/Ubuntu のページを開き,Ubuntu 22向けの指示通りにインストールします。

$ sudo apt install gdebi-core
$ wget https://download2.rstudio.org/server/jammy/amd64/rstudio-server-2022.07.1-554-amd64.deb
$ sudo gdebi rstudio-server-2022.07.1-554-amd64.deb

Windows からWebブラウザーを起動してhttp://localhost:8787/にアクセスすれば,RStudioを利用できます。Ubuntuをログオフしても,RStudio Serverを終了していなければ RStudioを使うことができます。

RStudio Serverを終了するには,

$ sudo rstudio-server stop

RStudio Serverを起動するには,

$ sudo rstudio-server start

aliasを設定しておくと便利でしょう。たとえば,

$ alias rserver='sudo rstudio-server'

Windowsターミナルから呼び出すことも可能です。

> ubuntu2204 run sudo rstudio-server start
> start microsoft-edge:http://localhost:8787

RStudio ServerをWSLからアンインストールするには,

$ sudo apt remove rstudio-server

9. コピー&ペーストによるデータの読み込み

コピー&ペーストを使ってデータのやり取りができると便利なのですが,WSL 2だとうまくいきません。コピーしたデータが保存されているバファーを切り替える必要があるようです。まず,Ubuntuにxclipをインストールします。

$ sudo apt install xclip

バファー間でコピーを行った後にread.table()を呼び出すRの関数(readtable_clipboard())を定義します。

> readtable_clipboard <- function(...) {system("xclip -sel c -o|xclip"); read.table("clipboard", ...)}

read.table("clipboard")の代わりにreadtable_clipboard()を使います。たとえば,

> dt <- readtable_clipboard(header=T)

10. ポートフォワーディング

WSL 2の場合,WSLに割り当てられるIPアドレスがパソコン本体のIPアドレスと異なりますので,他のパソコンからRStudio にアクセスするためにはポートフォワーディングの設定が必要になります。

WSL 2のIPアドレスを知るには,

$ hostname -I

Windowsターミナルを使ってUbuntu 22.04に割り当てられたIPアドレスを知るには,

> ubuntu2204 run hostname -I

Windows側のIPアドレスを知るにはWindowsターミナルで,

> ipconfig

IPアドレスはIPv4アドレスの部分に表示されます。

ポートフォワーディングは,Windowsターミナルを管理者権限で起動して設定します。WindowsのIPアドレスが111.222.33.44,WSL 2のIPアドレスが123.45.67.8とすると,

> netsh interface portproxy add v4tov4 listenaddress=111.222.33.44 listenport=8787 connectaddress=123.45.67.8 connectport=8787

他のパソコンからhttp://111.222.33.44:8787/とすればRStudioにアクセスできるようになりました。アクセスできるパソコンの範囲はネットワークの構成に依存します。

ポートフォワーディングを削除するには,Windowsターミナル(管理者)で,

> netsh interface portproxy delete v4tov4 listenaddress=111.222.33.44 listenport=8787

ポートフォワーディングの設定を表示させるには,Windowsターミナルで,

> netsh interface portproxy show all

11. tidyverseのインストール

Rを使ったデータ処理で利用されるtidyverseをRにインストールしようとすると,いくつかのエラーが表示され失敗します。そこで,必要とされるライブラリをUbuntuにインストールします。

$ sudo apt install libcurl4-openssl-dev
$ sudo apt install libssl-dev
$ sudo apt install libxml2-dev

これでインストールできるようになりました。

> install.packages("tidyverse")

12. RStanとCmdStanRのインストール

Bayes推定を行うRのパッケージをインストールしてみましょう。まず,RStanをインストールします。

> install.packages("rstan")

次に,Stanのページを参考に,CmdStanRをインストールします。

> install.packages("cmdstanr", repos = c("https://mc-stan.org/r-packages/", getOption("repos")))
> library(cmdstanr)
> install_cmdstan()

cmdstanのインストールが終了すると,以下のようなメッセージが表示されます。

* Finished installing CmdStan to /home/hoshino/.cmdstan/cmdstan-2.30.1
CmdStan path set to: /home/hoshino/.cmdstan/cmdstan-2.30.1

ホーム・ディレクトリの下に.cmdstanが作成され,その中にcmdstanがインストールされました。install_cmdstan()を実行することで,新しいcmdstanがインストールされます。

13. Pythonの編集・実行

RStudioを使ってPythonのソースコードを編集・実行できます。まず,reticulateパッケージを入れます。

> install.packages("reticulate")

次に,RStudioのメニューからToolsを選択し,Global Options...クリックします。Pythonから,Python interpreterを選択します。たとえば,/usr/bin/python3.10を選択し,Applyをクリックします。RStudioの再起動後,Python3のソースコードをRStudioで実行できるようになります。

14. Python用パケージの更新

Python3のパッケージをインストールするために,pip(別名はpip3)をインストールし,さらにpipを更新しましょう。

$ sudo apt install python3-pip
$ pip3 install -U pip

ここでUbuntuを一度ログオフし,再びログオンすると,$PATHの先頭に .local/binへのパスが付け加わっています。.local/binには更新されたpipがあります。

$ echo $PATH

次に,Python3のパッケージを更新するためのパッケージ(pip-review)をインストールし,パッケージを一括更新します。

$ pip3 install pip-review
$ pip-review --auto

すると,いくつかのエラーが表示されますので,必要なライブラリをUbuntuにインストールします。その後,再び,pip-review --autoを実行すると,無事にPython3のパッケージが更新されます。

$ sudo apt install libcairo2-dev pkg-config python3-dev
$ sudo apt install libgirepository1.0-dev
$ pip-review --auto

ついでに,分析でよく使われるパッケージをインストールしておきましょう。

$ pip3 install pandas
$ pip3 install matplotlib

14. Jupyter Labのインストール

RStudioを使ってPythonの編集作業ができるようになりましたが,Jupyter Labがあれば大変便利です。Jupyter Labはnode.jsを使うようですので,

$ sudo apt install nodejs
$ pip3 install jupyterlab

パソコンのブラウザーを使ってJupyter Labを使うためにはオプション(--no-browser)を指定して起動します。

$ jupyter lab --no-browser

すると,メッセージとともにトークンが表示されますので,トークン部分をコピー(選択して右クリック)しておきます。

パソコンのブラウザーを使ってhttp://localhost:8888/にアクセスすると,ログイン画面が表示されます。そこで,トークンと新規パスワードを入力し,Log in and set new passwordをクリックします。次回からは設定したパスワードを使ったログインが可能になります。

Jupyter Labの各種設定を行うための設定ファイルを作成しておくと便利です。

$ jupyter lab --generate-config

.jupyterフォルダ内にjupyter_lab_config.pyが作成されますので,このファイルをエディターを使って編集すれば設定を変更できます。たとえば,--no-browserと同じ意味の設定は,

c.LabServerApp.open_browser = False

他のパソコンからのアクセスを可能にするには,

c.ServerApp.ip = '0.0.0.0'

2022年5月23日