（Windows10）Linux環境とgnuplotを導入する。

# この記事の対象者
・`Windows10`のマシンしか持っていないが、`Linux`環境が必要な人。
・最近サーバーの勉強を始めた人。
・プログラミングの授業がもうすぐ始まる大学生。

#Abstract
`Windows10`上で、`Ubuntu`ターミナルと`Linux`コマンド（`bash`、`ssh`、`git`、`apt`など）を使える環境を構築する。そして、`Ubuntu`に`gnuplot`を導入し、出力結果を`Windows10`上で表示できるようにする。

#Windows10 でLinuxの環境を構築する。
### Microsoft Storeで「Ubuntu 18.04 LTS」または「Ubuntu 20.04 LTS」をインストールする。
18.04
https://www.microsoft.com/store/productId/9N9TNGVNDL3Q

20.04
https://www.microsoft.com/store/productId/9N6SVWS3RX71
<img width="500" alt="ubuntu" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613755/b1ba3690-7106-7b33-625f-f3477645a4d0.png">

### Windowsのファイルを参照するためには、以下のように```/mnt/```ディレクトリを先頭につければ良い。

例えば、Cドライブのファイルに移動するときは

```terminal:
$ cd /mnt/C/...
```
などとするとアクセスできる。

#X Window Systemの導入
今回は、`X Window System`を導入することで、Linux（Ubuntu）上で実行した結果（例えば`gnuplot`で出力したグラフなど）をWindows上で表示できるようにする。Linux（Ubuntu）には`x11`が初めから入っている。Windowsには`Xming`をインストールする必要がある。


###Windowsに他のGUIがないことの確認
まずは、Limux側には`x11`が正常にインストールされ、Windows側にはGUIが存在していないことを確認する。Windows側にGUIが入っていなければ、`x11`で何か表示させようとすると、エラーが出るはずである。
先ほどダウンロードしたUbuntuを起動して以下のコマンドを入力する。

```shell-session:
#aptの更新
$ sudo apt update
$ sudo apt upgrade

#x11を使うアプリのインストール
$ sudo apt install x11-apps
```
以下のコマンドを実行する。

```shell-session:
$ xeyes &
```
とすると、

```shell-session:
Error: Can't open display
```
と表示されればO.K.

### Xmingのインストール
[Xming X Server for Windows](https://ja.osdn.net/projects/sfnet_xming/)から以下のファイルをダウンロードしてインストールする。インストール後は必ず再起動をする。

・[Xming-6-9-0-31-setup.exe]
(https://ja.osdn.net/projects/sfnet_xming/downloads/Xming/6.9.0.31/Xming-6-9-0-31-setup.exe/)

・[Xming-fonts-7-7-0-10-setup.exe]
(https://ja.osdn.net/projects/sfnet_xming/downloads/Xming-fonts/7.7.0.10/Xming-fonts-7-7-0-10-setup.exe/)

### インストールができているかのチェック
以下のコマンドを実行して目のウィンドウが出てきたら成功。

```shell-session:
$ xeyes &
```
<img width="400" alt="eyes" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613755/d1762e96-0afc-5957-c2c5-0295bae4c8a4.png">

### 注意
`xeyes &`を実行すると、

```shell-session:
Error: Can’t open display:
```
または

```shell-session:
Error: Unable to initialize GTK+, is DISPLAY set properly?
```
のようなエラーが出る場合がある。この時、

```shell-session:
$ export DISPLAY=:0
```
または

```shell-session:
$ export DISPLAY=:0.0
```
を実行してもう一度```xeyes &```を実行するとうまくいく。

### おまじない
上記のコマンドを```~/.bashrc```に追記すると次回から入力しなくて良くなる。以下では```Vi```で```~/.bashrc```編集するためのコマンド例をあげておく。上から実行するだけで、```~/.bashrc```に```export DISPLAY=:0```または```export DISPLAY=:0.0```を追記できる。

まず、```Vi```で```~/.bashrc```を開く。

```shell-session:
$ vi ~/.bashrc
```
次に、```Vi```内で以下を１行ずつ入力する。

```vim:
#最終行へジャンプ
Shift + g

#インサートモード
i

#行末へ移動
Fn + ->

#改行
Enter

#おまじないの入力
export DISPLAY=:0 または export DISPLAY=:0.0

#インサートモードを抜ける
Esc

#保存してViを終了
:wq
```
最後に```~/.bashrc```の変更を反映する。

```shell-session:
$ source ~/.bashrc
```


#gnuplotのインストール
まず、Ubuntuの中で`lock`ファイルを作る。

```shell-session:
$ sudo touch /var/lib/dpkg/lock
$ sudo chmod 640 /var/lib/dpkg/lock
$ sudo chown root:root /var/lib/dpkg/lock 
```

次に```apt```を更新する。（2.でやっていたら不要）

```shell-session:
$ sudo apt update
$ sudo apt upgrade
```
最後に、```gnuplot```をインストールする。

```shell-session:
$ sudo apt install gnuplot
```

### gnuplotの動作確認
ターミナル上で```gnuplot```と入力して起動する。
以下のコマンドを入力して$y=\sin(x)$のグラフが出てきたら成功。

```
gnuplot> set terminal x11
gnuplot> plot sin(x)
```

### 注意
ここで

```shell-session:
Error: Can’t open display:
```
または

```shell-session:
Error: Unable to initialize GTK+, is DISPLAY set properly?
```
のようなエラーが出た時、```export DISPLAY=:0```などを実行するか、[おまじない](#おまじない)のところをもう一度実行する。

#おまけ　好きなエディタをインストールする。
・Vim (Ubuntuに標準で入っている。)

・VScode (https://code.visualstudio.com/)
・インストール方法など
https://qiita.com/Shi-nakaya/items/c43fb6c1e638d51bf1c8


・Sublime Text (https://www.sublimetext.com/)
#参考にしたサイトなど
### Bash on Ubuntu on Windows + XmingによるGUI
https://qiita.com/makky0620/items/e31edc90f22340d791ff

### gnuplotのインストール時のエラー
これの#4（https://forums.ubuntulinux.jp/viewtopic.php?pid=32854）