Interpreting compatibility errors Pkg add

Yes, this is a similar issue to, Interpreting Pkg add errors), which have already been reported. But it never got any answer, so I will ask again (and possibly suggest more things added to the documentation). It has happened to me twice the last week that I have needed to update a package, but haven’t been able to. When I have realised that an old version of a certain package is what has been causing my troubles I have tried something like:
pkg> add Plots@1.1
and get an error like:

   Updating registry at `~/.julia/registries/General`
   Updating git-repo `https://github.com/JuliaRegistries/General.git`
  Resolving package versions...
ERROR: Unsatisfiable requirements detected for package StatPlots [60ddc479]:
 StatPlots [60ddc479] log:
 ├─possible versions are: [0.8.0-0.8.2, 0.9.0-0.9.2] or uninstalled
 ├─restricted to versions * by an explicit requirement, leaving only versions [0.8.0-0.8.2, 0.9.0-0.9.2]
 └─restricted by compatibility requirements with Plots [91a5bcdd] to versions: uninstalled — no versions left
   └─Plots [91a5bcdd] log:
     ├─possible versions are: [0.12.1-0.12.4, 0.13.0-0.13.1, 0.14.0-0.14.2, 0.15.0-0.15.1, 0.16.0, 0.17.0-0.17.4, 0.18.0, 0.19.0-0.19.3, 0.20.0-0.20.6, 0.21.0, 0.22.0-0.22.5, 0.23.0-0.23.2, 0.24.0, 0.25.0-0.25.3, 0.26.0-0.26.3, 0.27.0-0.27.1, 0.28.0-0.28.4, 0.29.0-0.29.9, 1.0.0-1.0.14, 1.1.0-1.1.4, 1.2.0] or uninstalled
     ├─restricted to versions * by SimulationSupport [14e83994], leaving only versions [0.12.1-0.12.4, 0.13.0-0.13.1, 0.14.0-0.14.2, 0.15.0-0.15.1, 0.16.0, 0.17.0-0.17.4, 0.18.0, 0.19.0-0.19.3, 0.20.0-0.20.6, 0.21.0, 0.22.0-0.22.5, 0.23.0-0.23.2, 0.24.0, 0.25.0-0.25.3, 0.26.0-0.26.3, 0.27.0-0.27.1, 0.28.0-0.28.4, 0.29.0-0.29.9, 1.0.0-1.0.14, 1.1.0-1.1.4, 1.2.0]
     │ └─SimulationSupport [14e83994] log:
     │   ├─possible versions are: 0.1.0 or uninstalled
     │   └─SimulationSupport [14e83994] is fixed to version 0.1.0
     └─restricted to versions 1.1 by an explicit requirement, leaving only versions 1.1.0-1.1.4

Here simulation support is a personal package I have. While it requires Plots, it, I believe, have not specified any version. The only mention of Plots in the “Project.toml” file is

[extras]
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"     │ └─SimulationSupport [14e83994] log:
     │   ├─possible versions are: 0.1.0 or uninstalled
     │   └─SimulationSupport [14e83994] is fixed to version 0.1.0
     └─restricted to versions 1.1 by an explicit requirement, leaving only versions 1.1.0-1.1.4

and

test = ["Plots", ...]

Now I am trying to figure out exactly what is happening, and what I need to do to get a later version of Plots. Unfortunately, I have troubles interpreting the error message I get. I have not been able to find any documentations on it (and if it is one think I’d like to get out of this post, it is that if there is no such documentation, it definitely should be added!).

Lets go through the error line bye line:

ERROR: Unsatisfiable requirements detected for package StatPlots [60ddc479]:
 StatPlots [60ddc479] log:
 ├─possible versions are: [0.8.0-0.8.2, 0.9.0-0.9.2] or uninstalled

This means that these are the only versions of StatsPlots?

 ├─restricted to versions * by an explicit requirement, leaving only versions [0.8.0-0.8.2, 0.9.0-0.9.2]

What does the * mean here?

 └─restricted by compatibility requirements with Plots [91a5bcdd] to versions: uninstalled — no versions left

Now I am confused. Does this mean that I cannot have StatsPlots at all, while I obviously do?

