2011年11月16日、Ubuntu Japanese TeamはUbuntu 11.10 日本語Remixをリリースしました。従来の日本語Remixは、本家のUbuntuをベースにJapanese Teamリーダーである小林さんが温もりあふれる手作業で「リミックス」していましたが、11.10の日本語Remixはubuntu-defaults-builderという仕組みを用いて1からビルドされています[1]。ubuntu-defaults-builderとはUbuntu 11.10から提供された、自分好みにカスタマイズしたLive CDを構築するためのスクリプトと、その雛形を提供するパッケージです。
今週のレシピはこのubuntu-defaults-builderを使って、自分好みのRemix CDを作る手順を紹介します。
自分用のRemix CDを作るメリット
Ubuntuをインストールした状態でそのまま運用しているという人は少ないでしょう。たとえばUbuntuはCD一枚で提供するという都合上、デフォルトで収録されるアプリケーションは厳選されており、Emacsすらインストールされていません。そのためインストール後には必要なパッケージを手作業でインストールしなければなりません。またセキュリティアップデートがある場合は、システム全体を最新にアップデートする作業が発生します。インストールする時期によっては数100MBのパッケージをダウンロードするような場合もあるでしょう。これがPC1台だけならばそれほど問題ではありませんが、複数のPCをセットアップするような場合は、あらかじめ必要なパッケージと最新版へのアップデートを実施したCDがあれば作業を大幅に省略できます。また学校や企業などで「特定のカスタマイズを最初から施しておきたい」ような場合にも、カスタマイズCDは威力を発揮します。
日本語Remixをビルドしてみる
ubuntu-defaults-builderをインストールして、まずは日本語Remixを手元でビルドしてみましょう。日本語Remixのテンプレートとなるパッケージはubuntu-defaults-jaで、Japanese Teamのリポジトリから取得できます。大事なのは、このパッケージをapt-getでインストールするのでは"ない"ことです。アーカイブサーバからこのパッケージのdebファイルを直接ダウンロードしてください。
CDをビルドするコマンドはubuntu-defaults-imageで、このコマンドに--packageオプションでテンプレートとなるdebパッケージを指定します。ただし、それだけではビルドに失敗するはずです。日本語RemixにはAnthyの辞書管理ツールであるkasumiが標準でインストールされています(これを実現するため、ubuntu-defaults-jaパッケージがkasumiパッケージに依存するような作りになっています)。ubuntu-defaults-imageはmainとrestrictedに含まれるパッケージのみを使ってCDをビルドしようとするため、universeコンポーネントに含まれるkasumiがインストールできず、ビルドに失敗するわけです。universeやmultiverseのパッケージを含むCDを作成する場合には、ubuntu-defaults-imageコマンドの--componentsオプションを使用し、インストールに利用するコンポーネントを指定します。
また、デフォルトではarchive.ubuntu.comへパッケージを取得しに行ってしまいます。/etc/live/build.confにミラーサーバを指定することで、国内のサーバを使うことができますので、あらかじめ設定しておくとよいでしょう。
ビルド作業が完了すると、カレントディレクトリにbinary-hibrid.isoというイメージファイルが作成されています。このファイルをCDに焼けば[2]、日本語Remixとして使えます。
--localeオプションについて
ubuntu-defaults-imageのmanを読むと、--localeというオプションがあることに気づきます。各国語向けUbuntuを作るためのテンプレートは「ubuntu-defaults-ll-cc」(※3)というパッケージ名にすることが望ましいとされているのですが、--locale ll_ccを指定すると、該当する名前のパッケージを自動的にテンプレートとして使用することができます。つまりdebファイルをダウンロードする必要がなくなるわけです。将来、各国のubuntu-defaults-*がmainリポジトリに揃った時は、このオプションを使うだけで誰でも各国向けのUbuntuを手元でビルドできるようなる、というのが狙いかもしれません。中国語(zh_cn)のパッケージは今でもリポジトリにありますので、--locale zh_cnを指定すると、動作を体験することは可能です。
また現在のubuntu-defaults-imageの仕様では、追加できる外部リポジトリはPPAが一つだけという制限があります。Japanese TeamではPPAの内容をミラーしたリポジトリを自前で持っており、ubuntu-defaults-jaはここに置かれている(Japanese Teamのリポジトリを有効にしないと利用できない)ため、現状ではこの方法で日本語Remixを作ることはできません[4]。
日本語Remixをベースにカスタマイズしてみる
それでは日本語Remixをベースに、パッケージを追加したRemixを作ってみましょう。まずテンプレートとなるubuntu-defaults-jaのソースパッケージを取得します。ソースが展開されると、ubuntu-defaults-ja-11.10というディレクトリが作成されます。
依存パッケージを追加する
展開されたディレクトリの中を見てみると、dependes.txtというテキストファイルがあります。ここには文字通り、ubuntu-defaults-jaが依存するパッケージ、つまりRemixにデフォルトで追加されるパッケージを記述します。日本語Remixにはkasumiが追加されていますので、コメントの後にkasumiとだけ書かれているはずです。Remix CDにパッケージを追加したい場合は[5]、ここに必要なパッケージ名を記述してください。筆者は自分が必ず使うパッケージを一通り追記しました。
最終調整用のフックを記述する
次にhooksというディレクトリを見てみましょう。中にchrootというファイルがあるはずです。このファイルは、CDとして構築中の環境にすべてのパッケージがインストールされた後で、環境がsquashfsとしてパックされる前に実行されるシェルスクリプトです。このファイルに任意の処理を記述することで、様々な調整が行なえます。
例えば本家版のUbuntu 11.10では、一部のアプリケーションで正しい日本語フォントが使用されないという問題があります。日本語Remixではこの問題を解決するため、/etc/fonts/conf.avail/69-language-selector-ja-jp.confというファイルを差し替えているのですが、その処理はこのスクリプトに記述されています[6]。このように、たとえば/etc/skelに任意の設定ファイルを置く、などといった処理はここで実行できるでしょう。
前述のように、Japanse Teamは独自のリポジトリを使用していますので、リポジトリの追加処理もここで行なっています。さらに筆者はChromium Browserのdevチャンネルと自分のPPAを常用していますので、PPAの追加処理をここに追記しました。筆者はPPAでgimp-painter-というパッチを当てたGIMPを配布しているのですが、前述のdepends.txtでGIMPをインストール指定していますので、このタイミングでgimpパッケージが筆者のPPA版に置きかわります[7]。またapt-get upgradeを行なっていますので、システム全体が最新のパッケージに更新されます。
テンプレートパッケージを作成する
必要なパッケージやフックが記述できたら、パッケージをビルドします。ここは通常のDebianパッケージの作成と同じです。debianディレクトリにあるcontrolとchangelogファイルを編集しましょう。controlファイルはSource、Package、Maintainerを編集しておけばよいでしょう。筆者はここではパッケージ名をubuntu-defaults-mizuno-asとしました。なおこれらのファイルの雛形は /usr/share/ubuntu-defaults-builder/template/debian にありますので参考にしてください。
必要なファイルの編集が完了したら、パッケージをビルドします。ここでは-us -ucオプションを指定して、sourceとchangesファイルへの署名を省略していますが、自身のGPG鍵で署名を行なう場合はオプションを省略してください。
ビルドが完了するとubuntu-defaults-mizuno-as_11.10-0ubuntu1~ja1_all.debというパッケージが作成されます。あとはこのファイルをubuntu-defaults-imageに食わせてやれば、自分だけのRemix CDを作ることができます。