CIスクリプトで/usr/bin/dpkgエラーを「キャッチ」何度も再試行する方法はありますか?

CIスクリプトで/usr/bin/dpkgエラーを「キャッチ」何度も再試行する方法はありますか?

私はマルチレベルのマルチアーキテクチャDockerビルドプロセスにDockerのdebian:latestイメージとDebian SidのChromium / Firefoxパッケージを使用しました。場合によっては、イメージをビルドすると、次のエラーが原因で問題が発生することがあります。

Errors were encountered while processing:
#0 221.2  system-config-printer-common
#0 221.2  system-config-printer
#0 221.3 E: Sub-process /usr/bin/dpkg returned an error code (1)

ビルドを再実行すると機能します。これは必ずしも破損したパッケージではないことを示します。これは自動化されたビルドなので、これらのエラーを「キャッチ」して自動的に失敗する手順を再試行する方法があるかどうか疑問に思います。

答え1

コマンドが最終的に成功すると確信している場合は、retryを使用できますuntil。コンテナビルドでは:

until apt install package; do :; done

または、ビルド全体をやり直したい場合:

until docker build …; do :; done

このコマンドは、所定の回数まで再試行するように調整できます。

しかし、あなたの場合、実際に必要な場合以外system-config-printer(コンテナイメージでは驚くことがある)、完全にインストールしないことが最善です。まず試してみてくださいapt install --no-install-recommends

関連情報