ubuuntu20.04をインストールして、はじめにやること覚書

## [前回](https://qiita.com/solitude_under_the_blue_sky/items/c9c3a3a5bb684c43d465)の続き

- ubuntu18に限界を感じてubuntu20をインストールしたので、環境整備でやることをメモする。（随時更新）

- 言語設定で楽をするため、インストールメディアは日本語版を使用する前提。

## 手順書　個人用

#### langage related

```bash
LANG=C xdg-user-dirs-gtk-update
```

- logout & login

```bash
vi .bashrc
export LANG=en_US
```

- configuration -> langage support -> english
- logout & login

#### google chrome

sudo dpkg -i google-chrome-stable_current_amd64.deb

#### basic tools

```bash
sudo apt update
sudo apt install vim net-tools git minicom fping
sudo apt install curl cmake cmake-qt-gui

## git initial setting

git config --global user.email "solitude@example.com"
git config --global user.name "solitude"

```
## ssh keys generation for gitlab

```bash
$ ssh-keygen -t ed25519 -C "<comment>"
$ cd .ssh/
$ ls
id_ed25519  id_ed25519.pub  known_hosts
$ cat id_ed25519.pub 
ssh-ed25519 askjasdlfj;fsakewkfwsdef;aslfmskldflksdnflksdmflksdmflknmsd <comment>
# copy and paste pub key into gitlab.
```
#### sshd

- びっくりしたが、最初からsshホストが入っていないので、sshでアクセスされることができないし、scpでファイルを受け取れない。
- 次のコマンドでsshdをインストールする。
```bash
sudo apt install ssh
```

#### sublime text

- [reference](https://linuxize.com/post/how-to-install-sublime-text-3-on-ubuntu-20-04/)

```bash
sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common
curl -fsSL https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo add-apt-repository "deb https://download.sublimetext.com/ apt/stable/"
sudo apt install sublime-text
```

- install package
- OmniMarkupPreviewer
- QML

#### snap系のツール

- 20231130追記分
- gui系のアプリはsnapで管理されているバージョンのものがバグが少ないとわかって来たので、以下のものをインストールする。

```bash
sudo snap install vlc
sudo snap install pinta
sudo snap install plotjuggler
```


#### Java Platform (JDK)

- [reference](https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-20-04-ja)
- 上のリファレンスを見るのも良いが、自分の環境にふさわしいjavaのバージョンは、以下のようにして調べられる。

```bash
tomiyuichi@tomiyuichi-XPS-8930:~$ java -V

Command 'java' not found, but can be installed with:

sudo apt install openjdk-11-jre-headless  # version 11.0.17+8-1ubuntu2~20.04, or
sudo apt install default-jre              # version 2:1.11-72
sudo apt install openjdk-16-jre-headless  # version 16.0.1+9-1~20.04
sudo apt install openjdk-17-jre-headless  # version 17.0.5+8-2ubuntu1~20.04
sudo apt install openjdk-8-jre-headless   # version 8u352-ga-1~20.04
sudo apt install openjdk-13-jre-headless  # version 13.0.7+5-0ubuntu1~20.04
```
- したがって、まずこれらをインストールする。

```bash
sudo apt install openjdk-11-jre-headless
sudo apt install default-jre
java -version
sudo apt install default-jdk
javac -version
```

- 2023年7月２日追記：QT5.13.2にandroidのSDK-Platformがインクルードされないエラーがあると報告を受けました。ここでopenjdk-11をインストールして、それをQTのJDK設定に反映させると起こると判明しました。JDKのバージョンはQTのバージョンに依存する部分が大きいようで、対策は改めて掲載する予定。


### android studio

- [installer](https://developer.android.com/studio)
- Select "Download Android Studio Electric Eel"

```bash
cd ~/Download
mv android-studio-2022.1.1.20-linux.tar.gz ~
cd
tar -zxvf android-studio-2022.1.1.20-linux.tar.gz
```
- [additional reference](https://developer.android.com/studio/install?hl=ja)

```bash
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386
```
```bash
cd .local/share/application
touch android_studio.desktop
vi android_studio.desktop
###########################
[Desktop Entry]
Version=2023.2.24
Type=Application
Name=Android-Studio
#Icon=/home/tomiyuichi/arduino-1.8.13/lib/arduino_icon.ico
Exec="/home/tomiyuichi/android-studio/bin/studio.sh" %f
Comment=android-studio!!!
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-idea
############################
```

#### qt 5.15.2

- Download script [here]()https://www.qt.io/ja-jp/download-open-source


#### qt 5.13.2

- Download script [here](https://download.qt.io/archive/qt/)
- Select "qt-opensource-linux-x64-5.13.2.run"

```bash
cd ~/Download
chmod +x qt-opensource-linux-x64-5.13.2.run
./qt-opensource-linux-x64-5.13.2.run
```
- とりあえず全部インストールしておく。
- qt creator を開いて、Tools -> Options -> Devices -> Android を選択
- JDK Location のフィールドに、QT内で動かすJAVA系のツールのパスを渡す。
    - これが、QT内にある標準のjavaではどうしてもだめで、aptでシステムにjava８をインストールして、それのパスをここに入力する必要がある。まずは必要なものをインストール
```bash
sudo apt install openjdk-8-jre
sudo apt install openjdk-8-jdk
```
- インストールしたら、下記コマンドで確認をする。

```bash
tomi@tomi-XPS-8930:~$ javac -version
javac 1.8.0_362
tomi@tomi-XPS-8930:~$ java -version
openjdk version "1.8.0_362"
OpenJDK Runtime Environment (build 1.8.0_362-8u372-ga~us1-0ubuntu1~20.04-b09)
OpenJDK 64-Bit Server VM (build 25.362-b09, mixed mode)
tomi@tomi-XPS-8930:~$ which java
/usr/bin/java
tomi@tomi-XPS-8930:~$ which javac
/usr/bin/javac
tomi@tomi-XPS-8930:~$ ls -l  /usr/bin/java
lrwxrwxrwx 1 root root 22  7月 29 14:16 /usr/bin/java -> /etc/alternatives/java
tomi@tomi-XPS-8930:~$ ls -l  /etc/alternatives/java
lrwxrwxrwx 1 root root 46  7月 29 14:16 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
tomi@tomi-XPS-8930:~$ ls -l  /etc/alternatives/javac
lrwxrwxrwx 1 root root 43  7月 29 14:17 /etc/alternatives/javac -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
tomi@tomi-XPS-8930:~$ 
```
- つまり、/usr/lib/jvm/java-8-openjdk-amd64/配下に、javaとjavacの本体があるわけである。
- したがって、「JDK Location」の欄には「/usr/lib/jvm/java-8-openjdk-amd64」を入力する。
- 「Android SDK location:」の欄には、「/home/<username>/Android/Sdk」と入力する。
    - 最初は、エラーになるが、android-studioから適切なバージョンのSDK platformをいれておけばOK
    - 今回の場合、android-studio -> Tools -> SDK Manager -> Android SDK画面にいく
    - 「SDK Platforms」で、「Android 8.0 (API Level 26)」をインストール 
- 「Android NDK location:」の欄には、現環境にふさわしいNDKをインストールし、そのパスを入れる。
    - android-studio の先程のAndroid SDKの画面で、「SDK Tools」を選択する。
    - 「NDK(side-by-side)」をインストールする。
    - これで「/home/<username>/Android/Sdk/ndk」ディレクトリに、最新のndk(version25)が入る
    - しかし、これでは新しすぎて、QTに設定されない
    - [サポート終了済みNDKアーカイブ](https://developer.android.com/ndk/downloads/older_releases.html?authuser=3&hl=ja)から、ndkバージョン20をとってきて、解凍し、「/home/<username>/Android/Sdk/ndk」に格納する。
    - 最終的に「Android NDK location:」の欄には「/home/<username>/Android/Sdk/ndk/<ndk version20>」と入力する。
- 以上で設定完了である。

#####　20231130 追記

- こんなことありえるんかって話だけど、ubuntuを通常インストールしただけではg++が入っておらず、qtcreatorから有効なキットがありませんと怒られた。
- 以下のコマンドでg++を入れればOK

```bash
sudo apt install g++
```


#### arduino

- Download AppImage
- json download
    - [esp32     reference](https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json)
    - [stamp-c3  reference](https://qiita.com/hsgucci/items/b57a3908894064b68554)
    - [adafruit feather m0       reference](https://learn.adafruit.com/adafruit-feather-m0-basic-proto/setup)
    - [adafruit feather nrf52832 reference](https://learn.adafruit.com/bluefruit-nrf52-feather-learning-guide/arduino-bsp-setup)

```bash
#### board manager
# esp32 dev
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
# stamp-c3
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
# adafruit feather m0
https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
# adafruit feather nrf52832
https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
# XIAO SENSE
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
```
- manage library
    - Adafruit NeoPixel by Adafruit

- nrf関連のビルドは以下のエラーが出てくるため、pipでライブラリの追加が必要
- ついでにpipがないと怒られるので、get-pipに関してもここで記述する。
- [get-pip 公式手順](https://pip.pypa.io/en/stable/installation/)

```bash
## build error on arduino IDE
exec: "adafruit-nrfutil": executable file not found in $PATH
Compilation error: exec: "adafruit-nrfutil": executable file not found in $PATH

## console proccess to procceed

```
wget https://bootstrap.pypa.io/get-pip.py
sudo apt-get install python3-distutils
vi ~/.bashrc
#####
# add line shown below to the bottom of .bashrc.
export PATH=$PATH:$HOME/.local/bin
#####
source ~/.bashrc
python3 get-pip.py
pip3 install adafruit-nrfutil


```

```bash
cd .local/share/application
touch arduino_2.0.3.desktop
vi arduino_2.0.3.desktop
###########################
[Desktop Entry]
Version=2023.2.23
Type=Application
Name=Arduino
#Icon=/home/tomiyuichi/arduino-1.8.13/lib/arduino_icon.ico
Exec="/home/tomiyuichi/arduino-ide_2.0.3_Linux_64bit.AppImage" %f
Comment=arduino!!!
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-idea
############################
```

#### qgroundcontrol

- Download AppImage

```bash
sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libqt5gui5 -y
sudo apt install libfuse2 -y
```

- logout & login


#### qgroundcontrol (build)

```bash
sudo apt-get install speech-dispatcher libudev-dev libsdl2-dev patchelf build-essential curl
```

- qt-5.15.2から、プロジェクトをビルド


#### ~~plotjuggler (build)~~

- 20231130追記
- plotjugglerはほぼ最新のリリースがsnapでインストールできるとわかったので、本節は割愛
- ~~なんかAppImageがエラーはいて動かないので、仕方なくbuild~~

```bash
sudo apt install qtbase5-dev libqt5svg5-dev libqt5websockets5-dev
sudo apt install libqt5opengl5-dev libqt5x11extras5-dev libprotoc-dev libzmq5
```

```bash
git clone https://github.com/facontidavide/PlotJuggler.git
cd ./PlotJuggler/
git tag
# confirm release, forexample, 3.6.0

git checkout -b 3.6.0 refs/tags/3.6.0
mkdir build
cd ./build
cmake ..
make -j4
```
```bash
cd .local/share/application
touch plotjuggler_3.6.0.desktop
vi plotjugler_3.6.0.desktop
###########################
[Desktop Entry]
Version=2023.2.24
Type=Application
Name=PlotJuggler
#Icon=/home/tomiyuichi/arduino-1.8.13/lib/arduino_icon.ico
Exec="/home/tomiyuichi/PlotJuggler/build/bin/plotjuggler" %f
Comment=plotjuggler!!!
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-idea
############################
```


#### kicad6 (apt) 

-[reference](https://techoverflow.net/2022/01/02/how-to-install-kicad-6-0-on-ubuntu/)


```bash
sudo add-apt-repository ppa:kicad/kicad-6.0-releases
sudo apt update -y
sudo apt -y install kicad
```

#### mcumgr (ncs, mcuboot関連)

- [参考](https://docs.zephyrproject.org/3.2.0/services/device_mgmt/mcumgr.html)

```
tomiyuichi@tomiyuichi-XPS-8930:~$ go

Command 'go' not found, but can be installed with:

sudo snap install go         # version 1.19.6, or
sudo apt  install golang-go  # version 2:1.13~1ubuntu2
sudo apt  install gccgo-go   # version 2:1.13~1ubuntu2

See 'snap info go' for additional versions.

tomiyuichi@tomiyuichi-XPS-8930:~$ ^C
tomiyuichi@tomiyuichi-XPS-8930:~$ sudo snap install go
[sudo] password for tomiyuichi: 
error: This revision of snap "go" was published using classic confinement and
       thus may perform arbitrary system changes outside of the security
       sandbox that snaps are usually confined to, which may put your system at
       risk.

       If you understand and want to proceed repeat the command including
       --classic.
tomiyuichi@tomiyuichi-XPS-8930:~$ sudo snap install go --classic
Download snap "go" (10050) from channel "stable"                     2%...
go 1.19.6 from Michael Hudson-Doyle (mwhudson) installed
tomiyuichi@tomiyuichi-XPS-8930:~$ 
tomiyuichi@tomiyuichi-XPS-8930:~$ go install github.com/apache/mynewt-mcumgr-cli/mcumgr@latest
tomiyuichi@tomiyuichi-XPS-8930:~$ vi ~/.bashrc
#########################################
export PATH=${HOME}/go/bin:"$PATH"
########################################
tomiyuichi@tomiyuichi-XPS-8930:~$ source ~/.bashrc
```
#### rtl8812au (tplink archer t2u nano 対応)

- aptにそれらしいもの（rtl8812au-dkms）があるが、おそらくこのドングルのシリアルナンバーが登録されていないかなにかで、使えない。
- なので、ソースからビルドする。
- [公式？](https://github.com/aircrack-ng/rtl8812au)を参考に以下を実行。
```bash
git clone -b v5.6.4.2 https://github.com/aircrack-ng/rtl8812au.git
cd ./rtl8812au
make
sudo make install
```
- これで認識されるようになった。