Debian noroot 環境に Synaptic を導入する

# はじめに

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

[Debian 環境][DEBI]のソフトウェアパッケージ管理は、通常コマンドライン上から ```apt-get``` コマンド若しくは ```aptitude``` コマンドを用いて行いますが、 [Debian 環境][DEBI]のソフトウェアパッケージ管理の GUI フロントエンドである [Synaptic][SYNA] を導入することで、 GUI 上から容易に [Debian 環境][DEBI]のソフトウェアパッケージのインストール等の管理を行うことが出来ます。

本稿では、[Debian noroot 環境][DBNR]における [Synaptic][SYNA] の具体的な導入手法及び導入後の起動手法について述べます。

本稿では最初に、 "[Synaptic の導入][CHAP01]" の章において、 [Debian noroot 環境][DBNR]において、デスクトップに表示されている [Synaptic][SYNA] のアイコンのクリック及びコマンドラインからのパッケージのインストールに基づく [Synaptic][SYNA] の実際の導入の手法について述べます。

次に、 "[Synaptic の起動][CHAP02]" の章において、 [Synaptic][SYNA] の導入後の実際の起動手法について述べます。

最後に、 "[結論][CHAP03]" の章において、本稿の結論について述べます。

# Synaptic の導入

本章では最初に、 "[通常の手法による導入][SEC0101]" の節において、 [Debian noroot 環境][DBNR]のデスクトップに表示されている [Synaptic][SYNA] アイコンをクリックすることにより [Synaptic][SYNA] を導入する手法について述べます。

次に、 "[手動による導入][SEC0102]" の節において、何らかの問題により[通常の導入手法][SEC0102]では正常に [Synaptic][SYNA] を導入出来ない場合に、コマンドラインから手動でパッケージをインストールすることにより [Synaptic][SYNA] を導入する手法について述べます。

## 通常の手法による導入

通常、 [Debian noroot 環境][DBNR]において [Synaptic][SYNA] を導入するには、 [Debian noroot 環境][DBNR]のデスクトップに表示されている [Synaptic][SYNA] アイコンをクリックすることにより行います。

しかし、そのまま [Synaptic][SYNA] アイコンをクリックすると、 [Synaptic][SYNA] の導入過程でデスクトップに表示される [xterm][XTRM] が日本語を適切に表示出来ないために、 [xterm][XTRM] に表示されるメッセージが文字化けする問題が発生します。

この場合は [nano][NANO] 等のテキストエディタ等を用いて、 ```~/Desktop/Synaptic.desktop``` の先頭が ```Exec=...``` で始まる行において、環境変数 ```PATH``` の設定の直前に環境変数 ```LANG, LC_ALL, LANGUAGE``` の設定を追記し、 [xterm][XTRM] の日本語表示を無効化します。

```sh:~/Desktop/Synaptic.desktop
[Desktop Entry]
...
# Exec=/bin/bash -c "xmessage -fn '-*-*-*-*-*-*-20-*-*-*-*-*-*-*' -buttons ===Install===:0,===Cancel===:1 -default ===Install=== -nearmouse 'Install Synaptic package manager?' && fakeroot-tcp /usr/bin/env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /usr/bin/xterm -bg black -fg green -xrm 'XTerm*faceName: DroidSansMono' -xrm 'XTerm*faceSize: 8' -e /bin/bash -c 'apt-get update && apt-get -y install python-support synaptic && apt-get -y install apt-xapian-index && /usr/sbin/update-apt-xapian-index && cp -f /root/.dist/Synaptic.desktop $HOME/Desktop/Synaptic.desktop || read'"
# 環境変数 PATH の設定の直前に環境変数の設定 LANG=C LC_ALL=C LANGUAGE=en を追記する。
Exec=/bin/bash -c "xmessage -fn '-*-*-*-*-*-*-20-*-*-*-*-*-*-*' -buttons ===Install===:0,===Cancel===:1 -default ===Install=== -nearmouse 'Install Synaptic package manager?' && fakeroot-tcp /usr/bin/env LANG=C LC_ALL=C LANGUAGE=en PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /usr/bin/xterm -bg black -fg green -xrm 'XTerm*faceName: DroidSansMono' -xrm 'XTerm*faceSize: 8' -e /bin/bash -c 'apt-get update && apt-get -y install python-support synaptic && apt-get -y install apt-xapian-index && /usr/sbin/update-apt-xapian-index && cp -f /root/.dist/Synaptic.desktop $HOME/Desktop/Synaptic.desktop || read'"
GenericName[en_US]=Synaptic
GenericName=Synaptic
...
```

