Posted at

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


多分こうだと思う

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

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


試行錯誤


TermuxArchインストール

TermuxArchをgitでダウンロードする。

ただcloneするだけならTermuxArchディレクトリができるが、ディレクトリ移動時に大文字を打つのがしんどいのでディレクトリ名をtermuxarchにさせている。

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

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

~/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オプションでシンボリックリンクにしても大丈夫。(シンボリックリンク

$ 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が無いらしい。つらい。無の心でリンクを貼る。

$ 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の設定ファイルを編集するためのエディタはnanovimどっちが良いか訊かれている。

僕はvimを使うのでvを押してEnter(そのままEnterでも良い)。nano

使いならnを押してEnter。

ArchLinuxの設定ファイルが開く。

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

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


TermuxArchを終了するには

$ 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で以下のコマンドを打てば良い。

$ bash setupTermuxArch.sh purge


DNSサーバを設定してネット接続できるようにする

初期設定ではなんとDNSサーバが設定されていないネットに繋がらなければただの箱

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

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

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

$ 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コマンドでゴリ押しする。こんな感じで。

$ 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と言われる。

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


まとめ

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