Debian noroot 環境で日本語環境を導入する

  • 9
    いいね
  • 0
    コメント

追記とお断り

2017/09/18 の追記及びお断り

本稿において、端末エミュレータ MLTerm の日本語設定の記述に誤りがありましたので、ここにお詫びして訂正し、本稿を改稿致しました。どうか御了承下さい。

2017/09/24 の追記

本稿において、簡易テキストエディタ nano の日本語化について、 Linuxbrew を用いる手法に修正し、本稿を改稿致しました。

はじめに

Debian noroot とは、 Android OS 上において root 権限を取ることなく Debian 環境を構築するためのアプリケーションです。
CPU の性能とメモリ容量が潤沢にある Android 端末であれば、 Debian noroot アプリの導入によって Android 端末上で非常に軽快な Debian 環境を実現することができます。

Debian noroot 環境は、 Debian noroot アプリをインストールした直後の初期状態において、 Debiann noroot アプリのインストール時における自動検出によって、Debian noroot 環境の locale 設定が Android OS の locale と同じ日本語に自動的に設定されますが、端末エミュレータのフォントが日本語に対応しておらず、また、日本語入力メソッドもインストールされていない状態であるため、初期状態のままでは日本語を取り扱うには不十分です。

このため、最初に Debian noroot 環境の起動初期に実行されるシェルスクリプトに日本語 locale 及び timezone に関連する環境変数の設定を行いました。次に、 Debian noroot 環境に日本語フォントと多言語対応の端末エミュレータ及び日本語入力メソッドの導入を行い、最後に簡易テキストエディタの日本語化を行うことにより、 Debian noroot 環境において、日本語環境の利用が可能になりました。

本稿では、当方の手元の端末にて動作する Debian noroot 環境で実際に行った日本語環境の構築について、環境構築の初期の段階において行う基本的な環境設定から日本語の表示及び入力が可能になるまでの一連のパッケージの導入及び設定手法について述べます。

本稿では最初に、 "初期段階で行う環境設定" の章において、日本語環境の構築の初期の段階で行う日本語 locale 等に関する環境変数の設定や timezone の設定等の基本的な設定について述べます。
次に、 "基本的な日本語化パッケージの導入" の章において、日本語の表示及び入力において必要となる日本語フォントや日本語入力メソッド等のパッケージの導入及び設定手法について述べます。
最後に、 "結論" の章において、本稿の結論について述べます。

初期段階で行う環境設定

本章では最初に、 "一時的な日本語 locale の無効化" の節において、各種コマンドライン上のエラーメッセージ等が正常に表示されない問題を回避するために一時的に日本語 locale を無効化する手法について述べます。
次に、 "環境変数 LANG, LC_ALL, LANGUAGE の設定" の節において、日本語 locale 及びアプリケーションの地域言語化に関する環境変数の設定手法について述べます。
最後に、"timezone の設定" の節において、 Debian noroot 環境における timezone の設定手法について述べます。

一時的な日本語 locale の無効化

Debian noroot 環境においては、初期状態では Debian noroot アプリのインストール時に自動的に検出される locale 関連の設定が日本語のものとなっているにも関わらず、日本語フォントがインストールされていないために各種コマンドライン上のエラーメッセージ等が正常に表示されない問題が発生します。

この場合は、後述の日本語フォントの導入から多言語対応の端末エミュレータの導入を行うまでの間、 locale 関連の環境変数 LC_ALL 等を以下のように変更して shell を起動します。

これにより、各種メッセージの表示の日本語化を一時的に無効化し、エラーメッセージ等を英語で表示させることにより、問題を回避します。

 # env LC_ALL=C LANG=C LANGUAGE=en bash
 #

環境変数 LANG, LC_ALL, LANGUAGE の設定

次に、 Debian noroot 環境における日本語 locale の指定と、アプリケーションの地域言語化対応のライブラリである gettext で使用する言語の指定のために、環境変数 LANG, LC_ALL, LANGUAGE の設定を行います。

ここで、 Debian noroot 環境において起動直後に実行されるシェルスクリプトである /proot.sh に以下の行を追記します。

/proot.sh
...
# 環境変数 LANG, LC_ALL に "ja_JP.UTF-8" を、環境変数 LANGUAGE に "ja" をそれぞれ設定する。
export LANG="ja_JP.UTF-8"
export LC_ALL="ja_JP.UTF-8"
export LANGUAGE="ja"
...