```~/Desktop/Synaptic.desktop``` の修正後、 [Synaptic][SYNA] アイコンをクリックすると、デスクトップに ```"Install Synaptic package manager?"``` のダイアログが表示されます。
次に "===Install===" をクリックすることでデスクトップに [xterm][XTRM] が表示され、インストール過程のメッセージが英語で表示されます。
メッセージの表示が停止した後にリターンキーを押すことで [xterm][XTRM] が閉じ、 [Synaptic][SYNA] の導入が完了します。

## 手動による導入

本節では、何らかの問題により、[前節で述べた手法][SEC0101]では [Synaptic][SYNA] が正常に導入出来ない場合に、コマンドラインから手動でパッケージをインストールすることによって [Synaptic][SYNA] を導入する手法について述べます。

[Synaptic][SYNA] の導入を手動で行うには、コマンドライン上で ```apt-get``` コマンドにより ```python-support, Synaptic, apt-xapian-index``` をインストールします。

```shell-session
 # apt-get -y install python-support synaptic
 # apt-get -y install apt-xapian-index
```

次に、コマンドライン上で ```/usr/sbin/update-apt-xapian-index``` を実行し、 ```/root/.dist/Synaptic.desktop``` ファイルを ```~/Desktop``` ディレクトリ以下にコピーします。

```shell-session
 # /usr/sbin/update-apt-xapian-index
 # cp -f /root/.dist/Synaptic.desktop ~/Desktop/Synaptic.desktop
```

もし、 ```/root/.dist/Synaptic.desktop``` が適切にコピーできない場合は、 [nano][NANO] 等のテキストエディタ等を用いて ```~/Desktop/Synaptic.desktop``` ファイルを以下の内容で作成します。

```sh:~/desktop/Synaptic.desktop
[Desktop Entry]
Comment[en_US]=
Comment=
Exec=fakeroot-tcp /usr/bin/env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /usr/sbin/synaptic
GenericName[en_US]=Synaptic package manager
GenericName=Synaptic package manager
Icon=synaptic
MimeType=
Name=Synaptic
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
Version=1.0
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=
```

そして、 ```~/Desktop/Synaptic.desktop``` ファイルの所有者に実行権限をつけておきます。

```shell-session
 # chmod u+x ~/Desktop/Synaptic.desktop
```

以上の手法により、画面に [Synaptic][SYNA] のアイコンが表示され、 [Synaptic][SYNA] の導入が完了します。

# Synaptic の起動

[前章で述べた手法][CHAP01]により [Synaptic][SYNA] の導入が完了した後は、 [Synaptic][SYNA] のアイコンが正常にデスクトップに表示されていることを確認します。
そして、デスクトップに表示されている [Synaptic][SYNA] アイコンをクリックすると、以下の画像のように [Synaptic][SYNA] が起動します。

![Synaptic](https://qiita-image-store.s3.amazonaws.com/0/86258/8dd82b29-7f7e-0c28-aa39-4bac1ee5dad9.jpeg)

# <a id="chap03" name="chap03" />結論

本稿では、[Debian noroot 環境][DBNR]における [Synaptic][SYNA] の導入手法について、通常の [Debian noroot 環境][DBNR]のデスクトップに表示されている [Synaptic][SYNA] アイコンをクリックする導入手法とコマンドライン上から手動でパッケージをインストールすることによる導入手法について述べました。

[Synaptic][SYNA] の導入により、[Debian noroot 環境][DBNR]において [Debian 環境][DEBI]のソフトウェアパッケージの管理をコマンドライン上で行うことなく、 GUI 上から容易に行うことが出来るようになりました。

# 謝辞

本稿の記述に当たって、 [Android OS][ANDR] 端末上で非常に軽快な [Debian 環境][DEBI]を実現することを可能にした [Debian noroot 環境][DBNR]の開発者である [pelya 氏](https://github.com/pelya)に心より感謝致します。
そして最後に、 [Debian noroot 環境][DBNR]と [Android OS][ANDR] 及び [Debian 環境][DEBI]の全ての事に関わる全ての皆様に心より感謝致します。

<!-- 各章及び各節のリンク一覧 -->

[CHAP01]:#synaptic-の導入
[CHAP02]:#synaptic-の起動
[CHAP03]:#結論
[SEC0101]:#通常の手法による導入
[SEC0102]:#手動による導入

<!-- 外部リンク一覧 -->

[DBNR]:https://play.google.com/store/apps/details?id=com.cuntubuntu&hl=ja
[ANDR]:https://www.android.com/intl/ja_jp/
[DEBI]:https://www.debian.org/index.ja.html
[SYNA]:http://www.nongnu.org/synaptic/
[NANO]:https://nano-editor.org/
[XTRM]:http://invisible-island.net/xterm/