dpkg .debファイル名の生成

dpkg .debファイル名の生成

私たちはDebianパッケージとしてリリースするソフトウェアプロジェクトを持っています。プロジェクトにはを含むdebian /フォルダがありますchangelog compat control copyright rules。次のコマンドを使用して debian パッケージを作成します。

dpkg-buildpackage -us -uc -b --changes-option=-u./dist

出力ストリームを印刷します。プロセスの次のステップで知っておくべきことは、生成された.debファイルの名前だけです。

私はDebianに予測可能なファイル名構造があることを知っていますが、[package name]_[version]_[architecture].debとにかくこれらのパラメータを取得する方法はありません。

debianフォルダを検索して可能なパッケージ名を生成するための別のdpkgコマンドが必要ですか?

ベストアンサー1

指摘したように生成された.debファイルはすべて共通形式である${package}_${version}_${arch}.deb

パッケージ名はPackage:;の項目に由来します。debian/control完全なビルドの場合、各エントリに対して1つのファイルが.deb生成されます。Package:以下を使用して値を取得できます。

awk '/^Package:/ { print $2 }' debian/control

バージョンのデフォルト値はdebian / changelogで指定された値です。以下を使用して抽出できます。

dpkg-parsechangelog -S version

(ビルドは異なるバージョンを指定できますが、これは一般的ではありません。)

結局のところ、アーキテクチャはallArchitecture: allパッケージの場合)またはビルドシステムの基本アーキテクチャ(他の場合はArchitecture:一般的にArchitecture: any)になります。以下を使用して、ビルドシステムのアーキテクチャを決定できます。

dpkg-architecture -qDEB_BUILD_ARCH

(厳密に言えば-qDEB_HOST_ARCH、これは一般的にはBUILD同じHOSTです。ここでもクロスコンパイルを無視します。問題がある場合はDEB_TARGET_ARCH代わりに使用してくださいDEB_BUILD_ARCH。)

controlしたがって、完全に一般的なソリューションでは、どのパッケージがどのアーキテクチャに適用されるかを確認するためにファイルを解析する必要があります。controlファイルが1つのパッケージのみをビルドする場合、これは必要ありません。

dpkg-parsechangelog包装としてdpkg-architecture提供されますdpkg-dev

おすすめ記事