ipkgは、the Familiar Project が開発したパッケージングシステムです。Debianのdpkgを参考にしていますが、 組み込み向けに仕様をシェイプアップされています。
Zaurusでも、このipkgが採用されています。
ipkgの構造は割と単純です。拡張子.ipkというファイルの実態はtar + gzipされた ファイルそのものであり、その中には制御ファイルを含むcontrol.tar.gz、 実際のデータ等を含むdata.tar.gz、そして識別ファイルdebian-binaryが含まれています。
.ipkファイルを作成する手順は以下の通りです。
配置したいデータファイルを、作業ディレクトリ上に用意します。 例えば、/home/root/README.test というファイルを含むipkgを作成したい場合は、 作業ディレクトリ上に home/root/README.test というファイルを用意します。
SDカードなど本体メモリ以外にもインストール可能にするためには、 /opt/QtPalmtop/ 以下にファイルを配置する必要があります。 iPAQ Pocket PC 用の Linux ディストリビューションである Familiar には、/home/QtPalmtop が存在しませんので、 /opt/QtPalmtop/ 以下に配置することで、 Zaurus、iPAQ 両用の ipkg にできる可能性があります。
作業ディレクトリ上に CONTROL というディレクトリを作成し、その中に 制御ファイルを用意します。
制御ファイルには以下のものがあります。
controlは必ず用意しなければなりません。それ以外は必要な場合のみ 用意します。
prerm と postrm はインストール時に /usr/lib/ipkg/info/ ディレクトリに パッケージ名と共に格納され、当該パッケージが削除される日を待ち続けます。 preinst, postinst, prerm, postrm の各スクリプトは root 権限で実行されますので十分にテストしておいてください。
conffiles には、バージョンアップ等で上書きしたくない設定ファイルがあれば、 絶対パスで 1 行に 1 つづつ記述します。 GUI 版インストーラ「ソフトウェアの追加/削除」は無条件で上書きしません。 ターミナル版インストーラ ipkg は上書きするかどうか問い合わせてきます。
controlファイルの書式を、例を挙げて説明します。以下はimkit-anthy パッケージのcontrolファイルです。
Package: imkit-anthy Priority: optional Section: misc Version: 0.3.3-1 Architecture: arm Maintainer: Takatsugu NokubiDepends: anthy Description: Anthy inputmethod plugins The package is Japanese inputmethod plugins for Qtopia using Anthy.
各行毎に、「フィールド名:」「値」が記述されています。各フィールドの意味は 以下の通りです。
必要なファイルを一通り用意した上で、ipkg-build コマンドを使用して パッケージを作成します。
ipkg-build は ftp://lorien.handhelds.org/pub/linux/feeds/demo/ にある ipkg-tools.tgz に含まれています。
作業ディレクトリ上にファイルを配置し、"ipkg-build ディレクトリ" を実行することでパッケージが作成されます。
以下は実行例です。
$ find imkit-anthy imkit-anthy imkit-anthy/opt imkit-anthy/opt/QtPalmtop imkit-anthy/opt/QtPalmtop/plugins imkit-anthy/opt/QtPalmtop/plugins/inputmethods imkit-anthy/opt/QtPalmtop/plugins/inputmethods/libimkit-anthy.so.0.3.3 imkit-anthy/opt/QtPalmtop/plugins/inputmethods/libimkit-anthy.so imkit-anthy/opt/QtPalmtop/plugins/inputmethods/libimkit-anthy.so.0 imkit-anthy/opt/QtPalmtop/plugins/inputmethods/libimkit-anthy.so.0.3 imkit-anthy/opt/QtPalmtop/i18n imkit-anthy/opt/QtPalmtop/i18n/ja imkit-anthy/opt/QtPalmtop/i18n/ja/libimkit-anthy.qm imkit-anthy/CONTROL imkit-anthy/CONTROL/control $ fakeroot ./ipkg-build imkit-anthy fakeroot ./ipkg-build imkit-anthy Packaged contents of imkit-anthy into ./imkit-anthy_0.3.3-1_arm.ipk
上記のように fakeroot コマンドを用いて、 パッケージに含める各ファイルの所有者を root にしておいた方がよいでしょう。 fakeroot は Debian パッケージにあります (リンク集参照)。 fakeroot がない場合は以下のように root になって chown します。
# chown -R root:root imkit-anthy # ipkg-build imkit-anthy Packaged contents of imkit-anthy into ./imkit-anthy_0.3.3-1_arm.ipk