試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Ubuntu向けパッケージ作成上のメモ(バイナリパッケージの分割に関するメモ・後半)

Ubuntu向けパッケージ作成上のメモ(バイナリパッケージの分割に関するメモ・前半)」の続き。

複数のバイナリパッケージへ分割する際のパッケージ情報の記述

debian/controlにおいてソースパッケージに関する記述から1行空けた後ろにバイナリパッケージの情報を記述するのだが、あるソースパッケージから複数のバイナリパッケージを作成したい場合には「Package:」の記述の下に1行空けた後で別のパッケージ名でその情報を記述する。更にパッケージがある場合はその下に1行空けて同様に続ける。
C/Migemoのパッケージでは「cmigemo」というソースパッケージから「cmigemo-common」「cmigemo」「libmigemo1」「libmigemo-dev」「vim-cmigemo」のバイナリパッケージを作成するようにした。
[引用]ファイル名: debian/control より

Source: cmigemo
Section: utils
Priority: extra
(中略)

Package: cmigemo-common
Architecture: all
Depends: ${misc:Depends}, migemo
Description: Japanese incremental search tool written in C - common files
 (詳細な説明は略)

Package: cmigemo
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, libmigemo1 (= ${binary:Version})
Description: Japanese incremental search tool written in C
 (詳細な説明は略)

Package: libmigemo1
Section: libs
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, cmigemo-common (= ${source:Version})
Description: Japanese incremental search tool written in C - runtime library
 (詳細な説明は略)

Package: libmigemo-dev
Section: libdevel
Architecture: any
Depends: ${misc:Depends}, libmigemo1 (= ${binary:Version})
Description: Japanese incremental search tool written in C - development files
 (詳細な説明は略)

Package: vim-cmigemo
Section: editors
Architecture: all
Depends: ${misc:Depends}, vim (>= 2:7.2), cmigemo
Description: C/Migemo plugin for Vim
 (詳細な説明は略)

各バイナリパッケージに含まれるファイルを記述する

上の記述はパッケージ自体の情報で、分割されたそれぞれのバイナリパッケージを構成するファイルについては別途記述が必要となり、debian/ディレクトリの中に[個別のバイナリパッケージ名].installというファイルを配置する。その書式は

[そのパッケージに属するようにしたいファイルの場所] [パッケージ内のインストール場所から先頭の「/」を削ったもの]

が1ファイル1行で(ファイル数の行数だけ)並んだもので、1つ目の項目はdebian/ディレクトリを含んだディレクトリ(ソースツリー内の最上位ディレクトリ)からの相対パスもしくはdebian/tmp/ディレクトリからの相対パスをとり、任意の文字列を「*」で指定することもできる。
例として
[引用]ファイル名: debian/cmigemo-common.install より

dict/euc-jp.d/*.dat		usr/share/migemo/

上の記述により、ソースツリー内のdict/euc-jp.d/ディレクトリ内の全ての.datファイルが「cmigemo-common」パッケージの/usr/share/migemo/に配置され
[引用]ファイル名: debian/libmigemo-dev.install より

usr/include/migemo.h		usr/include/
usr/lib/lib*.so			usr/lib/

上の記述により、ビルドシステムによるファイル配置(インストール)処理の後でdebian/tmp/usr/include/migemo.hがパッケージでは/usr/include/以下に,debian/tmp/usr/lib/以下の.soファイル(この場合はシンボリックリンク)が「libmigemo-dev」パッケージの/usr/lib/以下にそれぞれ(パッケージの中で)配置されるようになる。

パッケージ分割時の他のファイル

debian/[パッケージ名].docsというファイルに記述された場所のファイルは、そのパッケージの/usr/share/doc/[パッケージ名]/以下に配置される。これも1ファイル1行でファイルの場所を並べるが、.installファイルとは異なり、1行の中に「区切られた複数のフィールド」があるわけではなく、ファイルの場所(.installファイルの左のフィールドに相当)だけを記述する。
これ以外にもdebian/[パッケージ名].[名前]形式の名前のファイルにより色々な制御が行える仕組みになっている。

関連:パッケージを分割しない場合における「パッケージ作成のための仮インストール先」について

パッケージを分割しないとき(ソースパッケージから1つだけのバイナリパッケージを作る場合)にはdebian/tmp/以下ではなくdebian/[パッケージ名]/以下がパッケージを作る上で用いられる仮のインストール先として処理される。

関連記事: