私たちは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
(ビルドは異なるバージョンを指定できますが、これは一般的ではありません。)
結局のところ、アーキテクチャはall
(Architecture: 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
。
答え2
これはdpkg名:
$dpkg-name foo.deb
dpkg-name: info: moved 'foo.deb' to './feature-dev_1.4.177_armhf.deb'
foo
DEBIAN/親ディレクトリから取得した元の名前