timezone の設定

最後に、 Debian noroot 環境における timezone の設定を行います。

Debian noroot 環境における timezone の設定については、通常の Debian 系のディストリビューションの場合と異なり、 Debian noroot 環境の起動時に実行されるシェルスクリプトである /proot.sh において、環境変数 TZ の値を設定することにより行います。

ここで、デスクトップマネージャの時計表示等が実際の時刻と比べて正確な時刻を表示していない (例えば UTC に基づいた時刻が表示されている等) 問題が発生している場合は、シェルスクリプト /proot.sh において環境変数 TZ の値を設定している部分を以下のように修正することにより、問題を回避します。

/proot.sh
...
#export TZ="`getprop persist.sys.timezone`"
export TZ="Asia/Tokyo"  # 若しくは TZ="Japan"
...

基本的な日本語化パッケージの導入

本章では、最初に、 "日本語フォントを導入する" の節において、多言語対応の端末エミュレータ等において日本語の表示に必要な日本語フォントである VL ゴシックフォント及び梅フォントの導入手法について述べます。
次に、 "多言語対応の端末エミュレータを導入する" の節において、多言語に対応した端末エミュレータである MLTerm 及び sakura の導入及び設定手法について述べ、 "日本語入力メソッドを導入する" の節において、日本語の入力に必要な日本語入力メソッドである fcitx 及び mozc の導入及び設定手法について述べます。
最後に、 "簡易テキストエディタを日本語化する" の節において、 CUI 上で動作する簡易テキストエディタである nano のソースコードからのビルドに基づく日本語化の手法について述べます。

日本語フォントを導入する

まず最初に、日本語を表示するためのフォントを導入します。

本稿では、 Linux の各種ディストリビューションで標準的な日本語フォントである VL ゴシックフォント及び、文字の字間が MS ゴシック等を同一に設定されているために MS ゴシック等で構成されたテキストと親和性が高い梅フォント、 Umeplus を導入します。

以下のようにして、パッケージ fonts-vlgothic, fonts-horai-umefont, fonts-umeplus をインストールします。

 # apt-get install fonts-vlgothic
 # apt-get install fonts-horai-umefont
 # apt-get install fonts-umeplus

多言語対応の端末エミュレータを導入する

次に、多言語対応の端末エミュレータを導入します。

本稿では、 Debian noroot 環境において、疑似端末の問題を起こすことなく動作させる事が可能であることと、多くの種類の文字コードが使用可能である観点から、 MLTerm に加え、 libvte に対応した端末エミュレータである sakura を導入する事を御勧めします。本節では、 MLTerm の導入について説明します。

なお、端末エミュレータに sakura を使用する場合は、予め Debian noroot 環境における疑似端末の問題を解決する必要があります。

まず、以下のようにしてパッケージ mlterm 及び sakura をインストールします。

 # apt-get install mlterm sakura

そして、ファイル ~/Desktop/XTerm.desktop~/Desktop/MLTerm.desktop にコピーします。この時、 ~/Desktop/MLTerm.desktop にファイル所有者に対して実行権限をつけるのを忘れないようにします。

 # cp -p ~/Desktop/XTerm.desktop ~/Desktop/MLTerm.desktop
 # chmod u+x ~/Desktop/MLTerm.desktop

そして、 MLTerm の使用フォントを設定するために設定ファイル ~/.mlterm/aafont を以下のように作成します。本稿では VL ゴシックフォントを使用する設定を行います。

ここで、 MLTerm のフォントに梅ゴシックを使用する場合は、設定ファイル ~/.mlterm/aafont において、 VL Gothic と記述された部分を Ume Gothic に置き換え、また、他のフォントを使用する場合は、 fc-list コマンドの出力に基づいたフォント名に置き換えます。

~/.mlterm/aafont
# 本ファイルでは、VL ゴシックフォントを用いる設定を行う。
ISO8859_1               = VL Gothic-iso8859-1:100;
ISO8859_1_BOLD          = VL Gothic-iso8859-1:100;
JISX0201_KATA           = VL Gothic-iso10646-1:100;
JISX0201_KATA_BOLD      = VL Gothic-iso10646-1:100;
JISX0201_ROMAN          = VL Gothic-iso10646-1:100;
JISX0201_ROMAN_BOLD     = VL Gothic-iso10646-1:100;
JISX0208_1983           = VL Gothic-iso10646-1:100;
JISX0208_1983_BOLD      = VL Gothic-iso10646-1:100;
ISO10646_UCS2_1         = VL Gothic-iso10646-1:100;
ISO10646_UCS2_1_BIWIDYH = VL Gothic-iso10646-1:100;
ISO10646_UCS4_1         = VL Gothic-iso10646-1:100;
ISO10646_UCS4_1_BIWIDTH = VL Gothic-iso10646-1:100;

