Debian バイナリパッケージ制御ファイルにカスタムフィールドを挿入する方法

Debian バイナリパッケージ制御ファイルにカスタムフィールドを挿入する方法

カスタムフィールドは、次の方法を使用してXBS-debian / controlファイルに追加できます。Debian Policy Manualで定義されているように、これはバイナリ.debとソースコードパッケージに注入されます。

同様の操作は、dpkg-buildpackage を呼び出す前にソースおよびバイナリパッケージに新しいフィールドを挿入します。ただし、一部のパッケージにはビルド時にdebian / control(カーネルなど)が含まれていないため、必ずしも信頼できるわけではありません。

sed -i "0,/^\s*$/s//XBS-Git-Branch: ${CI_COMMIT_BRANCH}\n/" debian/control
dpkg-buildpackage

カスタムフィールドは、次のように生成されたソースパッケージに挿入することもできます。dpkg-sourceに渡されるオプションパッケージをビルドするとき:

dpkg-buildpackage --source-option=-DGit-Branch=${CI_COMMIT_BRANCH}

ただし、これにより、生成されたバイナリパッケージではなく、生成されたソースパッケージにのみフィールドが挿入されます。バイナリパッケージにフィールドを確実に挿入する方法はありますか?

ベストアンサー1

debian/controlすべての場合に根本的な問題が存在しないようです。この問題に対する解決策は、ファイルを提供する必要があるため、常にソースパッケージから始めることですdebian/control。他のアプローチは、dpkg-buildpackage必要に応じてビルドの一部を直接実行することですdebian/control。たとえば、debian/rules build実行してから実行(バイナリパッケージを作成)するdebian/control前に、パッチ(この時点で存在する必要があります)を実行できます。debian/rules binary

controlバイナリパッケージファイルに入る内容を制御するオプションを追加することもできますdpkg-gencontrol例えば使用dh_gencontrol:

override_dh_gencontrol:
        dh_gencontrol -- -Dfoo=bar

Foo: barバイナリパッケージファイルにエントリが追加されますcontrol。これはあなたのシナリオでより便利です。

debian/rulesこれを行うには変更する必要があります。dh_gencontrol上記のように使用することも、dpkg-gencontrolパッケージで使用しない場合は直接使用することもできますdh

おすすめ記事