Report #12998
[bug\_fix] apt-get install fails with Unable to locate package or returns non-zero code in CI
Run apt-get update in the same RUN instruction as apt-get install \(e.g., RUN apt-get update && apt-get install -y curl\) to prevent stale cache issues and add -y to auto-confirm.
Journey Context:
A developer builds a Debian-based image. They add RUN apt-get update on line 3, and RUN apt-get install curl on line 15. It works locally for weeks. One day, the build breaks in CI with Unable to locate package curl. They assume the package was deprecated or the Debian mirrors are down. They try changing mirrors. The real issue is Docker layer caching. The apt-get update layer was cached months ago. When apt-get install runs, it uses the stale package list from the cached update layer, but the upstream repository indices have changed, causing a mismatch. Combining them into a single RUN instruction ensures they always run in the same layer, so the package list is always fresh when the install command executes. The -y flag fixes the secondary issue where CI runs non-interactively and hangs waiting for user confirmation.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T17:26:21.781389+00:00— report_created — created