dpkg
と apt
を騙して、抜け殻に過ぎない幾つかのパッケージがインストールされていると信じこませる事にあります。これを使うことで、あるソフトウェアの依存関係を満足させるために必要なソフトウェアがパッケージシステムの管轄外にインストールされている場合に、そのソフトウェアの依存関係を満足させる事が可能です。この方法は問題を解決しますが、これはできる限り避けるべき方法です。なぜなら、手作業でインストールされたソフトウェアが対応するパッケージと全く同様に振る舞う保証はありませんし、手作業でインストールされたソフトウェアに依存する他のパッケージが適切に動く保証もないからです。
equivs-control
と equivs-build
コマンド (equivs パッケージに含まれます) を使って作成されます。equivs-control file
コマンドは Debian パッケージヘッダファイルを作成します。 Debian パッケージヘッダファイルには、パッケージの名前、バージョン番号、メンテナ、依存関係、説明を含めるように編集します。デフォルト値を持たない他のフィールドは任意で、削除する事も可能です。Copyright
、Changelog
、Readme
、Extra-Files
フィールドは Debian パッケージの標準的なフィールドではありません; これらのフィールドは equivs-build
を使う限りにおいて意味を持つものであり、生成されるパッケージのヘッダから削除されるべきです。
例15.2 libxml-libxml-perl 偽物のパッケージのヘッダファイル
Section: perl Priority: optional Standards-Version: 3.8.4 Package: libxml-libxml-perl Version: 1.57-1 Maintainer: Raphael Hertzog <hertzog@debian.org> Depends: libxml2 (>= 2.6.6) Architecture: all Description: Fake package - module manually installed in site_perl This is a fake package to let the packaging system believe that this Debian package is installed. . In fact, the package is not installed since a newer version of the module has been manually compiled & installed in the site_perl directory.
equivs-build file
コマンドを使って Debian パッケージを生成します。さぁこれで、パッケージは現在のディレクトリに作成され、他の Debian パッケージと同様に取り扱う事が可能になります。
falcot-data-1.0
ディレクトリを作成します。このパッケージは必然的に、falcot-data
と名付けられ、バージョン番号は 1.0
になります。その後、管理者は文書ファイルを data
サブディレクトリに置きます。その後、管理者は dh_make
コマンド (dh-make パッケージに含まれます) を実行し、パッケージ生成作業に必要なファイルを追加します。このファイルは debian
サブディレクトリに保存されます:
$
cd falcot-data-1.0
$
dh_make --native
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch or cdbs? [s/i/m/l/k/n/b]
i
Maintainer name : Raphael Hertzog Email-Address : hertzog@debian.org Date : Mon, 11 Apr 2011 15:11:36 +0200 Package Name : falcot-data Version : 1.0 License : blank Usind dpatch : no Type of Package : Independent Hit <enter> to confirm: Currently there is no top level Makefile. This may require additional tuning. Done. Please edit the files in the debian/ subdirectory now. You should also check that the falcot-data Makefiles install into $DESTDIR and not in / . $
Architecture: any
) 生成します。indep binary はその逆の振る舞いで、対象のアーキテクチャに依存しない (Architecture: all
) 単一のバイナリを生成します。今回作成するパッケージの場合、indep binary がより適切です。なぜなら、このパッケージは文書だけを含みバイナリプログラムを含まないからです。このため、すべてのアーキテクチャのコンピュータで同じように使う事が可能です。
dh_make
コマンドは debian
サブディレクトリと各種ファイルを作成しました。一部のファイル、特に rules
、control
、changelog
、copyright
は必須です。.ex
拡張子を持つファイルは例ファイルで、必要ならばこれらのファイルをひな形として (拡張子を削除して) 使う事が可能です。必要なければ例ファイルを削除する事をおすすめします。compat
ファイルはそのままにしておくべきです。なぜなら、compat
ファイルはパッケージビルド作業の様々な段階で使われる debhelper プログラムスイート (dh_
から始まるプログラム群) を適切に動作させるために必要だからです。
copyright
ファイルには、必ずパッケージに含まれる文書の著者と対応するライセンスに関する情報を含めなければいけません。今回の場合、パッケージには内部文書が含まれ、その使用は Falcot Corp 社内だけに制限されています。デフォルトの changelog
ファイルはほとんどの場合に適切です; 「Initial release」をより詳しい説明に置き換えたり、unstable
を internal
に変えるだけで十分です。control
ファイルも更新します: section は misc に変更され、Homepage
、Vcs-Git
、Vcs-Browser
は削除されました。Depends
フィールドには iceweasel | www-browser
を指定しました。これはパッケージ内の文書を表示するために必要なウェブブラウザがインストールされている事を保証するためです。
例15.3 control
ファイル
Source: falcot-data Section: misc Priority: optional Maintainer: Raphael Hertzog <hertzog@debian.org> Build-Depends: debhelper (>= 7.0.50~) Standards-Version: 3.8.4 Package: falcot-data Architecture: all Depends: iceweasel | www-browser, ${misc:Depends} Description: Internal Falcot Corp Documentation This package provides several documents describing the internal structure at Falcot Corp. This includes: - organization diagram - contacts for each department. . These documents MUST NOT leave the company. Their use is INTERNAL ONLY.
例15.4 changelog
ファイル
falcot-data (1.0) internal; urgency=low * Initial Release. * Let's start with few documents: - internal company structure; - contacts for each department. -- Raphael Hertzog <hertzog@debian.org> Mon, 11 Apr 2011 20:46:33 +0200
例15.5 copyright
ファイル
This work was packaged for Debian by Raphael Hertzog <hertzog@debian.org> on Mon, 11 Apr 2011 20:46:33 +0200 Copyright: Copyright (C) 2004-2011 Falcot Corp License: All rights reserved.
rules
ファイルには、(生成されるバイナリパッケージにちなんで名付けられた) 専用のサブディレクトリ内で対象のソフトウェアを設定、ビルド、インストールするために使われる一連の規則が定義されています。このサブディレクトリの内容はあたかもサブディレクトリがファイルシステムのルートであるかの如く Debian パッケージの中に保存されます。今回の場合、ファイルは debian/falcot-data/usr/share/falcot-data/
サブディレクトリにインストールされます。こうすることで、生成されたパッケージをインストールすると、ファイルが /usr/share/falcot-data/
の下に配備されます。rules
ファイルは Makefile
として使われ、幾つかの標準的なターゲット (定義済みの clean
と binary
はそれぞれソースディレクトリを削除する場合、バイナリパッケージを生成する場合に使います) が定義されています。
rules
ファイルはビルド作業の核心で、debhelper
ツールによって提供される標準的なコマンド群を実行するために必要な最低限の要素だけを含みます。これが面倒を見るのは dh_make
によって生成されたファイルだけです。自分のファイルをインストールするためには、以下の debian/falcot-data.install
ファイルを作成して、dh_install
コマンドの挙動を単純に設定します。
data/* usr/share/falcot-data/
debian/menu.ex
の拡張子を外し、以下のとおり編集することで、単純に行われます。
例15.6 menu
ファイル
?package(falcot-data):needs=X11|wm section=Help\ title="Internal Falcot Corp Documentation" \ command="/usr/bin/x-www-browser /usr/share/falcot-data/index.html" ?package(falcot-data):needs=text section=Help\ title="Internal Falcot Corp Documentation" \ command="/usr/bin/www-browser /usr/share/falcot-data/index.html"
needs
フィールドが X11|wm
に設定された場合、このエントリがグラフィカルインターフェースでのみ意味を持つ事を意味します。そのため、このエントリはグラフィカル (X11) アプリケーションとウィンドウマネージャ (wm
) のメニューに統合されます。section
フィールドはこのエントリが表示されるメニュー内の場所を指定します。今回の場合、このエントリは Help メニューに表示されます。title
フィールドはメニューに表示されるテキストを指定します。最後に、command
フィールドはユーザがメニューエントリを選択した時に実行するコマンドを指定します。
debian/menu
ファイルを作成するだけで十分です。なぜなら、パッケージビルド作業の間に dh
が dh_installmenu
コマンドを自動的に呼び出すからです。
falcot-data-1.0
ディレクトリの中で、dpkg-buildpackage -us -uc
コマンドを実行します。