└─Plots [91a5bcdd] log:
     ├─possible versions are: [0.12.1-0.12.4, 0.13.0-0.13.1, 0.14.0-0.14.2, 0.15.0-0.15.1, 0.16.0, 0.17.0-0.17.4, 0.18.0, 0.19.0-0.19.3, 0.20.0-0.20.6, 0.21.0, 0.22.0-0.22.5, 0.23.0-0.23.2, 0.24.0, 0.25.0-0.25.3, 0.26.0-0.26.3, 0.27.0-0.27.1, 0.28.0-0.28.4, 0.29.0-0.29.9, 1.0.0-1.0.14, 1.1.0-1.1.4, 1.2.0] or uninstalled
     ├─restricted to versions * by SimulationSupport [14e83994], leaving only versions [0.12.1-0.12.4, 0.13.0-0.13.1, 0.14.0-0.14.2, 0.15.0-0.15.1, 0.16.0, 0.17.0-0.17.4, 0.18.0, 0.19.0-0.19.3, 0.20.0-0.20.6, 0.21.0, 0.22.0-0.22.5, 0.23.0-0.23.2, 0.24.0, 0.25.0-0.25.3, 0.26.0-0.26.3, 0.27.0-0.27.1, 0.28.0-0.28.4, 0.29.0-0.29.9, 1.0.0-1.0.14, 1.1.0-1.1.4, 1.2.0]

Well this seems fine?

     │ └─SimulationSupport [14e83994] log:
     │   ├─possible versions are: 0.1.0 or uninstalled
     │   └─SimulationSupport [14e83994] is fixed to version 0.1.0
     └─restricted to versions 1.1 by an explicit requirement, leaving only versions 1.1.0-1.1.4

And version 1.1 is what I want, so why can’t I have it?

I am probably missing something here, but my point is that while the error message is probably very useful, it is not necessarily intuitively so without some kind of instructions.

On the more specific note of this case I realised that StatPlots was some old package, not to be confused with StatsPlots, and could be safely removed. Trying now again I instead get:

(@v1.4) pkg> add Plots@1.1
  Resolving package versions...
