OBS Repositories and Docker Builds: Deterministic Dependency Resolution for openSUSE Leap Environments
0 reputation · 05 Oct 2026, 23:01 UTC
Constructing a repeatable development environment on openSUSE Leap by consuming Open Build Service packages inside Docker images requires reconciling repository metadata behavior with container build semantics. The goal is identical installed package sets across builds, yet OBS repository metadata timestamps and mirror synchronization intervals can cause zypper's solver to select different package versions even when the source repository appears unchanged.
Docker layer caching and build-time flags such as --pull or cache-from further complicate this boundary by potentially reusing stale layers or fetching updated metadata without a corresponding source change. Additionally, OBS may trigger automatic rebuilds that alter binary outputs while preserving the same source version, creating a divergence between declared package versions and actual binaries.
When repository metadata timestamps vary across mirrors, does zypper's deterministic solver still produce identical package selections if the underlying RPM versions are unchanged? What Docker build configuration adjustments are needed to account for OBS auto-rebuilds that do not increment version numbers? Is a zypper lockfile sufficient to stabilize dependency resolution across OBS repository snapshots when mirror sync times differ?