異なるバージョンとディストリビューション用に同じソースから複数の.debパッケージをビルドしたいと思っています。ソースコードがまったく同じであっても、依存関係とディストリビューション名が異なるため、debianフォルダー内の一部のファイルを共有できません。
そのため、バージョン/ディストリビューションごとに複数の「debian」ディレクトリを作成し、パッケージをビルドするときに検索する場所を指定したいと思います。出来ますか?
参考までに、debuildコマンドを使用して.debパッケージをビルドしています。
異なるブランチを使用することは1つのアプローチであり、適切と思われる場合は@mestiaの回答の編集を提案できます(ただし、読み進めてください...)。
別のアプローチは、異なるファイルを並べて保持することです。この例については、 Solaar を参照してください。
ただし、これらのアプローチには両方とも重大な欠点があります。DebianまたはUbuntu(またはおそらく他の派生物)のパッケージには適していません。いつかパッケージをディストリビューションに入れる予定がある場合は、同じファイルのセットがさまざまなディストリビューションで正しい結果を生成するようにパッケージ化する必要があります。
この例については、 Solaar用のDebianパッケージ (完全な開示:パッケージを作成しました)をご覧ください。
一般的な考え方は、dpkg-vendor
に配布とは何かを尋ねることです。したがって、DebianとUbuntuで異なる依存関係を持つSolaarの場合、debian/rules
は
derives_from_ubuntu := $(Shell (dpkg-vendor --derives-from Ubuntu && echo "yes") || echo "no")
さらに、dh_gencontrol
のオーバーライドを下に移動して、必要に応じて「substvars」を入力します。
override_dh_gencontrol:
ifeq ($(derives_from_ubuntu),yes)
dh_gencontrol -- '-Vsolaar:Desktop-Icon-Theme=gnome-icon-theme-full | oxygen-icon-theme-complete' -Vsolaar:Gnome-Icon-Theme=gnome-icon-theme-full
else
dh_gencontrol -- '-Vsolaar:Desktop-Icon-Theme=gnome-icon-theme | oxygen-icon-theme' -Vsolaar:Gnome-Icon-Theme=gnome-icon-theme
endif
これにより、debian/control
に適切な変数が入力されます。
Package: solaar
Architecture: all
Depends: ${misc:Depends}, ${debconf:Depends}, udev (>= 175), passwd | adduser,
${python:Depends}, python-pyudev (>= 0.13), python-gi (>= 3.2), gir1.2-gtk-3.0 (>= 3.4),
${solaar:Desktop-Icon-Theme}
そして
Package: solaar-gnome3
Architecture: all
Section: gnome
Depends: ${misc:Depends}, solaar (= ${source:Version}),
gir1.2-appindicator3-0.1, gnome-Shell (>= 3.4) | unity (>= 5.10),
${solaar:Gnome-Icon-Theme}
debian/rules
のテストを使用して、メイクファイルで実行できるアクションを制御できます。つまり、これを代替ファイルと組み合わせて、たとえば、パッケージビルドで使用される直前に適切なファイルをリンクできます。 。
おそらく、git-buildpackage
を使用して、さまざまなdebianディレクトリをさまざまなブランチに保持することができます。