.debパッケージはプラットフォームごとに異なりますが、すべてのプラットフォームで動作するように指定する方法は?

.debパッケージはプラットフォームごとに異なりますが、すべてのプラットフォームで動作するように指定する方法は?

私はDebian用のカスタムパッケージを作成しており、それを別のコンピュータに配布したいと思います。簡単にするだけ.debですdpkg -i

~によるとDebian Policy Manualallアーキテクチャに依存しないパッケージだけでなく、anyさまざまなアーキテクチャ用に構築できるアーキテクチャに依存するパッケージを参照するために特別な単語を使用できます。

そのため、Architecture: any制御ファイルに何かを書きましたが、パッケージをインストールしようとすると、次のエラーが発生します。

 package architecture (any) does not match system (amd64)

スキーマ用パッケージを作成するのはなぜですかany?これはアーキテクチャに依存しないパッケージではないため(作成しませんでした)、パッケージはコンパイルされたアーキテクチャに置き換えられませんalldpkgany

パッケージがプラットフォームによって異なりますが、利用可能なすべてのプラットフォームに対して構築できることを指定する正しい方法は何ですか?すべてリストしたくありません。何百ものがあります!

修正する:ビルドプロセスは簡単configure && make && make install PREFIX=/xyzで、次を使用します。fakeroot dpkg -b /xyz /output

「any」を現在のアーキテクチャに自動的に置き換える標準的な方法はありますか、それを使用してsed制御ファイルを変更する必要がありますか?

答え1

問題は、ビルド用のツールなしで生のパッケージを作成することですdpkg-dev。バイナリパッケージを生成する一般的な方法は、有効なアーキテクチャを含むマスター制御ファイルを含むソースパッケージを使用し、anyそれを正しいアーキテクチャに変換しdpkg-gencontrolますdebian/rules

とにかく、標準のパッケージングを実行することを決めたのか、最初から再実装することにしたのかに関係なく、パッケージングに関する開発者リファレンスや類似のドキュメントの内容を読むことをお勧めします。

関連情報