DifferentialEquations Pkg won't be added



Do you guys have ImageMagick.jl installed? I can reproduce this by, in a fresh install:

  1. Adding DifferentialEquations
  2. Setting up Juno
  3. Adding Plots
  4. Adding ImageMagick

I’ll start trying to find out what’s up (or if it’s a Pkg resolver issue), but if we can narrow down the test case it would help.


No, I haven’t, but I remember I had similar storms around Image.jl and co a couple of weeks ago so I removed them.

Below what Pkg.rm(“Atom”) did:

julia> Pkg.rm(“Atom”)
INFO: Updating cache of DelayDiffEq…
INFO: Updating cache of DiffEqCallbacks…
INFO: Updating cache of DiffEqDevTools…
INFO: Updating cache of DiffEqFinancial…
INFO: Updating cache of DiffEqJump…
INFO: Updating cache of DiffEqMonteCarlo…
INFO: Updating cache of DiffEqParamEstim…
INFO: Updating cache of DiffEqSensitivity…
INFO: Updating cache of DifferentialEquations…
INFO: Updating cache of FiniteElementDiffEq…
INFO: Updating cache of OrdinaryDiffEq…
INFO: Updating cache of StochasticDiffEq…
INFO: Installing DelayDiffEq v0.3.0
INFO: Upgrading DiffEqBase: v0.6.0 => v0.15.0
INFO: Installing DiffEqBiological v0.0.1
INFO: Installing DiffEqCallbacks v0.0.2
INFO: Upgrading DiffEqDevTools: v0.6.0 => v0.7.0
INFO: Installing DiffEqFinancial v0.1.0
INFO: Installing DiffEqJump v0.3.0
INFO: Installing DiffEqMonteCarlo v0.2.0
INFO: Upgrading DiffEqPDEBase: v0.1.0 => v0.2.0
INFO: Upgrading DiffEqParamEstim: v0.1.0 => v0.2.0
INFO: Upgrading DiffEqSensitivity: v0.0.4 => v0.1.0
INFO: Upgrading DifferentialEquations: v1.5.0 => v1.10.1
INFO: Upgrading FiniteElementDiffEq: v0.2.1 => v0.3.0
INFO: Installing MultiScaleArrays v0.1.0
INFO: Upgrading ODE: v0.3.0 => v0.4.0
INFO: Upgrading OrdinaryDiffEq: v1.0.2 => v1.8.0
INFO: Upgrading ParameterizedFunctions: v1.2.0 => v1.3.0
INFO: Upgrading StochasticDiffEq: v0.5.0 => v1.4.0
INFO: Upgrading Sundials: v0.9.0 => v0.10.0
INFO: Removing ASTInterpreter v0.0.4
INFO: Removing AbstractTrees v0.0.4
INFO: Removing Atom v0.5.10
INFO: Removing Blink v0.5.1
INFO: Removing COFF v0.0.2
INFO: Removing CRC v1.2.0
INFO: Removing CodeTools v0.4.3
INFO: Removing DWARF v0.1.0
INFO: Removing ELF v0.1.0
INFO: Removing Gallium v0.0.4
INFO: Removing JuliaParser v0.7.4
INFO: Removing LNR v0.0.2
INFO: Removing MachO v0.0.4
INFO: Removing Mustache v0.1.4
INFO: Removing ObjFileBase v0.0.4
INFO: Removing StructIO v0.0.2
INFO: Removing TerminalUI v0.0.2
INFO: Removing VT100 v0.1.0
INFO: Building Rmath
INFO: Building Sundials
INFO: Building Conda
INFO: Building SymEngine
INFO: Package database updated

julia> Pkg.installed(“ImageMagick”)


I’m now playing around and getting from really wild results. Example, adding and removing Plots/ImageMagick a few times, now it will sometimes downgrade after removing a package.

INFO: Updating METADATA...
INFO: Computing changes...
INFO: No packages to install, update or remove

INFO: Downgrading ForwardDiff: v0.4.2 => v0.2.5
INFO: Downgrading LsqFit: v0.2.0 => v0.1.0
INFO: Downgrading NLsolve: v0.9.1 => v0.8.0
INFO: Downgrading Optim: v0.7.8 => v0.6.1
INFO: Removing DiffBase v0.1.0
INFO: Removing FixedSizeArrays v0.2.5
INFO: Removing Measures v0.1.0
INFO: Removing PlotThemes v0.1.1
INFO: Removing PlotUtils v0.3.0
INFO: Removing Plots v0.10.3
INFO: Removing Showoff v0.1.1

