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.9.6 Package: libxml-libxml-perl Version: 2.0116-1 Maintainer: Raphael Hertzog <hertzog@debian.org> Depends: libxml2 (>= 2.7.4) 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 --nativeType of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch? [s/i/m/l/k/n]iMaintainer name : Raphael Hertzog Email-Address : hertzog@debian.org Date : Sat, 05 Sep 2015 01:09:39 +0900 Package Name : falcot-data Version : 1.0 License : gpl3 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: all)。single binary はその逆の振る舞いで、対象のアーキテクチャに依存する (Architecture: any) 単一のバイナリを生成します。今回作成するパッケージの場合、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 (>= 9)
Standards-Version: 3.9.5
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> Sat, 05 Sep 2015 01:09:39 +0900例 15.5 copyright ファイル
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: falcot-data Files: * Copyright: 2004-2015 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 ツールによって提供される標準的なコマンド群を実行するために必要な最低限の要素だけを含みます。rules ファイルが面倒を見るのは dh_make によって生成されたファイルだけです。自分のファイルをインストールするためには、以下の debian/falcot-data.install ファイルを作成して、dh_install コマンドの挙動を単純に設定します。
data/* usr/share/falcot-data/
falcot-data.desktop ファイルを追加します。さらに debian/falcot-data.install に例に示した 2 行目を追加して、/usr/share/applications の中に falcot-data.desktop ファイルをインストールします。
例 15.6 falcot-data.desktop ファイル
[Desktop Entry] Name=Internal Falcot Corp Documentation Comment=Starts a browser to read the documentation Exec=x-www-browser /usr/share/falcot-data/index.html Terminal=false Type=Application Categories=Documentation;
debian/falcot-data.install は以下のようになります。
data/* usr/share/falcot-data/ falcot-data.desktop usr/share/applications/
falcot-data-1.0 ディレクトリの中で、dpkg-buildpackage -us -uc コマンドを実行します。