ERROR: Unsatisfiable requirements detected for package RecipesBase [3cdcf5f2]:
 RecipesBase [3cdcf5f2] log:
 ├─possible versions are: [0.4.0, 0.5.0, 0.6.0, 0.7.0, 0.8.0, 1.0.0-1.0.1] or uninstalled
 ├─restricted to versions * by SimulationSupport [14e83994], leaving only versions [0.4.0, 0.5.0, 0.6.0, 0.7.0, 0.8.0, 1.0.0-1.0.1]
 │ └─SimulationSupport [14e83994] log:
 │   ├─possible versions are: 0.1.0 or uninstalled
 │   └─SimulationSupport [14e83994] is fixed to version 0.1.0
 ├─restricted by compatibility requirements with StatsPlots [f3b207a7] to versions: [0.5.0, 0.6.0, 0.7.0, 0.8.0, 1.0.0-1.0.1]
 │ └─StatsPlots [f3b207a7] log:
 │   ├─possible versions are: [0.10.0-0.10.2, 0.11.0, 0.12.0, 0.13.0, 0.14.0-0.14.5] or uninstalled
 │   ├─restricted to versions * by an explicit requirement, leaving only versions [0.10.0-0.10.2, 0.11.0, 0.12.0, 0.13.0, 0.14.0-0.14.5]
 │   └─restricted by compatibility requirements with Plots [91a5bcdd] to versions: [0.12.0, 0.14.4-0.14.5] or uninstalled, leaving only versions: [0.12.0, 0.14.4-0.14.5]
 │     └─Plots [91a5bcdd] log:
 │       ├─possible versions are: [0.12.1-0.12.4, 0.13.0-0.13.1, 0.14.0-0.14.2, 0.15.0-0.15.1, 0.16.0, 0.17.0-0.17.4, 0.18.0, 0.19.0-0.19.3, 0.20.0-0.20.6, 0.21.0, 0.22.0-0.22.5, 0.23.0-0.23.2, 0.24.0, 0.25.0-0.25.3, 0.26.0-0.26.3, 0.27.0-0.27.1, 0.28.0-0.28.4, 0.29.0-0.29.9, 1.0.0-1.0.14, 1.1.0-1.1.4, 1.2.0] or uninstalled
 │       ├─restricted to versions * by SimulationSupport [14e83994], leaving only versions [0.12.1-0.12.4, 0.13.0-0.13.1, 0.14.0-0.14.2, 0.15.0-0.15.1, 0.16.0, 0.17.0-0.17.4, 0.18.0, 0.19.0-0.19.3, 0.20.0-0.20.6, 0.21.0, 0.22.0-0.22.5, 0.23.0-0.23.2, 0.24.0, 0.25.0-0.25.3, 0.26.0-0.26.3, 0.27.0-0.27.1, 0.28.0-0.28.4, 0.29.0-0.29.9, 1.0.0-1.0.14, 1.1.0-1.1.4, 1.2.0]
 │       │ └─SimulationSupport [14e83994] log: see above
 │       └─restricted to versions 1.1 by an explicit requirement, leaving only versions 1.1.0-1.1.4
 ├─restricted by compatibility requirements with Plots [91a5bcdd] to versions: 1.0.0-1.0.1
 │ └─Plots [91a5bcdd] log: see above
 └─restricted by compatibility requirements with RecursiveArrayTools [731186ca] to versions: [0.4.0, 0.5.0, 0.6.0, 0.7.0] — no versions left
   └─RecursiveArrayTools [731186ca] log:
     ├─possible versions are: [0.16.0-0.16.3, 0.17.0-0.17.2, 0.18.0-0.18.6, 0.19.0-0.19.1, 0.20.0, 1.0.0-1.0.2, 1.1.0-1.1.1, 1.2.0-1.2.1, 2.0.0-2.0.5, 2.1.0-2.1.2, 2.2.0, 2.3.0-2.3.1] or uninstalled
     ├─restricted by compatibility requirements with DiffEqBase [2b5f629d] to versions: [0.16.0-0.16.3, 0.17.0-0.17.2, 0.18.0-0.18.6, 0.19.0-0.19.1, 0.20.0, 1.0.0-1.0.2, 1.1.0-1.1.1, 1.2.0-1.2.1, 2.0.0-2.0.5, 2.1.0-2.1.2, 2.2.0, 2.3.0-2.3.1]
     │ └─DiffEqBase [2b5f629d] log:
     │   ├─possible versions are: [3.13.2-3.13.3, 4.0.0-4.0.1, 4.1.0, 4.2.0, 4.3.0-4.3.1, 4.4.0, 4.5.0, 4.6.0, 4.7.0, 4.8.0, 4.9.0, 4.10.0-4.10.1, 4.11.0-4.11.1, 4.12.0, 4.13.0, 4.14.0-4.14.1, 4.15.0, 4.16.0, 4.17.0, 4.18.0, 4.19.0, 4.20.0-4.20.3, 4.21.0, 4.21.2-4.21.3, 4.22.0-4.22.2, 4.23.0, 4.23.2-4.23.4, 4.24.0-4.24.3, 4.25.0-4.25.1, 4.26.0-4.26.3, 4.27.0-4.27.1, 4.28.0-4.28.1, 4.29.0-4.29.2, 4.30.0-4.30.2, 4.31.0-4.31.2, 4.32.0, 5.0.0-5.0.1, 5.1.0, 5.2.0-5.2.3, 5.3.0-5.3.2, 5.4.0-5.4.1, 5.5.0-5.5.2, 5.6.0-5.6.4, 5.7.0, 5.8.0-5.8.1, 5.9.0, 5.10.0-5.10.3, 5.11.0-5.11.1, 5.12.0, 5.13.0, 5.14.0-5.14.2, 5.15.0, 5.16.0-5.16.5, 5.17.0-5.17.1, 5.18.0, 5.19.0, 5.20.0-5.20.1, 6.0.0, 6.1.0, 6.2.0-6.2.4, 6.3.0-6.3.6, 6.4.0-6.4.2, 6.5.0-6.5.1, 6.6.0, 6.7.0, 6.8.0, 6.9.0-6.9.4, 6.10.0-6.10.2, 6.11.0, 6.12.0-6.12.5, 6.13.0-6.13.3, 6.14.0-6.14.2, 6.15.0-6.15.2, 6.16.0, 6.17.0-6.17.3, 6.18.0-6.18.1, 6.19.0, 6.20.0, 6.21.0-6.21.1, 6.22.0-6.22.2, 6.23.0, 6.24.0, 6.25.0-6.25.2, 6.26.0, 6.27.0, 6.28.0, 6.29.0-6.29.3, 6.30.0-6.30.4] or uninstalled
     │   ├─restricted to versions * by DiffEqParameters [c3c3384c], leaving only versions [3.13.2-3.13.3, 4.0.0-4.0.1, 4.1.0, 4.2.0, 4.3.0-4.3.1, 4.4.0, 4.5.0, 4.6.0, 4.7.0, 4.8.0, 4.9.0, 4.10.0-4.10.1, 4.11.0-4.11.1, 4.12.0, 4.13.0, 4.14.0-4.14.1, 4.15.0, 4.16.0, 4.17.0, 4.18.0, 4.19.0, 4.20.0-4.20.3, 4.21.0, 4.21.2-4.21.3, 4.22.0-4.22.2, 4.23.0, 4.23.2-4.23.4, 4.24.0-4.24.3, 4.25.0-4.25.1, 4.26.0-4.26.3, 4.27.0-4.27.1, 4.28.0-4.28.1, 4.29.0-4.29.2, 4.30.0-4.30.2, 4.31.0-4.31.2, 4.32.0, 5.0.0-5.0.1, 5.1.0, 5.2.0-5.2.3, 5.3.0-5.3.2, 5.4.0-5.4.1, 5.5.0-5.5.2, 5.6.0-5.6.4, 5.7.0, 5.8.0-5.8.1, 5.9.0, 5.10.0-5.10.3, 5.11.0-5.11.1, 5.12.0, 5.13.0, 5.14.0-5.14.2, 5.15.0, 5.16.0-5.16.5, 5.17.0-5.17.1, 5.18.0, 5.19.0, 5.20.0-5.20.1, 6.0.0, 6.1.0, 6.2.0-6.2.4, 6.3.0-6.3.6, 6.4.0-6.4.2, 6.5.0-6.5.1, 6.6.0, 6.7.0, 6.8.0, 6.9.0-6.9.4, 6.10.0-6.10.2, 6.11.0, 6.12.0-6.12.5, 6.13.0-6.13.3, 6.14.0-6.14.2, 6.15.0-6.15.2, 6.16.0, 6.17.0-6.17.3, 6.18.0-6.18.1, 6.19.0, 6.20.0, 6.21.0-6.21.1, 6.22.0-6.22.2, 6.23.0, 6.24.0, 6.25.0-6.25.2, 6.26.0, 6.27.0, 6.28.0, 6.29.0-6.29.3, 6.30.0-6.30.4]
     │   │ └─DiffEqParameters [c3c3384c] log:
     │   │   ├─possible versions are: 0.2.0 or uninstalled
     │   │   └─DiffEqParameters [c3c3384c] is fixed to version 0.2.0
     │   ├─restricted by compatibility requirements with StochasticDelayDiffEq [29a0d76e] to versions: [6.0.0, 6.1.0, 6.2.0-6.2.4, 6.3.0-6.3.6, 6.4.0-6.4.2, 6.5.0-6.5.1, 6.6.0, 6.7.0, 6.8.0, 6.9.0-6.9.4, 6.10.0-6.10.2, 6.11.0, 6.12.0-6.12.5, 6.13.0-6.13.3, 6.14.0-6.14.2, 6.15.0-6.15.2, 6.16.0, 6.17.0-6.17.3, 6.18.0-6.18.1, 6.19.0, 6.20.0, 6.21.0-6.21.1, 6.22.0-6.22.2, 6.23.0, 6.24.0, 6.25.0-6.25.2, 6.26.0, 6.27.0, 6.28.0, 6.29.0-6.29.3, 6.30.0-6.30.4]
     │   │ └─StochasticDelayDiffEq [29a0d76e] log:
     │   │   ├─possible versions are: 0.1.0 or uninstalled
     │   │   └─restricted to versions * by an explicit requirement, leaving only versions 0.1.0
     │   └─restricted by compatibility requirements with RecursiveArrayTools [731186ca] to versions: [5.8.0-5.8.1, 5.9.0, 5.10.0-5.10.3, 5.11.0-5.11.1, 5.12.0, 5.13.0, 5.14.0-5.14.2, 5.15.0, 5.16.0-5.16.5, 5.17.0-5.17.1, 5.18.0, 5.19.0, 5.20.0-5.20.1, 6.0.0, 6.1.0, 6.2.0-6.2.4, 6.3.0-6.3.6, 6.4.0-6.4.2, 6.5.0-6.5.1, 6.6.0, 6.7.0, 6.8.0, 6.9.0-6.9.4, 6.10.0-6.10.2] or uninstalled, leaving only versions: [6.0.0, 6.1.0, 6.2.0-6.2.4, 6.3.0-6.3.6, 6.4.0-6.4.2, 6.5.0-6.5.1, 6.6.0, 6.7.0, 6.8.0, 6.9.0-6.9.4, 6.10.0-6.10.2]
     │     └─RecursiveArrayTools [731186ca] log: see above
     └─restricted by compatibility requirements with StochasticDelayDiffEq [29a0d76e] to versions: [1.0.0-1.0.2, 1.1.0-1.1.1, 1.2.0-1.2.1]
       └─StochasticDelayDiffEq [29a0d76e] log: see above

And here I do not even know where to start. There also seem to be some tree structure going on, and it would be useful with some help with how to understand this one.

Some new docs for this was recently added: 3. Managing Packages · Pkg.jl.

1 Like

Thanks a lot!