そして、先頭が Exec=... で始まる行を以下のように修正します。

本稿では、背景色を黒に、文字色を緑に、 Unicode における "EastAsianAmbiguous" character の文字幅を2桁に、それぞれ設定を行います。

~/Desktop/MLTerm.desktop
[Desktop Entry]
...
# Exec=... で始まる行を以下の通り修正する。
Exec=mlterm -w 20 --bg=black --fg=green --ac 2 -e /bin/bash -l
...
Name[en_US]=MLTerm
Name=MLTerm
...

~/Desktop/Root-XTerm.desktop も同様に ~/Desktop/Root-MLTerm.desktop にコピーして、ファイル所有者に実行権限を付与します。

 # cp -p ~/Desktop/Root-XTerm.desktop ~/Desktop/Root-MLTerm.desktop
 # chmod u+x ~/Desktop/Root-MLTerm.desktop

そして、 先頭が Exec=... で始まる行を次のように修正します。

~/Desktop/Root-MLTerm.desktop
...
# /usr/bin/mlterm 以下は ~/Desktop/MLTerm.desktop における修正と同様。
Exec=fakeroot-tcp /usr/bin/env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /usr/bin/mlterm -w 20 --bg=black --fg=green --ac 2 -e /bin/bash -l
...
Name[en_US]=Root MLTerm
Name=Root MLTerm
...

以上の設定により、デスクトップ上に MLTerm のアイコンが表示されるので、 MLTerm アイコンをクリックして MLTerm の正常な起動と MLTerm 上で正常な日本語の表示が行われていることを確認します。

MLTerm に壁紙を設定する

なお、上記の設定に加えて mlterm コマンドに --pic オプションをつけて起動させる様に設定を修正することにより、 MLTerm に壁紙を表示させる事が出来ます。

例えば /home/user/Picture/wallpaper.jpg に壁紙ファイルをおいて、 ~/Desktop/MLTerm.desktop を以下のように修正します。

~/desktop/MLTerm.desktop
[Desktop Entry]
...
# mlterm コマンドに --pic オプションを追記する。
Exec=mlterm -w 20 --pic=/home/user/Picture/wallpaper.jpg --bright=50 --bg=black --fg=green --ac 2 -e /bin/bash -l
...

以上の設定の修正後、 MLTerm のアイコンをクリックすると以下の画像のような MLTerm を起動させることが出来ます。

(MLTerm)

日本語入力メソッドを導入する

続いて、日本語入力メソッドを導入します。

本稿では、各種ディストリビューションにおいて標準的な日本語入力メソッドである fcitx 及び mozc を導入します。

まずは、以下のようにパッケージ fcitx-mozc をインストールします。また、 X Window System において日本語入力メソッドの設定を行うために、パッケージ im-config も同時にインストールします。

 # apt-get install fcitx-mozc
 # apt-get install im-comfig

次に、シェルスクリプト /proot.sh に以下の行を追記します。

/proot.sh
...
export XMODIFIERS="@im=fcitx"
export QT_IM_MODULE=fcitx
export QT4_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx
export CLUTTER_IM_MODULE=fcitx
...

そして、 X Windows system での日本語入力メソッドを fcitx に設定するために im-config コマンドを以下のように起動します。

 # im-comfig -n fcitx

以上の設定の後、 Debian noroot 環境を再起動させると、 fcitx が使用できるようになります。

なお、 fcitx の設定は設定メニューから "fcitx の設定" を選択して行いますが、漢字変換に関する keybind の設定は Android OS 上で使用している IME の keybind (例えば Ctrl+Space 及び Shift+Space 等) と衝突しないような keybind (例えば Zenkakuhankaku 若しくは Super+Space 等) を使用する必要があります

簡易テキストエディタを日本語化する

Debian noroot 環境上で標準でインストールされている簡易テキストエディタである nano は、デフォルトでの状態では、画面表示のメッセージ等が日本語化されていない為に若干不便です。

