Ubuntu on WSL2をインストールしたらやっておくこと （2024年1月）

# はじめに

個人的なメモです．

## 2023/02/07

WSL2のUbuntuを再インストールしたのでそれに合わせて修正しました．

## 2024/01/11

WSLで名前解決ができない問題を解決できたので，あらためて再インストールし，`systemd`と`genie`に関する項を削除しました．

# インストール

スマートアプリコントロールがオンになっている場合，`wsl.exe`の実行が拒否されるためあらかじめオフにしておく．

[WSL設定のベストプラクティス](https://docs.microsoft.com/ja-jp/windows/wsl/install)にしたがってインストール．

環境によってはWSLから名前解決ができないので，WSLを停止してからDNSトンネリングを設定する．`%UserProfile%`に`.wslconfig`ファイルを作成して以下を記述する．

```.wslconfig
[wsl2]
dnsTunneling=true
```

WSLを再起動し，ログインシェルを`/bin/tcsh`に変更する．

```shell
> sudo apt install tcsh
> sudo chsh hogehoge
```

SSH鍵を作成する．

```shell
> ssh-keygen
> eval `ssh-agent`
> ssh-add ~/.ssh/private_key_file
```


# SSHサーバの設定

Windows TerminalだとKeyhackがうまく動かないのでTera Termでログインしたい．
セキュリティ向上のため本来ならば公開鍵認証を行うべきかもしれないが，ローカルでログインするだけなのでキーボードインタラクティブ認証で済ませる．あとで時間ができたときに修正したい．

まずはSSHサーバをインストールする．

```
sudo apt install openssh-server
```

`/etc/ssh/sshd_config`で以下の2行を`no`から`yes`に変更する．以前は`ChallengeResponseAuthentication`だったものが`KbdInteractiveAuthentication`になったらしい．

```/etc/ssh/sshd_config
PasswordAuthentication yes
KbdInteractiveAuthentication yes
```

ホスト認証鍵を作成する．

```shell
> sudo ssh-keygen -A
```

SSHサーバを起動する．

```shell
> sudo service ssh start
```

IPアドレスを確認する[^1]．

[^1]: `localhost`でログインできるから実は不要．

```shell
> ip a
```

# ロケールを変更する

```shell
> sudo apt install language-pack-ja
> sudo update-locale LANG=ja_JP.UTF-8
```

# パッケージのインストール

## Emacs

```shell
> sudo add-apt-repository ppa:kelleyk/emacs
> sudo apt update
> sudo apt install emacs28
> sudo apt install migemo-el
```

## tmux

```shell
> sudo apt install tmux
```

## フォント

```shell
> sudo apt install fonts-noto fonts-ipaexfont fonts-ipafont
```

## Rで使うライブラリ等

```shell
> sudo apt install make cmake gcc g++ gfortran libharfbuzz-dev libfribidi-dev libxml2-dev libcurl4-openssl-dev zlib1g-dev libfontconfig1-dev liblapack-dev libblas-dev libpng-dev libtiff5-dev libjpeg-dev libssl-dev libgdal-dev libudunits2-dev
```

# フォントの追加インストール

フォントを追加するためには，フォントファイルが含まれるディレクトリを`/usr/share/fonts/trutype`以下にコピーし，フォントキャッシュを更新する．私の場合は[UDEV Gothic](https://github.com/yuru7/udev-gothic)を追加する．

```shell
> sudo mv /path/to/fontdir/ /usr/share/fonts/truetype/
> sudo fc-cache -vf
```

# RとRStudio Serverのインストール

[Download RStudio Server for Debian & Ubuntu](https://www.rstudio.com/products/rstudio/download-server/debian-ubuntu/)にしたがってインストール．

# Rのパッケージのインストール

RStudioにログインして以下を実行．

```r
install.packages(c("devtools", "extrafont", "GWalkR", "haven", 
                   "readxl", "remotes", "styler", "tidyverse"))
install.packages(c("bookdown", "commonmark", "formatR", "kableExtra", "knitr", "quarto",
                   "rmarkdown", "roxygen2md"))
install.packages(c("gtools", "huxtable", "modeest", "stargazer"))
install.packages(c("evd", "mvtnorm", "PearsonDS", "statip", "stats4"))
install.packages(c("ivreg", "lmtest", "MatchIt", "plm", "sandwich"))
install.packages(c("CausalImpact", "fable", "feasts", "forecast",
                   "lubridate", "orcutt", "slider",
                   "tsibble"))
install.packages(c("Ryacas"))
install.packages(c( "GGally", "ggdag", "ggforce", "gghighlight",
                    "ggmosaic", "ggpmisc", "ggrepel", "ggvenn",
                    "hexbin", "latex2exp", "patchwork", "plotly", 
                    "RColorBrewer"))
install.packages(c("tidymodels"))
install.packages(c("sf", "NipponMap"))
install.packages(c("AER", "causaldata", "dslabs",
                   "Ecdat", "fivethirtyeight", "fivethirtyeightdata",
                   "gapminder", "HistData", "mosaicData",
                   "nycflights13", "tsibbledata", "wooldridge"))
```

# Rへのフォントのインポート

`extrafont`パッケージを使ってシステムのフォントをRで使えるようにする．`font_import()`は一度実行すればよいが，Rの更新をした場合も再度行う必要がある．

```r
library(extrafont)
font_import()
```

読み込んだフォントを実際に使うためには`loadfonts()`関数をセッション毎に実行する．

# TinyTeXのインストール

最近は複数のLaTeXを共存させるのが面倒なので，すべてTinyTeXで済ませている．

```r
install.packages("tinytex")
tinytex::install_tinytex()
tinytex::tlmgr_install(c("haranoaji", "jlreq", "luatexja", "uptex",
                         "tex-gyre", "tex-gyre-math", "euler-math", 
                         "ascmac", "pgf", "mathtools", "latexmk",
                         "colortbl", "pdflscape",
                         "collection-latexextra"))
```

TinyTeXのプログラムはすべて`~/.TinyTeX/bin/x86_64-linux/`にインストールされ，そこから必要なもののシンボリックリンクが`~/bin`に作成される．個人的には標準で作成されるもの以外に`upbibtex`が必要なので，これは手動でリンクを作成する．

```shell
> ln -s ~/.TinyTeX/bin/x86_64-linux/upbibtex ~/bin
```