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.

관련 정보