#!/bin/sh # Install packages, falling through to the next Ubuntu mirror when one is # unreachable. See docker/Dockerfile.e2e. set -e for mirror in azure.archive.ubuntu.com archive.ubuntu.com; do for apt_source in /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources; do [ -f "$apt_source" ] || continue [ -f "$apt_source.orig" ] || cp "$apt_source" "$apt_source.orig" sed -E "s|(https?://)[a-z0-9.]*archive\.ubuntu\.com/ubuntu|\1$mirror/ubuntu|g; s|(https?://)security\.ubuntu\.com/ubuntu|\1$mirror/ubuntu|g" \ "$apt_source.orig" > "$apt_source" done if timeout --kill-after=5s 120s apt-get -o Acquire::Retries=1 -o Acquire::http::Timeout=15 -o Acquire::https::Timeout=15 -o APT::Update::Error-Mode=any update && \ DEBIAN_FRONTEND=noninteractive timeout --kill-after=5s 180s apt-get -o Acquire::Retries=1 -o Acquire::http::Timeout=15 -o Acquire::https::Timeout=15 install -y \ --no-install-recommends --no-install-suggests "$@"; then apt-get clean rm -rf /var/lib/apt/lists/* exit 0 fi echo "apt: $mirror unreachable, trying the next mirror" >&2 done exit 1