I’m trying to create a reproducible environment. On 0.6. So I load my (private) package, then generate a REQUIRE file for all currently loaded packages, that looks like:
cat ~/.julia/v0.6/REQUIRE
HTTP 0.6.9 0.6.9+
Feather 0.3.1 0.3.1+
Arrow 0.1.1 0.1.1+
AxisAlgorithms 0.3.0 0.3.0+
...
Then I copy it to ~/.julia/v0.6/REQUIRE
on the target machine, then Pkg.update()
on a fresh install. It works great. Most of the time. But occasionally I get unsatisfiable requirements, which sounds impossible, given that I have precisely that set of package versions installed on my machine. In particular,
ERROR: Unsatisfiable requirements detected for package AxisAlgorithms:
├─version range [0.3.0,0.3.0+) set by an explicit requirement
└─version range [0.0.0-,0.3.0) required by package Interpolations, whose allowed version range is [0.7.3,0.7.3+):
├─version range [0.7.3,0.7.3+) set by an explicit requirement
...
I don’t understand where version range [0.0.0-,0.3.0) required by package Interpolations
comes from. On that machine,
julia> Pkg.status("Interpolations")
- Interpolations 0.7.3
blah@jupy:~/.julia/v0.6/Interpolations$ cat REQUIRE
julia 0.6
ShowItLikeYouBuildIt
WoodburyMatrices 0.1.5
Ratios
AxisAlgorithms
Compat 0.19.0
DualNumbers
The desired Interpolations.jl version is installed, and it works with any version of AxisAlgorithms. So why is there a conflict? Here is the full conflict report:
ERROR: Unsatisfiable requirements detected for package AxisAlgorithms:
├─version range [0.3.0,0.3.0+) set by an explicit requirement
└─version range [0.0.0-,0.3.0) required by package Interpolations, whose allowed version range is [0.7.3,0.7.3+):
├─version range [0.7.3,0.7.3+) set by an explicit requirement
└─version range [0.0.0-,∞) required by package KernelDensity, whose allowed version range is [0.4.1,0.4.1+):
├─version range [0.4.1,0.4.1+) set by an explicit requirement
└─version range [0.0.0-,∞) required by package StatPlots, whose allowed version range is [0.7.2,0.7.2+):
└─version range [0.7.2,0.7.2+) set by an explicit requirement
The intersection of the requirements is empty.