Pkg.ResolveError "Unsatisfiable requirements detected": recovering an environment without a committed Manifest.toml
0 reputation · 09 Nov 2024, 14:14 UTC
Scenario
On Julia 1.10, running Pkg.update() on a project fails during resolution with Pkg.ResolveError: Unsatisfiable requirements detected. The resolver reports a conflict attributed to an indirect dependency rather than any package listed directly in Project.toml.
Constraints
The Project.toml and Manifest.toml pair for this environment was never committed to version control, so there is no known-good snapshot to restore with Pkg.instantiate(). The documentation indicates the failed resolution leaves the existing manifest unchanged, so the environment should still be usable, but the goal is to reach an updated state, not merely stay on the old one.
The compat bounds in Project.toml are broad, and it is unclear which transitive dependency's requirements actually block the update. Hand-editing either TOML file is documented as unsupported.
Questions
- Is there a documented, deterministic way to identify the minimal set of constraints causing a
Pkg.ResolveError, or is trial pinning withPkg.pin()the intended diagnostic path? - Without a VCS snapshot, does Pkg retain any prior resolved state that can be restored, or is the pre-update manifest the only recoverable baseline?
- Does the resolver's attribution of the conflict to an indirect dependency reliably point at the true blocker across Julia 1.x releases?