Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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 を無効化する手法について述べます。

次に、 "多言語化サポートパッケージ locales の導入" の節において、日本語 locale 及び地域言語化のサポートパッケージである locales の導入手法について述べます。

そして、 "環境変数 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
 $

多言語化サポートパッケージ locales の導入

次に、多言語化サポートパッケージである locales を導入します。

デフォルトでは英語以外の言語の表示に必要なものが不足しているため、後述の /proot.sh 編集後の再起動でエラーが発生し、正常に日本語化できません。

そこで、以下のコマンドを実行して、パッケージ locales をインストールします。

 $ sudo apt-get install locales

次に、 locale 関連の設定ファイルである /etc/locale.gen を下記の内容で作成します。また、既に設定ファイル /etc/locale.gen が存在するならば、下記の記述のある行についてコメントアウトを解除します。

/etc/locale.gen
ja_JP.UTF-8 UTF-8
en_US.UTF-8 UTF-8

そして、以下のコマンドを実行して、日本語及び英語の locale を生成します。

 $ sudo /usr/sbin/locale-gen

なお、全ての言語の locale を生成する場合は、以下のコマンドを実行します。

 $ sudo cp -p /usr/share/i18n/SUPPORTED /etc/locale.gen
 $ sudo /usr/sbin/locale-gen

環境変数 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 の導入及び設定手法について述べます。

そして、 "端末エミュレータを起動する為のアイコンを作成する" の節において、多言語対応の端末エミュレータである MLTerm をデスクトップ上のアイコンから起動する為の一連の設定について述べます。

最後に、 "簡易テキストエディタを日本語化する" の節において、 CUI 上で動作する簡易テキストエディタである nano の日本語化の手法について述べます。

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

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

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

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

 $ sudo apt-get install fonts-vlgothic
 $ sudo apt-get install fonts-horai-umefont
 $ sudo apt-get install fonts-umeplus

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

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

本稿では、 Debian noroot 環境において、 UTF-8 を始めとする多くの種類の文字コードが使用可能である MLTerm と、 libvte に対応した端末エミュレータである sakura を導入する事を御勧めします。本節では、 Debian noroot 環境における疑似端末の問題の解決を必要としない MLTerm の導入について説明します。

なお、端末エミュレータに sakura を使用する場合は、予め "Debian noroot 環境で擬似端末が使用出来ない問題を回避する" の投稿を参照して、 Debian noroot 環境における疑似端末の問題を解決する必要があります。

まず最初に、以下のようにしてパッケージ mlterm をインストールします。ここで、 "日本語入力メソッドを導入する" の節において後述するように、本稿において日本語メソッドに fcitx 及び mozc を導入する為、 MLTerm から fcitx を使用する為のプラグインパッケージである mlterm-im-fcitx も同時にインストールする必要があります。

 $ sudo apt-get install mlterm mlterm-im-fcitx

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

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

${HOME}/.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;

以上の設定の後、以下のコマンドを実行して MLTerm が正常に実行されることと、正常に使用出来るを確認します。

 $ mlterm

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

次に、日本語入力メソッドを導入します。

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

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

 $ sudo apt-get install fcitx-mozc
 $ sudo apt-get install im-config

次に、シェルスクリプト /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 コマンドを以下のように起動します。

 $ sudo im-config -n fcitx

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

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

端末エミュレータを起動する為のアイコンを作成する

次に、 "多言語対応の端末エミュレータを導入する" の節において導入した多言語対応の端末エミュレータである MLTerm をデスクトップ上のアイコンを用いて起動することが出来るようにするために、 MLTerm を起動する為のデスクトップ上のアイコンを作成する設定を行います。

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

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

そして、先頭が Exec=... 及び Name[en_US]=..., Name=... で始まる行を以下のように修正します。本稿では、背景色を黒に、文字色を緑に、 Unicode における "EastAsianAmbiguous" character の文字幅を2桁に、アイコンの名前を "MLTerm" に、それぞれ設定を行います。

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

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

