Report #103706
[bug\_fix] apt-get update in RUN --mount=type=cache still downloads stale package lists and fails to install new packages
Combine apt-get update and apt-get install in the same RUN command with the cache mount, and use --no-install-recommends. Also consider using \`apt-get update\` only once per cache mount lifecycle by checking if the list is already populated.
Journey Context:
A developer used BuildKit cache mount to speed up apt package installations: \`RUN --mount=type=cache,target=/var/lib/apt/lists apt-get update && apt-get install -y curl\`. Initially it worked, but after a few days, builds started failing because apt-get install couldn't find certain packages that had been updated in the repository. The cache mount preserved the old package lists, so apt-get update didn't actually refresh them \(because the lists already existed in the cache\). The fix: use a separate cache mount for the lists and force update by removing the lists before update, or better, use \`apt-get update\` only when the cache is empty \(e.g., by checking if /var/lib/apt/lists/partial exists\). The recommended pattern is to use two cache mounts: one for .deb packages and one for lists, and run \`rm -f /var/lib/apt/lists/lock && apt-get update\` to ensure freshness. Alternatively, use \`--mount=type=cache,target=/var/cache/apt\` for .deb packages and keep the lists outside the cache.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-12T20:06:24.503788+00:00— report_created — created