アップストリームソースアーカイブを指定してDebianパッケージで2つのパッケージを生成するにはどうすればよいですか?


14

私はPPAのために何かを包装しています。アップストリームソースは、.tar.gzMakefileベースのアーカイブです。

このパッケージには、アーキテクチャに依存しない大量のデータがあるため、ビルドスクリプトで2つのパッケージを生成することをお勧めします。

  • パッケージ
  • パッケージ -data

これを設定するにはどうすればよいですか?Debian controlファイルを編集して2つのパッケージを生成しましたが、適切なファイルを適切なパッケージに取得する方法がわかりません。

現在、データファイルはすべてMakefileを介してインストールされているので、ここで迷ってしまいました。

回答:


14

これは、ドキュメントが不足していることを常に見つけてきた場所です。他のパッケージでどのように行われるかを見て、これがどのように機能するかをほとんど学びました。Debianパッケージのほとんどのものと同様に、これを行う方法がいくつかあります。最も簡単な方法はdebian/package.installファイルを使用することです。これが私が取り組んだパッケージの例です。想像力(bzrブランチ)です。

まず、パッケージをで作成する必要がありますdebian/control。現在、3つのスタンザがあります。1つはソースパッケージ用で、もう1つは各バイナリパッケージ用です。foo-dataパッケージはであることに注意してくださいArchitecture: all。また、想像力はに依存することに注意してくださいimagination-common (= ${source:Version})

次に、debian/imagination.installファイルを作成します。これには、想像パッケージに含める特定のファイルまたはパスが含まれます。このパッケージには、すべてのアーキテクチャ依存ファイルが必要です。デスクトップファイルは、そのExec:行で呼び出すバイナリと共に言う必要があるため含まれています。

usr/bin/
usr/lib/
/usr/share/applications/imagination.desktop

debian/imagination-common.installファイルを作成する必要があります。これには、アーキテクチャに依存しないすべてのファイル、画像、翻訳、ドキュメントなどが含まれます。

/usr/share/doc/
/usr/share/icons/
/usr/share/imagination/
/usr/share/locale/

man dh_install ここで実際に何が起こっているかを説明します:

多分、あなたは複数のバイナリパッケージをビルドする大きなパッケージを持っているでしょう。アップストリームのMakefileを使用してすべてをdebian / tmpにインストールし、dh_installを使用してそこからディレクトリとファイルを適切なパッケージビルドディレクトリにコピーできます。

「適切なパッケージビルドディレクトリ」とは、ビルドプロセスが終了するまでに、結果foo.debに含まれるすべてのものがにあることを意味しsrc/debian/fooます。終わるだろうファイルがfoo-data.deb中に発見されますsrc/debian/foo-datadebian/rules基本的にただのMakefileで、あなたは同じ結果を得ることのように他の方法を想像し始めることができます。


どうもありがとうございます!非常に明確な説明と完璧に動作します。
ネイサンオスマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.