通勤中のTermuxでおすすめの兵法

皆さんが通勤中に使っている[Termux](https://github.com/termux/termux-app)、やはり使っていて便利なので、おすすめの例をメモ的に挙げておく。

基本は「[@HirotakaKikushima - 【TermUX】AndroidでLinuxのソフトウェアやプログラムを使う](https://qiita.com/HirotakaKikushima/items/985d5f47e001a850a899)」にも載っているが、ハマりどころもあるので本稿では補足を加えている。

# Termuxの準備
## まずパッケージを更新
Termuxのパッケージ管理は`pkg`コマンドで行う。

```console
$ pkg upgrade
```

## Homeディレクトリ`~/`から内部ストレージにリンクを貼る
- Termuxの`~/`は`/data/data/com.termux/files/home/`つまり`data`下にある
- 普段使っている内部ストレージは`/storage/emulated/0/`にある
- 直接入ることはできるが`Permission denied`なので`ls`コマンドが使えず、`Tab`補完もできないので不便。

そこで内部ストレージに`~/`から繋ぐ。

```console
$ termux-setup-storage
```

これで`~/`に`storage`ディレクトリが生まれてリンクが貼られ、`~/storage/`=`/storage/emulated/0/`みたいな状態となる


# gitを入れてsshを通す
まずgitを入れる。

```console
$ pkg install git
```
これでgitコマンドを使えるようになる。

次にSSHの設定をするためRSA方式で秘密鍵と公開鍵を作る。

```console
$ ssh-keygen -t rsa
```

すると、

```
Generating public/private rsa key pair.
Enter file in which to save the key (Homeディレクトリ/.ssh/id_rsa):
```
と訊かれるのでEnter

```
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
```
ここは好きなパスワードを入れてEnter。
何も入力しなくても通る。

```
Your identification has been saved in Homeディレクトリ/.ssh/id_rsa.
Your public key has been saved in Homeディレクトリ/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:.......... ユーザ名@ホスト名
The key's randomart image is:
+---[RSA 3072]----+
...
+----[SHA256]-----+
```
これで秘密鍵`id_rsa`と公開鍵`id_rsa.pub`ができた。`cat ~/.ssh/id_rsa.pub`すれば中身を表示できる。

最後に`id_rsa.pub`の中身を[Githubに公開鍵を登録](https://qiita.com/yysskk/items/974c9c55d66a26515651)する。同じユーザでのsshは全て同じ鍵を使うので、登録時の名前は`ユーザが区別できる名前`だと良いのかもしれない。

これでsshを使えるようになる。（Githubの`Clone or download`ボタンで`SSH`のURLを使えばsshで接続する）

# Markorを入れてマークダウンを書きまくる
Vimで頑張っても良いが、所詮はAndroidなので専用のアプリを使ったほうが早そう。

ということで例えば[Markor: Markdown Editor](https://play.google.com/store/apps/details?id=net.gsantner.markor&hl=ja)をインストールして`*.md`を書きまくりGitで上げるといった使い方が良さそう。


# MariaDBを入れてSQLを叩きまくる
TermuxではMySQLが使えない（そもそも`pkg search mysql`でヒットしない）ので`ほぼMySQL`なMariaDBを使う。

```console
$ pkg install mariadb
```

MySQLサーバをバックグラウンドで走らせる

```console
$ mysqld &
```

MySQLサーバにrootで接続する
```console
$ mysql -u root
```

もし`ERROR 1698 (28000): Access denied for user 'root'@'localhost'`エラーが出るようなら、MySQLサーバを立てる際に権限を無視させて回避する。

```console
$ mysqld --skip-grant-tables &
```

これでSQLを叩ける。

# python3を入れてPydroid3でコーディングしまくる
まずはPython3をインストール。

```console
$ pkg install python3.7
```

Vimで頑張っても良いが、Androidなので専用アプリが良さそう。ということで[Pydroid 3 - IDE for Python 3](https://play.google.com/store/apps/details?id=ru.iiec.pydroid3&hl=ja)。

やはりアプリで書いてGitで上げる運用が良さげ。



# ubuntu-in-termuxを入れてUbuntuを動かす

[TermuxArchを使おうとしたがjavaとかがダメだった](https://qiita.com/v2okimochi/items/4b2543ec929423529163)のでubuntu-in-termuxを使った。

偶然見つけたサイトのおかげで存在を知った。とてもありがとう => https://www.sololearn.com/Discuss/1768676/java-on-termux

インストールは[ubuntu-in-termux](https://github.com/MFDGaming/ubuntu-in-termux)の手順に従う。

ほぼコピペで良いが、本稿でも補足的に紹介する。

- 1.Update termux: apt-get update && apt-get upgrade -y

おなじみのパッケージ管理をアプデしろということ。`apt-get update`と`apt-get upgrade -y`をする。

- 2.Install wget: apt-get install wget -y  
3.Install proot: apt-get install proot -y  
4.Install git: apt-get install git -y

`wget`と`proot`と`git`が必要だからインストールしておけということ。`apt-get install xxx`する。

- 5.Go to HOME folder: cd ~  
6.Download script: git clone https://github.com/MFDGaming/ubuntu-in-termux.git

ホームディレクトリ`~/`で`git clone`つまりubuntu-in-termuxのファイル群をディレクトリごとダウンロードしろということ。

※Termuxはホームディレクトリでないと権限が無くて無能

- 8.Go to script folder: cd ubuntu-in-termux  
9.Give execution permission: chmod +x ubuntu.sh  
10.Run script: ./ubuntu.sh

ダウンロードした`ubuntu-in-termux`ディレクトリに入って、`ubuntu.sh`に実行権限をつけてから実行しろということ。実行はたとえばこう。

```console
~/ubuntu-in-termux $ bash ubuntu.sh
```

- 11.Fix resolv.conf: cp ~/ubuntu-in-termux/resolv.conf ~/ubuntu-in-termux/ubuntu-fs/etc/

`~/ubuntu-in-termux/`にある`resolv.conf`を`~/ubuntu-in-termux/ubuntu-fs/etc/`にコピーしろということ。しまった。やっていない。

- 12.Now just start ubuntu: ./start.sh

いよいよubuntuを起動しろということ。たとえばこう。

```console
~/ubuntu-in-termux $ bash start.sh
```

ちなみに終了する時は`exit`で良い。

# JDKをインストールしてJavaを動かす
ubuntu-in-termuxを入れたならばJavaを使える。

まずは息を吐くように`apt-get update` & `apt-get upgrade -y`。

で、インストール可能なjdkを探す。たとえばこう。

```console
# apt-cache search jdk
```

今回は`openjdk-8-jdk`をインストールする。500MBとか持っていかれてつらい。

```console
# apt-get install openjdk-8-jdk
```

実はこういうエラーを吐かれたりしたが、一応インストールされた。

```
Errors ware encountered while processing:
  dbus
E: Sub-process /usr/bin/dpkg returned an error code (1)
```

インストールに成功すれば、インストール済みパッケージ一覧に載るはず。

```console
# dpkg -l | grep jdk
ii  openjdk-8-jdk:i386  ...
...
```

javaコマンドも使えるはず。

```console
# java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~19.04.1-b10
OpenJDK Server VM (build 25.222-b10, mixed mode)
```

# LeiningenをインストールしてClojureを動かす
ubuntu-in-termuxを入れたならばJavaが使えるということはClojureが使える
上の項目ができたならば、[Leiningen](https://leiningen.org/)の手順に従ってインストールする。本稿でも補足する。

1. 公式サイトから`wget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein`とかでleinスクリプトを持ってくる
2. `chmod +x lein`とかで`lein`に実行権限をつける
3. `lein`を`/bin/`あたりに移動する  
（`ls`コマンドとかがあるディレクトリ下に配置する。場所は`which ls`とかで調べられる）
4. `lein`って実行すれば勝手にインストールしてくれる。

インストールが終わったら以下のコマンドでreplを起動できる。`(+ 3 4)`とかで足し算して遊べる。

Clojureを楽しんでいってね。

```console
# lein repl
```