を使用してDebianパッケージをビルドする必要がありますsbuild
。パッケージには自動的に解決できない依存関係があります。特に依存関係は、すでに利用可能な新しいバージョンを持つバージョンを指しますが、古いバージョンに固執する必要があります。その結果、これらの依存関係のインストールが失敗し、ビルド全体が失敗します。debian/control
そこに必要なバージョンを表示して問題を解決できないと言われました(参照:https://askubuntu.com/questions/1379523/install-specific-package-version-through-meta-package)。
私はmanualを使用してこれらの依存関係をインストールし続けることができることを知りました。apt-get install dep1=x.y.z
したがって、正しいバージョンの依存関係をインストールできないようにすることは、パッケージのビルド中の依存関係解決メカニズムにすぎません。apt-get
依存関係を解析して解決する前に、必要なバージョンに依存関係をインストールするカスタムbashコマンドを挿入するにはどうすればよいですか?debian/control
上書きしようとしていますが、debian/rules
これらのカスタマイズのためにファイルに別の場所があるのではないでしょうか。debian/*
答え1
決定したように、厳格なバージョンの依存関係はdebian/control
ここでは役に立ちません。
タイトルの一般的な質問に答えるために、Debianパッケージビルドのシェルコマンドはファイルに移動するか、そこからdebian/rules
呼び出されます。たとえばdebian/rules
(スタイルを使用dh
)では、次のようになります。
override_dh_auto_build:
# your shell commands here ...
dh_auto_build
# ... or here
これで、さまざまなオーバーレイスタイルなどを使用できますexecute_after_...
。
しかし、この場合も役に立ちません。これは、パッケージのビルドがビルド中に他のパッケージをインストール(または削除)することを許可されていないためです。debian/control
(またはソースパッケージの処理結果debian/control
)はビルド依存関係を完全に指定する必要があります。これにより、ビルドツール(pbuilder
など)がそれを満たすことができますsbuild
。それからビルドが始まります。パッケージ内のどんなものでもコマンドを実行する機会がある場合は遅すぎます。
私が知っている限り、別のパッケージでシーンを処理する唯一の方法は、リポジトリ必要なパッケージの特定のバージョンを含めてから、ビルドコンテキストで使用できるようにします。これにより、結果のバイナリパッケージをインストールするために必要なランタイム依存関係も提供されます。
別の方法は依存関係を提供することです。つまり彼らコンテンツソースパッケージに追加し、ビルドを適切に調整します。