WSLのUbuntuにRの最新バージョンを入れる



# 概要

WSL(Windows Subsystem for Linux)のUbuntu18においてRの最新バージョンを使いたいとき一筋縄では行かなかったのでメモする｡
原因としてはWSLのバグで`apt-key adv`できないことである｡

# 原因

UbuntuにRの最新バージョンを入れたい場合は以下を実行すればよいはずである｡
https://cran.r-project.org/bin/linux/ubuntu/README.html

しかし`/etc/apt/sources.list file`にdebの記述を追加後､apt updateを行うと以下のエラーが発生する｡

```
$sudo apt-get update
取得:1 https://packages.microsoft.com/repos/vscode stable InRelease [2,802 B]
取得:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]
取得:3 https://packages.microsoft.com/repos/vscode stable/main amd64 Packages [65.8 kB]
取得:4 https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/ InRelease [3,609 B]
エラー:4 https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/ InRelease
  公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 51716619E084DAB9
取得:5 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages [168 kB]
ヒット:6 http://archive.ubuntu.com/ubuntu bionic InRelease
取得:7 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
取得:8 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
取得:9 http://security.ubuntu.com/ubuntu bionic-security/main Translation-en [63.6 kB]
取得:10 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [328 kB]
取得:11 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages [66.8 kB]
取得:12 http://security.ubuntu.com/ubuntu bionic-security/universe Translation-en [39.3 kB]
取得:13 http://security.ubuntu.com/ubuntu bionic-security/multiverse amd64 Packages [1,444 B]
取得:14 http://archive.ubuntu.com/ubuntu bionic-updates/main Translation-en [125 kB]
取得:15 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [199 kB]
取得:16 http://archive.ubuntu.com/ubuntu bionic-updates/universe Translation-en [94.1 kB]
取得:17 http://archive.ubuntu.com/ubuntu bionic-updates/multiverse amd64 Packages [4,180 B]
取得:18 http://archive.ubuntu.com/ubuntu bionic-updates/multiverse Translation-en [2,740 B]
取得:19 http://archive.ubuntu.com/ubuntu bionic-backports/universe amd64 Packages [2,852 B]
取得:20 http://archive.ubuntu.com/ubuntu bionic-backports/universe Translation-en [1,200 B]
パッケージリストを読み込んでいます... 完了
W: GPG エラー: https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/ InRelease: 公開鍵を利用できないため、以下の署
名は検証できませんでした: NO_PUBKEY 51716619E084DAB9
E: リポジトリ https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/ InRelease は署名されていません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
```

公開鍵の期限が切れているようなので以下のコマンドで更新をかけたところエラーとなった｡

```
$sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 51716619E084DAB9
Executing: /tmp/apt-key-gpghome.SkyX2NUCRE/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 51716619E084DAB9
gpg: connecting dirmngr at '/tmp/apt-key-gpghome.SkyX2NUCRE/S.dirmngr' failed: IPC connect呼び出しに失敗しました
gpg: 鍵サーバからの受信に失敗しました: dirmngrがありません
```

ここからエラーに従いdirmngrをインストールしても､公開鍵の更新はできない｡

# 解決方法

鍵を`apt-key adv`ではなく直接追加してやる｡
https://github.com/Microsoft/WSL/issues/3286#issuecomment-402594992
こちらに従って､`https://cloud.r-project.org/bin/linux/ubuntu`の鍵を直接追加する｡
以下のコマンドのコピペするだけで十分である｡

```
curl -sL "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x51716619E084DAB9" | sudo apt-key add
```

このコマンド実行後､`sudo apt-get update`できればそのままRの最新バージョンをインストールすることができる｡