Ubuntu 16.04 aarch64環境でmozc pkgが無いのでsource pkgからbuild

EDIT: 現在は次の記事の手順のほうが良いと思います -> Debian, Ubuntu で 上流のパッケージを借りてくる – matoken’s meme

最近Ubuntu 16.04 aarch64のi3 wmにモニタとキーボードを繋いでデスクトップ利用を試しています．しかし，日本語入力のためのmozcのバイナリパッケージが見当たりません．確認すると，xenialからartfulではi386/amd64/armhfのみの対応．

Ubuntu ? Package Search Results — mozc

Debianではarmelも対応していますが，arm64はやっぱりありません．

Debian — Details of package mozc-server in jessie

armhf/armelで動いているならarm64もあまり悩まずソースパッケージからbuildできるのではと試してみました．

＃dpkg –add-archtecture armhfしてMultiarchにしてarmhfのMozcを使うという手でも行けそうな気はする．(未確認)

環境構築

必要なパッケージの導入と，ソースパッケージの入手を行います．

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install build-essential devscripts
$ sudo apt build-dep fcitx-mozc
$ apt source fcitx-mozc

apt build-depは指定したパッケージをbuildするのに必要なパッケージを導入できます．

apt sourceは指定したパッケージのソースパッケージを導入して展開してくれます．

※もしソースパッケージが見つからない場合はsource.listにdeb-srcの行があるか確認してみてください．無ければapt edit-sourcesコマンドで/etc/apt/source.listファイルを編集してdeb-srcを有効にしてください．以下のページが参考になると思います．

https://help.ubuntu.com/community/Repositories/CommandLine

Archtectureにarm64を追加してバイナリパッケージ作成

次にソースディレクトリに降りて，debian/controlファイルを開き，必要なパッケージのArchtectureにarm64を登録します．mozc-dataはallなのでそのままにしておきます．（はじめarm64をaarch64にしてうまく行かなかったですorz）

$ cd mozc-2.17.2116.102+gitfd0f5b34+dfsg
$ cp debian/control debian/control.org
$ vi debian/control
$ diff -u debian/control.org debian/control
--- debian/control.org 2017-05-30 17:06:44.000000000 +0000
+++ debian/control 2017-05-30 17:07:19.000000000 +0000
@@ -28,7 +28,7 @@
This open-source project originates from Google Japanese Input.
mozc-data
Package: ibus-mozc
-Architecture: i386 amd64 armel armhf
+Architecture: i386 amd64 armel armhf arm64
Depends: ${misc:Depends}, ${shlibs:Depends}, mozc-data,
ibus (>= 1.2), mozc-server (= ${binary:Version}), tegaki-zinnia-japanese
Recommends: mozc-utils-gui (= ${binary:Version}) dpkg-buildpackage
@@ -45,7 +45,7 @@
This open-source project originates from Google Japanese Input.
mozc-data
Package: fcitx-mozc
-Architecture: i386 amd64 armel armhf
+Architecture: i386 amd64 armel armhf arm64
Depends: ${misc:Depends}, ${shlibs:Depends}, fcitx-bin, fcitx-data, fcitx-modules,
mozc-server (= ${binary:Version}), mozc-data, tegaki-zinnia-japanese
Recommends: fcitx, mozc-utils-gui (= ${binary:Version})
@@ -64,7 +64,7 @@
fcitx-mozc provides client part of the Mozc input method.

Package: emacs-mozc
-Architecture: i386 amd64 armel armhf
+Architecture: i386 amd64 armel armhf arm64
Depends: ${misc:Depends}, emacs | emacs23 | emacs24, emacs-mozc-bin (= ${binary:Version})
Conflicts: emacsen-common (<< 2.0.0)
Description: Mozc for Emacs
@@ -76,7 +76,7 @@
This open-source project originates from Google Japanese Input.

Package: emacs-mozc-bin
-Architecture: i386 amd64 armel armhf
+Architecture: i386 amd64 armel armhf arm64
Depends: ${misc:Depends}, ${shlibs:Depends}, mozc-server (= ${binary:Version})
Description: Helper module for emacs-mozc
Mozc is a Japanese Input Method Editor (IME) designed for multi-platform
@@ -87,7 +87,7 @@
This open-source project originates from Google Japanese Input.

Package: mozc-server
-Architecture: i386 amd64 armel armhf
+Architecture: i386 amd64 armel armhf arm64
Depends: ${misc:Depends}, ${shlibs:Depends}
Multi-Arch: foreign
Description: Server of the Mozc input method
@@ -99,7 +99,7 @@
This open-source project originates from Google Japanese Input.

Package: mozc-utils-gui
-Architecture: i386 amd64 armel armhf
+Architecture: i386 amd64 armel armhf arm64
Depends: ${misc:Depends}, ${shlibs:Depends}, mozc-data
Recommends: mozc-server (= ${binary:Version})
Suggests: ibus-qt

次にdpkg-buildpackageコマンドでパッケージを作成します．手元のマシンではちょうど1時間ほどで終了しました．（あとで-j4とかすると30分ほどに）

$ dpkg-buildpackage -us -uc
$ ls ../*.debmozc-data
../emacs-mozc-bin_2.17.211archtecture6.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb ../ibus-mozc_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb ../mozc-utils-gui_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb
../emacs-mozc_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb ../mozc-data_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_all.deb
../fcitx-mozc_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb ../mozc-server_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb

出来上がったパッケージの導入

今回はfcitxを使っていたので，fcitx-mozcを導入しました．導入した後にログインしなおして，fcitx-config-gtkを起動するとMozcが登録されて利用できるようになりました． :)

$ sudo apt-get install ../mozc-server_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb ../mozc-data_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_all.deb ../fcitx-mozc_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb ../mozc-utils-gui_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb

重かったり不具合が出るようならskkあたりにしようかと思っていましたが，現在このパッケージを1週間ほど利用して特に問題なく使えています．

あまり推奨しませんが，私の作ったパッケージをしばらく以下においておきます．必要な方は試してみてください．（上の手順に + dhc -i + dpkg-buildpackage -j4したもの）

Yandex.Disk

ところでこれはどうすればいいのかな．Debianでも動作確認してバグレポでok?そしてUbuntuはSync mozc from Debian unstableを待つ感じ?

Bugs : mozc package : Ubuntu

Bugs in package mozc-server (version 2.19.2623.102+dfsg-1) in unstable – Debian Archived Bug report logs