私はDebian用のカスタムパッケージを作成しており、それを別のコンピュータに配布したいと思います。簡単にするだけ.deb
ですdpkg -i
。
~によるとDebian Policy Manualall
アーキテクチャに依存しないパッケージだけでなく、any
さまざまなアーキテクチャ用に構築できるアーキテクチャに依存するパッケージを参照するために特別な単語を使用できます。
そのため、Architecture: any
制御ファイルに何かを書きましたが、パッケージをインストールしようとすると、次のエラーが発生します。
package architecture (any) does not match system (amd64)
スキーマ用パッケージを作成するのはなぜですかany
?これはアーキテクチャに依存しないパッケージではないため(作成しませんでした)、パッケージはコンパイルされたアーキテクチャに置き換えられませんall
。dpkg
any
パッケージがプラットフォームによって異なりますが、利用可能なすべてのプラットフォームに対して構築できることを指定する正しい方法は何ですか?すべてリストしたくありません。何百ものがあります!
修正する:ビルドプロセスは簡単configure && make && make install PREFIX=/xyz
で、次を使用します。fakeroot dpkg -b /xyz /output
「any」を現在のアーキテクチャに自動的に置き換える標準的な方法はありますか、それを使用してsed
制御ファイルを変更する必要がありますか?
答え1
問題は、ビルド用のツールなしで生のパッケージを作成することですdpkg-dev
。バイナリパッケージを生成する一般的な方法は、有効なアーキテクチャを含むマスター制御ファイルを含むソースパッケージを使用し、any
それを正しいアーキテクチャに変換しdpkg-gencontrol
ますdebian/rules
。
とにかく、標準のパッケージングを実行することを決めたのか、最初から再実装することにしたのかに関係なく、パッケージングに関する開発者リファレンスや類似のドキュメントの内容を読むことをお勧めします。