We should bring @tkelman in on this, but that sounds like a resolver bug to me. I looked around and don’t see any package with a Juno.jl maximum version (only minimum versions), so I don’t see how that could downgrade things.

Is there an easy way to query what set of version requirements caused the downgrades?


I believe it is a resolver bug, I have never been able to find an actual version compatibility conflict, and I’ve been getting these errors basically every time I try and update for weeks.


Well if it is, for better or worse, at least it sounds like we have a reproducible example.


Maybe More Pkg trouble: "unsatisfiable package requirements detected" from a few days ago is related?


Does this issue also occur on 0.6? @carlobaldassi contributed several PRs improving the resolver. I don’t know if those have been backported yet.


I tried Pkg.update() and Pkg.add("DifferentialEquations") under the fresh condition, and finally managed to add the package! However, under this condition I couldn’t add Atom. I agree with @crbinz.


One was backported to 0.5.1, the other was not. One of the cases where the metadata sanity check failed yesterday would happen on 0.5.1 but not 0.5.0, which seems to have been a situation where the resolver got worse from one of the recent changes.


I’ll tag LSODA.jl soon. That’s the only package without a release to satisfy DiffEqBase 0.15.0. It’s not required by DifferentialEquations.jl, but I wonder if by its mere existence that’s what’s causing the downgrade. This “other package exists” being the problem would make sense with the METADATA sanity check issues we had.


LSODA.jl got tagged and I cannot recreate the problem anymore. Can someone else who was noting this give it a try?

If no one can re-create this anymore, then it’s definitely because the package resolver was being pulled back by LSODA, even if you didn’t have it installed.


Pkg.add(“Atom”) still downgrades quite a few packages, maybe forced by the downgrading of DiffEqBase?

julia> Pkg.add(“Atom”)
INFO: Installing ASTInterpreter v0.0.4
INFO: Installing AbstractTrees v0.0.4
INFO: Installing Atom v0.5.10
INFO: Installing Blink v0.5.1
INFO: Installing COFF v0.0.2
INFO: Installing CRC v1.2.0
INFO: Installing CodeTools v0.4.3
INFO: Installing DWARF v0.1.0
INFO: Downgrading DiffEqBase: v0.15.0 => v0.6.0
INFO: Downgrading DiffEqDevTools: v0.7.0 => v0.6.0
INFO: Downgrading DiffEqPDEBase: v0.2.0 => v0.1.0
INFO: Downgrading DiffEqParamEstim: v0.2.0 => v0.1.0
INFO: Downgrading DiffEqSensitivity: v0.1.0 => v0.0.4
INFO: Downgrading DifferentialEquations: v1.10.1 => v1.5.0
INFO: Installing ELF v0.1.0
INFO: Downgrading FiniteElementDiffEq: v0.3.0 => v0.2.1
INFO: Installing Gallium v0.0.4
INFO: Installing JuliaParser v0.7.4
INFO: Installing LNR v0.0.2
INFO: Installing MachO v0.0.4
INFO: Installing Mustache v0.1.4
INFO: Downgrading ODE: v0.4.0 => v0.3.0
INFO: Installing ObjFileBase v0.0.4
INFO: Downgrading OrdinaryDiffEq: v1.8.0 => v1.0.2
INFO: Downgrading ParameterizedFunctions: v1.3.0 => v1.2.0
INFO: Downgrading StochasticDiffEq: v1.4.0 => v0.5.0
INFO: Installing StructIO v0.0.2
INFO: Downgrading Sundials: v0.10.0 => v0.9.0
INFO: Installing TerminalUI v0.0.2
INFO: Installing VT100 v0.1.0
INFO: Removing DelayDiffEq v0.3.0
INFO: Removing DiffEqBiological v0.0.1
INFO: Removing DiffEqCallbacks v0.0.2
INFO: Removing DiffEqFinancial v0.1.0
INFO: Removing DiffEqJump v0.3.0
INFO: Removing DiffEqMonteCarlo v0.2.0
INFO: Removing MultiScaleArrays v0.1.0
INFO: Building HttpParser
INFO: Building Homebrew


