以下の内容はhttps://ujimushisradjp.hatenablog.jp/entry/2024/12/29/162251より取得しました。


Android上で動くubuntu環境,userlandのターミナルでEmacsとJulia言語の環境を構築する

きっかけ

帰省する時にEmacsJulia言語が動く環境があればいいなと思いました。 といってもパソコンを持って帰るのはやり過ぎで,かといってスマートフォンは画面が小さく 年寄りの視力では辛そうです。

そこで,AndroidタブレットEmacsJulia言語が同時に動く環境を作ろうと思いました。 で,快適に使うためにはネイティブにprecompileできる28以降のバージョンが動作するといいなと思いました。

UserLandの記事に関してネット上ではGUI環境を構築する方法が多いのですが, ここではあえてターミナルでの動作前提の環境構築をしたいと思います。

環境の選定

androidlinuxっぽい環境を動かすにはTermuxUserlandの二種類があるのですが、 Termuxはglibcを使っていないので,julia言語を動作させるのにハードルが高く, ただ,Userlandubuntu22.04Emacsのバージョンが27.1と低く… というところで,どうするかと迷ったのですが,ubuntuならEmacsをビルドしてしまえばええか,ということで Userlandで環境を構築します。

ubuntuのインストール後の日本語対応処理

Userlandにubuntuをインストールした後,日本語環境に対応するため,セットアップしていきます。

ネットの情報を頼りに構築してきます。

sudo apt -y install language-pack-ja
sudo update-locale LANG=ja_JP.UTF-8
sudo update-locale LC_ALL=ja_JP.UTF-8
sudo dpkg-reconfigure tzdata

sudo dpkg-reconfigure tzdataでは,アジアのTokyoを選ぶようにします。

そして~/.profileに次の行を追加して再ログインします。

export LANG=ja_JP.UTF-8

emacs-29.4のビルド

次にEmacs-29.4のビルドを行います。

次はあまり必要がないかもしれませんが,後々効いてくるので あらかじめインストールしておいた方がいいかもしれません。

sudo apt install ca-certificates

そして,/etc/apt/sources.listをいじってEmacsのソースパッケージにアクセスできるようにします。 これは,emacsのビルドに必要なパッケージを簡便にダウンロードするために必要です。

deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy universe

deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-updates universe

あたりのコメントアウト(行の先頭の#を消す)でEmacsのソースパッケージにアクセスできるようになると思います。

そして次の一連のコマンドを実行します。 ... build-dep ...Emacs(27.1)のビルドに必要な一連のパッケージをインストールします。 libgccjit-11-devは28以降が対応しているネイティブコンパイル対応版ビルドに必要なパッケージ, libtree-sitter-devは29以降が対応しているtree-sitter対応版ビルドに必要なパッケージです。

sudo apt update
sudo apt build-dep emacs-gtk
sudo apt install libgccjit-11-dev
sudo apt install libtree-sitter-dev
wget http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-29.4.tar.gz 
tar -xzf emacs-29.4.tar.gz 

そして,ビルドしてインストールします。フラグはネット検索でおすすめと 書いてあったもので,実際いいのかどうかはよく分かりません。

cd emacs-29.4
./autogen.sh 
./configure --prefix=$HOME/.local --with-native-compliation \
 --with-mailutils --with-tree-sitter \
 CFLAGS="-O2 -pipe -march=native -fomit-frame-pointer"
make
make install

ctrl-spaceを活かす設定

標準ではターミナル上でctrl-spaceを入力するとandroid 11以降だったかではOSにキー入力を奪われるので, 対策を実施します。

/host-rootfs/data/data/tech.ula/files/home/.termux/termux.propertiesという設定ファイルに

ctrl-space-workaround=true

を書くといいのですが,現実的には$HOMEtermux.propertiesというファイルを作って上記のように記入し,

sudo mkdir -p /host-rootfs/data/data/tech.ula/files/home/.termux/
cp termux.properties /host-rootfs/data/data/tech.ula/files/home/.termux/

という感じで設定するのが現実的かと思います。

uim-mozcの設定

Emacs上ではtc.elが動くので日本語の入力の問題はないのですが,ターミナル上でも 日本語が入力できるように対策をします。

ネットから集めた情報から次のような一連の処理を行います。

おもむろに次のコマンドを実行します。 ~/.configを作っておかないとuim-mozcがうまく起動してくれないので,先に作っておきます。 ポイントはuim-module-manager --register mozcmozcuimへ手動で登録する必要があることです。

mkdir ~/.config
sudo apt install uim-fep uim-mozc
uim-module-manager --register mozc

ここで,色々試してみたのですがuim-mozcの日本語入力モードとの切り替えをWindowsと同じっぽく Alt-` で行います。

~/.uimを次のように記述します。

(define default-im-name 'mozc)
(define-key generic-on-key? '("<Alt>`"))
(define-key generic-off-key? '("<Alt>`"))

なお,bluetooth等で接続しているキーボードの配列は 設定の「言語と入力/物理キーボード」で物理キーボードの名前を選んでキーボードレイアウトの選択 をすれば変更できるかと思います。

英語キーボードを使っているので基本的にデフォルト設定そのままです。

そして,uim-fepコマンドで日本語入力環境が動きます。

とりあえずはこれで一通りでしょうか。

Julia言語のインストール

おっと,忘れていました。といっても特にやることはあまりなくて, 公式サイトのインストール方法 にもあるように,次のコマンドを実行するだけです。

curl -fsSL https://install.julialang.org | sh

glibcを使っていないTermuxではこうはいかず,今回Userlandを使った理由でもあります。

動作例

次のような感じです。

というか,うまくgifファイルをアップロードすることができませんでした…

おまけというか…

一応,tailscaleと組み合わせて外から家のPCにつないでEmacsのLLMクライアントであるEllamaの 利用も出来そうということは確認しています。

OLLAMA_ORIGINSの設定でタブレットPCにも許可した後,EllamaOllama設定を変更するとか, 私の場合は踏み台サーバーにtailscalessh -Lオプションでollamaの動作PCのポートをタブレットollamaの ポート番号にリンクして利用できそうという感じです。

ただ,この年末年始にはそこまではしない予定です。




以上の内容はhttps://ujimushisradjp.hatenablog.jp/entry/2024/12/29/162251より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14