そこで本稿では、 Linux の各ディストリビューション上におけるソースコードの取得及びビルドに基づいたパッケージ管理システムである Linuxbrew を用いて、地域言語化に対応した nano を導入し、 nano の画面表示のメッセージを日本語化します。

まずは、 thermes 氏による "Linuxbrew のススメ" の記事及び Linuxbrew の公式ページに基づいて Linuxbrew に依存するパッケージと Linuxbrew のリポジトリを導入します。

 # apt-get install build-essential curl file git python-setuptools ruby # superuser での実行。
 ...
 $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)"   # 一般ユーザでの実行。

そして、 bash の初期化ファイルである ~/.bashrc に以下の通りに環境変数の設定を行い、 bash を再起動します。特に、 Linuxbrew において、 brew install コマンドの実行を迅速にするため、環境変数 HOMEBREW_NO_AUTO_UPDATE を 1 に設定し、 brew install コマンド等において、 Linuxbrew のリポジトリが毎回更新されるのを抑止します。

~/.bashrc
...
# for Linuxbrew

export HOMEBREW_PREFIX="/home/linuxbrew/.linuxbrew"
export PATH="${HOMEBREW_PREFIX}/sbin:${HOMEBREW_PREFIX}/bin:$PATH"
export MANPATH="${HOMEBREW_PREFIX}/share/man:${MANPATH}"
export INFOPATH="${HOMEBREW_PREFIX}/share/info:${INFOPATH}"
export HOMEBREW_NO_AUTO_UPDATE=1
...

次に、以下の通りに brew install コマンドを実行して、 Linuxbrew より地域言語化に対応した nano を導入します。

ここで、 nano の導入の簡略化のため、 Linuxbrew における nano の依存パッケージを Debian noroot 環境において予めインストールして依存関係を解決し、以下のようにして brew install コマンドを実行します。

 $ sudo apt-get install libncursesw5-dev gettext pkg-config libmagic-dev    # Debian から依存パッケージを導入
 $ brew install --ignore-dependencies -dv nano  # 依存関係を無視して nano を導入する。

なお、導入中のコンパイルに非常に時間がかかりますが、以下のようにして依存関係にあるソフトウェアを全て含めて Linuxbrew を用いて nano を導入しても良いでしょう。

 $ brew install -dv nano

そして、コマンドラインから which nano と入力して正常に地域言語化に対応した nano がインストールされていることを確認します。

 # which nano
 /home/linuxbrew/.linuxbrew/bin/nano

最後に、 nano の設定ファイルである /etc/nanorc をホームディレクトリの直下にコピーします。

 $ cp -p /etc/nanorc $HOME/.nanorc

上記の手法により、以下の画像のように nano の表示画面のメッセージが日本語化されました。

(nano)

結論

前々章で述べた初期の段階での基本的な設定により、 Debian noroot 環境上での適切な locale 設定と gettext ライブラリでの言語設定及び、適切な timezone の設定を行いました。

また、前章で述べた基本的な日本語化パッケージの導入及び設定により Debian noroot 環境において多言語対応の端末エミュレータである MLTerm から日本語の表示を行うことが可能になり、日本語入力メソッドである fcitx 及び mozc を介して日本語を入力を行うことが可能になりました。

そして、地域言語化された nanoLinuxbrew によって導入することにより、簡易テキストエディタである nano の日本語化が可能になりました。

以上の Debian noroot 環境の日本語環境の導入に関する設定により、 Debian noroot 環境において、日本語環境の利用が可能になりました。

謝辞

なお、Debian noroot 環境の日本語環境構築等、各種環境設定に当たっては、以下の Web page の内容を参考にしました。 以下の Web page の作者である msmrrenda 氏AbyssLuke 氏に心より感謝致します。

また、 MLTerm の日本語フォント設定に関しては、 "mltermで小夏フォントを使う - とりあえず暇だったし何となく始めたブログ" の記事を参考にしました。記事の著者である khiker 氏に心より感謝致します。

そして、 "簡易テキストエディタを日本語化する" でも述べた通り、 Linuxbrew の導入に関しては thermes 氏による "Linuxbrew のススメ" を参考にしました。 thermes 氏に心より感謝致します。

また、本稿の記述に当たって、 Android OS 端末上で非常に軽快な Debian 環境を実現することを可能にした Debian noroot 環境の開発者である pelya 氏に心より感謝致します。

そして最後に、 Debian noroot 環境Android OS 及び Debian 環境の全ての事に関わる全ての皆様に心より感謝致します。