Same for me. I still can’t install Atom and DifferentialEquations.


Something similar happens in Julia 0.6.

julia> Pkg.status()
8 required packages:
 - Atom                          0.5.10
 - DifferentialEquations         1.10.1
 - GLM                           0.7.0
 - Gurobi                        0.3.1
 - JuMP                          0.16.2
 - Plots                         0.10.3
 - PyPlot                        2.3.1
 - StatsModels                   0.0.2
119 additional packages:
 - ASTInterpreter                0.0.4
 - AbstractTrees                 0.0.4
 - AlgebraicDiffEq               0.1.0
 - ArgParse                      0.4.0
 - BinDeps                       0.4.7
 - Blink                         0.5.1
 - COFF                          0.0.2
 - CRC                           1.2.0
 - Calculus                      0.2.2
 - CategoricalArrays             0.1.3
 - ChunkedArrays                 0.1.1
 - CodeTools                     0.4.3
 - Codecs                        0.3.0
 - ColorTypes                    0.4.1
 - Colors                        0.7.3
 - Combinatorics                 0.4.0
 - Compat                        0.23.0
 - Conda                         0.5.3
 - DWARF                         0.1.0
 - DataArrays                    0.4.0
 - DataFrames                    0.9.1
 - DataStreams                   0.1.3
 - DataStructures                0.5.3
 - DataTables                    0.0.3
 - DelayDiffEq                   0.3.0
 - DiffBase                      0.1.0
 - DiffEqBase                    0.15.0
 - DiffEqBiological              0.0.1
 - DiffEqCallbacks               0.0.2
 - DiffEqDevTools                0.7.0
 - DiffEqFinancial               0.1.0
 - DiffEqJump                    0.3.0
 - DiffEqMonteCarlo              0.2.0
 - DiffEqPDEBase                 0.2.0
 - DiffEqParamEstim              0.2.0
 - DiffEqSensitivity             0.1.0
 - Distances                     0.4.1
 - Distributions                 0.12.5
 - ELF                           0.1.0
 - EllipsisNotation              0.1.0
 - FileIO                        0.3.1
 - FiniteElementDiffEq           0.3.0
 - FixedPointNumbers             0.3.6
 - FixedSizeArrays               0.2.5
 - ForwardDiff                   0.4.2
 - GZip                          0.3.0
 - Gallium                       0.0.4
 - GenericSVD                    0.0.2
 - Hiccup                        0.1.1
 - HttpCommon                    0.2.7
 - HttpParser                    0.2.0
 - HttpServer                    0.2.0
 - InplaceOps                    0.1.0
 - IterativeSolvers              0.2.2
 - Iterators                     0.3.0
 - JSON                          0.9.0
 - JuliaParser                   0.7.4
 - Juno                          0.2.7
 - LNR                           0.0.2
 - LaTeXStrings                  0.2.1
 - Lazy                          0.11.6
 - LearnBase                     0.1.5
 - LineSearches                  0.1.5
 - LossFunctions                 0.1.0
 - LsqFit                        0.2.0
 - MachO                         0.0.4
 - MacroTools                    0.3.6
 - MathProgBase                  0.6.4
 - MbedTLS                       0.4.5
 - Measures                      0.1.0
 - Media                         0.2.7
 - MultiScaleArrays              0.1.0
 - Mustache                      0.1.4
 - Mux                           0.2.3
 - NLsolve                       0.9.1
 - NaNMath                       0.2.4
 - NullableArrays                0.1.0
 - ObjFileBase                   0.0.4
 - Optim                         0.7.8
 - OrdinaryDiffEq                1.8.0
 - PDMats                        0.6.0
 - ParameterizedFunctions        1.3.0
 - Parameters                    0.7.2
 - PlotThemes                    0.1.1
 - PlotUtils                     0.3.0
 - PolynomialFactors             0.0.4
 - Polynomials                   0.1.5
 - PositiveFactorizations        0.0.4
 - Primes                        0.1.3
 - PyCall                        1.12.0
 - QuadGK                        0.1.2
 - Ranges                        0.0.1
 - Reactive                      0.3.7
 - RecipesBase                   0.1.0
 - RecursiveArrayTools           0.2.0
 - Reexport                      0.0.3
 - ResettableStacks              0.1.0
 - ReverseDiffSparse             0.7.2
 - Rmath                         0.1.6
 - Roots                         0.3.0
 - SHA                           0.3.2
 - Showoff                       0.1.1
 - SimpleTraits                  0.4.0
 - SortingAlgorithms             0.1.1
 - SpecialFunctions              0.1.1
 - StatsBase                     0.13.1
 - StatsFuns                     0.5.0
 - StochasticDiffEq              1.4.0
 - StokesDiffEq                  0.1.0
 - StructIO                      0.0.2
 - Sundials                      0.10.0
 - SymEngine                     0.1.5
 - TerminalUI                    0.0.2
 - TextWrap                      0.2.0
 - URIParser                     0.1.8
 - VT100                         0.1.0
 - VectorizedRoutines            0.0.2
 - WeakRefStrings                0.2.0
 - WebSockets                    0.2.1