MLTerm に壁紙を設定する

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

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

${HOME}/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 --im=fcitx -e /bin/bash -l
...

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

(MLTerm)

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

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

しかし、 Debian 環境 の unstable 版であるバージョン sid における nano は画面表示のメッセージ等が日本語に対応しています。

そこで本稿では、 Debian 環境 の sid 版の nano パッケージを導入することにより、 nano の画面表示のメッセージを日本語化します。

まず最初に、 apt-get に関する設定ファイル /etc/apt/apt.conf.d/99target を下記の内容で作成します。

/etc/apt/apt.conf.d/99target
APT::Default-Release "jessie";

次に、 apt-get に関する設定ファイル /etc/apt/sources.list の末尾に下記に示す記述を追記します。

/etc/apt/sources.list
...
# ↓ ファイルの末尾に下記の2行の記述を追記する。

deb http://ftp.jp.debian.org/debian sid main
deb-src http://ftp.jp.debian.org/debian sid main

そして、以下のコマンドを実行して、 Debian 環境 の sid 版の nano パッケージを導入します。

 $ sudo apt-get update
 $ sudo apt-get install nano/sid

以上の作業が完了した後は、以下のコマンドを実行して正常に日本語化に対応した nano がインストールされていることを確認します。

 $ which nano
 /bin/nano
 $ nano -w /proot.sh
 ...

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

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

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

(nano)

結論

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

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

そして、 Debian 環境の unstable 版である sid バージョンの nano パッケージを導入することにより、簡易テキストエディタである nano の日本語化が可能になりました。

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

謝辞

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

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

そして、 "簡易テキストエディタを日本語化する" の節において、日本語化された nano を導入に関しては kotak 氏による "Debianでtestingやunstableからパッケージを借りる時の手順" の記事を参考にしました。 kotak 氏に心より感謝致します。

また、 "多言語化サポートパッケージ locales の導入" の節において、多大なる協力を頂いた Uhucream 氏に心より感謝致します。

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

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

追記とお断り

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

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

2017/09/24 の追記

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

2017/12/19 の追記

日本語 locale 及び地域言語化サポートパッケージ locales に関する記述を追記し、本稿を改稿しました。本件に関して、御指摘を頂いた Uhucream 氏に心より感謝致します。

2018/01/18 の追記

本稿において、地域言語化サポートパッケージ locales に関する設定についての追記と、端末エミュレータ MLTerm の設定及び MLTerm を起動する為のデスクトップ上のアイコンの設定について修正を行い、本稿を大幅に改稿致しました。どうか御了承下さい。

2018/01/22 現在の追記とお断り

64 bit ARM アーキテクチャ等の環境で動作する Debian noroot 環境への Linuxbrew の導入に関する問題の解決手法について加筆を行い、本稿を改稿致しました。どうか御了承下さい。

2018/02/04 現在の追記とお断り

Linuxbrew自動的にインストールするための代替となるスクリプトの作成と公開に伴い、本稿を改稿致しました。どうか御了承下さい。

2018/02/12 現在の追記とお断り

"日本語入力メソッドを導入する" の節において、 im-config コマンドの起動に関して誤字を伴う記述がありました。深く御詫びして訂正すると共に、本件の誤りについて御指摘及び訂正を頂きました hidao 氏に心より感謝致します。

2018/04/02 の追記とお断り

本稿において、簡易テキストエディタ nano の日本語化について、 Debian 環境の unstable 版である sid バージョンの nano パッケージを導入する手法に修正し、本稿を改稿致しました。どうか御了承下さい。

2018/09/22 の追記とお断り

本稿において、設定ファイル /etc/locale.gen に関して、既に設定ファイル /etc/locale.gen が存在する場合についての記述を追記しました。

また、 $HOME/Desktop/Root-MLTerm.Desktop の作成による root 権限で動作する MLTerm を起動させるためのアイコンに動作の不具合が発生したため、当該記述を削除しました。どうか御了承下さい。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away