さまざまなDebianベースのディストリビューションに対して同じソースコードパッケージをビルドする

さまざまなDebianベースのディストリビューションに対して同じソースコードパッケージをビルドする

同じソースからさまざまなバージョンとディストリビューション用の複数の.debパッケージを構築したいと思います。ソースコードがまったく同じであっても依存関係とディストリビューション名が異なるため、debianフォルダの一部のファイルを共有できません。

したがって、各バージョン/リリースごとに複数の「debian」ディレクトリを作成し、パッケージをビルドするときに検索する場所を指定したいと思います。可能ですか?

ちなみに、私はdebuildコマンドを使って.debパッケージを構築しています。

ベストアンサー1

他のブランチを使用することも1つのアプローチであり、適切な場合は@mestiaの答えの編集を提案することができます(しかし、それを読んでください...)。

別の方法は、異なるファイルを並べて保存することです。太陽光例えば。

しかし、どちらの方法にも重要な欠点がある。つまり、DebianやUbuntu(または他の派生製品)のパッケージでは機能しません。後でディストリビューションにパッケージをインストールする予定の場合は、同じファイルセットがさまざまなディストリビューションで正しい結果を生成するようにパッケージ化する必要があります。

これの例については、次を参照してください。SolarのDebianパッケージング(全公開:包装は私が作成しました。)

一般的なアイデアは、dpkg-vendorDebianとUbuntuで異なる依存関係を持つdebian/rulesSolarの場合、展開が何であるかを尋ねることです。

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/rulesmakefileで実行できるすべての操作を制御できます。つまり、makefileを代替ファイルと組み合わせることができます(たとえば、パッケージビルドでそのファイルを使用する前にそのファイルをリンクするなど)。

おすすめ記事