Ubuntu 20.04のシステムを用意する

2018年からメインPCとしてUbuntu（18.04）を使っています。今年、新しいLTS 20.04がリリースされたので、初期バグフィックスを待って、20.04.1をゼロ（）からインストールして使用中。こちらは自分のPCの初期設定・インストール手順になっています。ご参考までに

> 注意： linux kernel, "uname=Linux 5.4.0-47-generic x86_64"でタッチパッドやトラックポイントが動作しなくなったので、現状、"uname=Linux 5.4.0-42-generic x86_64"を使用している。

インストールしているPC情報：

項目|値
---|---
dmi.bios.date| 07/08/2020
dmi.bios.version| N2EET49W (1.31 )
dmi.board.vendor| LENOVO
dmi.product.family| ThinkPad X1 Extreme
dmi.product.name| 20MFCTO1WW


# USBを準備

https://ubuntu.com/tutorials/create-a-usb-stick-on-ubuntu#1-overview

Ubuntu（18.04や20.04）上でdisk (ディスク）アプリによりUSBドライブを挿して、ダウンロードしたイメージを`リストア`することで、ブートできるUSBを作成ができる。


# OSインストールウイザードの手順

- 日本語を選択
- 最小インストールを選択

    > 一回、最小インストール選択なしでやってみたが、起動が日本語入力対応が不完全だとのメッセージがでた。最小インストールの場合はでないようだ。

- 必要なドライバー・外部ドライバーを使用するを選択
- インストールするパーティションを選択してすべて削除・インストールを選択


# 開発用環境を用意

## snap (Ubuntu Software)アプリをインストール

- Chromium
- PyCharm (community edition) [python開発用]
- VSCode [javascript開発用]


## publickeyを用意して、GITHUBに登録

https://docs.github.com/ja/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

## ライブラリーをインストール

開発用にビルドなど（pythonのビルドできることを含む）できるようにする。

```
sudo apt update
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
```

## ターミナルツールをインストール

htop/tmux

```
sudo apt install htop tmux
```

[awscli v2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html)

```
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
```

## python (pyenv)をインストール

[pyenv](https://github.com/pyenv/pyenv-installer)とは、複数バージョンのPythonを使って、Pythonのバージョンを切り替えできる環境を用意してくれるツール。

1. pyenv インストール：

    ```
    curl https://pyenv.run | bash
    ```

    インストール後、表示されているテキストを`~/.bashrc`に追加する

    ```
    export PATH="/home/shane/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    ```

    開いているターミナルに反映する:
　　　
    ```
    source ~/.bashrc
    ```    



2. pyenvによるpython各バージョンをインストール

    ```
    # list available versions with command:
    # pyenv install --list
    # (2020-9-8現在）
    pyenv install 3.7.9
    # upgrade pip/install pipenv
    pyenv global 3.7.9
    python -m pip install pip -U
    python -m pip install pipenv

    pyenv install 3.8.5
    pyenv global 3.8.5
    python -m pip install pip -U
    python -m pip install pipenv    
    ```

3. global pythonを設定:

    ```
    pyenv global 3.8.5
    ```

### 他pythonツール

global pythonによく使われるツールを入れる ([jupyterlab](https://jupyter.org/), [pre-commit](https://pre-commit.com/))


    python -m pip install jupyterlab
    # ここに必要かどうかは疑問ですが、これで動いている
    # -- 開発時のGITコミット前のコードチェックツール実行するスクリプト設定してくれる
    python -m pip install pre-commit


> 注意： `pre-commit` を使う場合、pipenv/virtualenv内から`pre-commit install`を実行すること

## アプリをインストール


### Docker

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04

####　dockerをインストール

```
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
```

DockerのリポジトリのGPGキーを追加 (`OK` が返される）：

```
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```

Dockerリポジトリを追加

```
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
```

Dockerをインストール：

```
sudo apt update
sudo apt install docker-ce
```

Dockerがインストールされて、起動していることを確認：

```
# docker.serviceが"active (running)" になっているはず
sudo systemctl status docker
```

##### `sudo` が不要のように実行できるように

`docker` のコマンドを使うときに`sudo`を打つ必要ないように、自分のユーザを`docker`のユーザグループに追加

```
sudo usermod -aG docker ${USER}
```

追加後、PCを再起動してください。

> 再起動なしの方法があるのですが、うまく行かない場合がある

再起動後、ユーザがdockerに参加しているかは下記のコマンドで確認ができる：

```
id -nG
```

dockerが正しく動作しているかは下記のコマンドで確認：

```
docker run hello-world
```


#### docker-composeをインストール

このコマンドを実行すると、`/usr/local/bin` 配下に置かれる。

```
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
```

実行権限を追加

```
sudo chmod +x /usr/local/bin/docker-compose
```

確認：

```
docker-compose --version
```

### Slack

2020年8月の時点では、ubuntuのリポジトリに入っているSLACKアプリ（snap）は、日本語を打つことができないようなので、SLACKのサイトから、`.deb`をダウンロードして、インストールする。

1. [SLACK](https://slack.com/intl/ja-jp/downloads/linux) からダウンロード
2. `slack-desktop-*.deb`をインストール
    
    ```
    sudo dpkg -i ~/ダウンロード/slack-desktop-*.deb
    ```


## システム設定

### ubuntuの`ファイル｀ツールを"WIN-E"により開けるようにShortcutキー設定

## VPN設定

...TBC