julia> Pkg.rm("GLM")
ERROR: resolve is unable to satisfy package requirements.
  The problem was detected when trying to find a feasible version
  for package ParameterizedFunctions.
  However, this only means that package ParameterizedFunctions is involved in an
  unsatisfiable or difficult dependency relation, and the root of
  the problem may be elsewhere.
  (you may try increasing the value of the JULIA_PKGRESOLVE_ACCURACY
   environment variable)

 [1] resolve(::Dict{String,Base.Pkg.Types.VersionSet}, ::Dict{String,Dict{VersionNumber,Base.Pkg.Types.Available}}) at ./pkg/resolve.jl:48
 [2] resolve(::Dict{String,Base.Pkg.Types.VersionSet}, ::Dict{String,Dict{VersionNumber,Base.Pkg.Types.Available}}, ::Dict{String,Tuple{VersionNumber,Bool}}, ::Dict{String,Base.Pkg.Types.Fixed}, ::Dict{String,VersionNumber}, ::Set{String}) at ./pkg/entry.jl:499
 [3] resolve(::Dict{String,Base.Pkg.Types.VersionSet}, ::Dict{String,Dict{VersionNumber,Base.Pkg.Types.Available}}, ::Dict{String,Tuple{VersionNumber,Bool}}, ::Dict{String,Base.Pkg.Types.Fixed}) at ./pkg/entry.jl:479
 [4] edit(::Function, ::String) at ./pkg/entry.jl:30
 [5] rm(::String) at ./pkg/entry.jl:81
 [6] (::Base.Pkg.Dir.##4#7{Array{Any,1},Base.Pkg.Entry.#rm,Tuple{String}})() at ./pkg/dir.jl:36
 [7] cd(::Base.Pkg.Dir.##4#7{Array{Any,1},Base.Pkg.Entry.#rm,Tuple{String}}, ::String) at ./file.jl:70
 [8] #cd#1(::Array{Any,1}, ::Function, ::Function, ::String, ::Vararg{String,N} where N) at ./pkg/dir.jl:36
 [9] rm(::String) at ./pkg/pkg.jl:97
julia> versioninfo()
Julia Version 0.6.0-pre.beta.187
Commit 55c97fb (2017-04-17 23:06 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, haswell)


Issues here as well. I managed to install by deleting most packages and putting DifferentialEquations (and a couple others) in REQUIRE. I was able to get Atom and DifferentialEquations that way. This is not only an issue with DifferentialEquations however. I had a similar problem just trying to update on an other computer (which was solved again by deleting everything).


I can’t add DifferentialEquations.jl now either. It’s crazy that we’re adding all these version bounds to prevent theoretical issues, while causing real issues for users.


As an update for users:

If you are having resolver issues, one way you can get around them in DifferentialEquations.jl is simply by directly using the component packages. For example, for solving ODEs you can directly use DiffEqBase plus an ODE solver. There is a package in the documentation which explains this further:


Note that using DifferentialEquations.jl like this means that there won’t be default algorithms, so you have to tell solve which algorithm to use.


Have you tried increasing the resolver accuracy? It often works for me:



FYI: while increasing JULIA_PKGRESOLVE_ACCURACY often lets the resolver run without apparent issue, I’ve found that it often installs out of date packages.


Oh, derp. Good to know, thanks!