TermuxArchを使ってTermuxでJavaを使おうとしたがダメだった

# 多分こうだと思う

Androidの側が64bitじゃないとダメ

逆に64bitなら大丈夫らしい（64bitじゃなかったので知らない）


# 試行錯誤
## TermuxArchインストール
[TermuxArch](https://github.com/SDRausty/TermuxArch)をgitでダウンロードする。
ただcloneするだけなら`TermuxArch`ディレクトリができるが、ディレクトリ移動時に大文字を打つのがしんどいのでディレクトリ名を`termuxarch`にさせている。

```console
$ git clone https://github.com/SDRausty/TermuxArch.git termuxarch/
```

作ったディレクトリに入って、setupファイルを実行する。

```console
~/termuxarch $ bash setupTermuxArch.sh
```

なんか怒られる。

```
necessaryfunctions.sh: line 106: /data/data/com.termux/files/usr/bin/applets/uname: No such file or directory

TermuxArch WARNING: Generated script signal 201 near or at line number 600 by `trap`!
```

`/data/data/com.termux/files/usr/bin/applets/`に`uname`が無いぞ、と言われている。

直下のWARNINGは恐らくそれに起因する問題。

`which uname`で場所を調べてみると`/data/data/com.termux/files/usr/bin/uname`とあり、確かにbin直下のappletsディレクトリには存在しない。

仕方ないのでappletsにリンクを貼る。
ハードリンクにしてしまったが、-sオプションで[シンボリックリンク](https://qiita.com/katsuo5/items/fc57eaa9330d318ee342)にしても大丈夫。

```console
$ ln /data/data/com.termux/files/usr/bin/uname /data/data/com.termux/files/usr/bin/applets/uname
```

もう一度`setupTermuxArch.sh`を実行すると、ちゃんと動く。

しかしまた類似エラー。

```
necessaryfunctions.sh: line 298: /data/data/com.termux/files/usr/bin/applets/md5sum: No such file or directory

WARNING md5sum mismatch! The download failed and was removed! ...
```

同じく`/data/data/com.termux/files/usr/bin/applets/`に、今度は`md5sum`が無いらしい。つらい。無の心でリンクを貼る。

```console
$ ln -s /data/data/com.termux/files/usr/bin/md5sum /data/data/com.termux/files/usr/bin/applets/md5sum
```

これでインストールできた。終わると以下のように訊かれる。

```
Cleaning up installation files: DONE

Arch Linux in Termux is installed. Configuring and updating Arch Linux. Change the worldwide CMIRROR to a CMIRROR that is geographically nearby. Choose only ONE active CMIRROR in the CMIRRORs file that you are about to edit. Would you like to use nano or vi to edit the Arch Linux configuration files? Answer nano or vi [n|V]? 
```

ArchLinuxの設定ファイルを編集するためのエディタは`nano`と`vim`どっちが良いか訊かれている。

僕はvimを使うので`v`を押してEnter（そのままEnterでも良い）。
nano使いなら`n`を押してEnter。

ArchLinuxの設定ファイルが開く。
ここでサーバを選択しておかないと詰む。TermuxArchは初期設定でエディタが無いので、「パッケージをインストールしたいがサーバが選択されていないのでできず、サーバを選択するためにファイルを書き換えたいがエディタが無い」となる。なぜエディタを入れないのか。


保存して終了するとArchLinuxが起動する。

## TermuxArchを終了するには

```console
$ exit
```

以下のメッセージと共にTermuxへ戻る。

```
Arch Linux in Termux PRoot is installed in /data/data/com.termux/files/home/arch.
...

Use ~/arch/startarch and startarch in a BASH shell to launch Arch Linux in Termux PRoot for future sessions. ...
```

要するに「ArchLinuxは`/data/data/com.termux/files/home/arch`ディレクトリ下にインストールされたよ。起動するにはbashコマンドで`startarch`を実行してね」である。

（`setupTermuxArch.sh`を実行しようとしても、既にインストール済みなのでエラーを吐かれる。）

## TermuxArchをアンインストールするには

ここに書いてある => https://github.com/sdrausty/termux-archlinux/issues/3

Termuxで以下のコマンドを打てば良い。

```console
$ bash setupTermuxArch.sh purge
```

## DNSサーバを設定してネット接続できるようにする
初期設定では`なんとDNSサーバが設定されていない`。~~ネットに繋がらなければただの箱~~

なのでパッケージを更新しようとしても`Could not resolve host`と怒られる。

しかも`エディタが無い`。もはや何もできない。ひどすぎる。

苦肉の策としてechoコマンドで無理やり編集する。`/etc/resolv.conf`にネームサーバの設定を加える。

```console
$ echo "nameserver 8.8.8.8" >> /etc/resolv.conf
```

## ミラーサーバを設定してパッケージ管理できるようにする

DNS問題を解決しても、初期設定のサーバでは`The requested URL returned error: 404 Not Found`とか言われる。ひどい。

正確なURLはたとえばこう。

```
core:
http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/core/os/x86_64/

extra: http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/extra/os/x86_64/
```

これらを`/etc/pacman.d/mirrorlist`に追記する。
エディタが使えないのでechoコマンドでゴリ押しする。こんな感じで。

```console
$ echo "Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/core/os/x86_64/" >> /etc/pacman.d/mirrorlist
```

これで一応パッケージ管理を使えるようになる。


## ArchLinuxにエディタなどパッケージのインストール
TermuxArchでインストールしたArchLinuxでは、パッケージ管理にそれぞれ以下のような操作が必要。起動時に表示される。

```
Welcome to Arch Linux in Termux!
Install a package: pacman -S package
More information: pacman -[D|F|Q|R|S|T|U]h
Search packages: pacman -Ss query
Upgrade packages: pacman -Syu
```

しかしこれらは64bit用。`jdk8-openjdk`のようなパッケージはあるが、インストールしようとしても`package xxx does not have a valid architecture`と言われる。

`core`や`extra`に加えて`multilib`を許可すると32bit版のライブラリを使えるらしいが、そこにjdkは見つからなかった。

# まとめ

64bitじゃないとダメみたい。