Update package

Hello!

I am trying to update my Julia packages. I am working with Julia v1.10 and when I try to update the packages, the package version does not change. This seems to only be a problem for some packages and not all packages. I could for instance successfully update FileIO to the latest version but when I try the majority of the packages such as OrdinaryDiffEq, I get the following message:

(@v1.10) pkg> update OrdinaryDiffEq
    Updating registry at `C:\Users\user\.julia\registries\General.toml`
  No Changes to `C:\Users\user\.julia\environments\v1.10\Project.toml`
  No Changes to `C:\Users\user\.julia\environments\v1.10\Manifest.toml`
Precompiling project...
  ? DomainSets
  ? SciMLSensitivity
  ? DiffEqSensitivity
  ? Symbolics
  ? ModelingToolkit
  ? DataInterpolations → DataInterpolationsSymbolicsExt
  ? DiffEqFlux
  ? DataDrivenDiffEq
  ? DataDrivenSparse

(@v1.10) pkg> status OrdinaryDiffEq
Status `C:\Users\user\.julia\environments\v1.10\Project.toml`
⌃ [1dea7af3] OrdinaryDiffEq v6.33.3
Info Packages marked with ⌃ have new versions available and may be upgradable.

Essentially, the package has not updated. In the first line at (@v1.10) pkg> update OrdinaryDiffEq, the output says No Changes. I am wondering why it says that and if that may be the source of error?

Looks a bit strange to me too… What happens if you don’t specify the package, i.e. just do pkg> update?

Do ]add OrdinaryDiffEq@6.74

I get an error message regarding the dependencies as shown below:

(@v1.10) pkg> update
    Updating registry at `C:\Users\kianha\.julia\registries\General.toml`
    Updating git-repo `https://github.com/SciML/deSolveDiffEq.jl`
   Installed Zstd_jll ─────────── v1.5.6+0
   Installed XML2_jll ─────────── v2.12.6+0
   Installed Suppressor ───────── v0.2.7
   Installed TranscodingStreams ─ v0.10.7
  Downloaded artifact: Zstd
  Downloaded artifact: XML2
  No Changes to `C:\Users\kianha\.julia\environments\v1.10\Project.toml`
    Updating `C:\Users\kianha\.julia\environments\v1.10\Manifest.toml`
  [fd094767] ↑ Suppressor v0.2.6 ⇒ v0.2.7
  [3bb67fe8] ↑ TranscodingStreams v0.10.6 ⇒ v0.10.7
  [02c8fc9c] ↑ XML2_jll v2.12.5+0 ⇒ v2.12.6+0
  [3161d3a3] ↑ Zstd_jll v1.5.5+0 ⇒ v1.5.6+0
Precompiling project...
  ✓ TranscodingStreams
  ✓ Zstd_jll
  ✓ XML2_jll
  ? DomainSets
  ✓ TranscodingStreams → TestExt
  ✗ RCall
  ✗ LSODA
  ? SciMLSensitivity
  ? DiffEqSensitivity
  ? Symbolics
  ✗ deSolveDiffEq
  ✗ Forecast
  ? ModelingToolkit
  ? DataInterpolations → DataInterpolationsSymbolicsExt
  ? DataDrivenDiffEq
  ? DiffEqFlux
  ? DataDrivenSparse
  6 dependencies successfully precompiled in 85 seconds. 562 already precompiled.
  6 dependencies precompiled but different versions are currently loaded. Restart julia to access the new versions
  9 dependencies failed but may be precompilable after restarting julia
  9 dependencies had output during precompilation:
┌ Symbolics
│  WARNING: Method definition isapprox(IntervalSets.AbstractInterval{T} where T, IntervalSets.AbstractInterval{T} where T) in module IntervalSets at C:\Users\kianha\.julia\packages\IntervalSets\kyCuf\src\IntervalSets.jl:296 overwritten in module DomainSets at C:\Users\kianha\.julia\packages\DomainSets\aafhp\src\domains\interval.jl:52.
│  ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation.
└
┌ ModelingToolkit
│  WARNING: Method definition isapprox(IntervalSets.AbstractInterval{T} where T, IntervalSets.AbstractInterval{T} where T) in module IntervalSets at C:\Users\kianha\.julia\packages\IntervalSets\kyCuf\src\IntervalSets.jl:296 overwritten in module DomainSets at C:\Users\kianha\.julia\packages\DomainSets\aafhp\src\domains\interval.jl:52.
│  ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation.
└
┌ DataDrivenSparse
│  WARNING: Method definition isapprox(IntervalSets.AbstractInterval{T} where T, IntervalSets.AbstractInterval{T} where T) in module IntervalSets at C:\Users\kianha\.julia\packages\IntervalSets\kyCuf\src\IntervalSets.jl:296 overwritten in module DomainSets at C:\Users\kianha\.julia\packages\DomainSets\aafhp\src\domains\interval.jl:52.
│  ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation.
└
┌ SciMLSensitivity
│  WARNING: Method definition (::ChainRulesCore.ProjectTo{var"#s441"<:(ChainRulesCore.Tangent{var"#s440", T} where T where var"#s440"<:Tuple), D<:(NamedTuple{names, T} where T<:Tuple where names)})(StaticArraysCore.SArray{S, T, N, L} where L where N where T where S<:Tuple) in module StaticArraysChainRulesCoreExt at C:\Users\kianha\.julia\packages\StaticArrays\EHHaF\ext\StaticArraysChainRulesCoreExt.jl:10 overwritten in module SciMLSensitivity at C:\Users\kianha\.julia\packages\SciMLSensitivity\rYAAz\src\staticarrays.jl:2.
│  ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation.
└
┌ DiffEqSensitivity
│  WARNING: method definition for seed_duals at C:\Users\kianha\.julia\packages\DiffEqSensitivity\Pn9H4\src\forward_sensitivity.jl:418 declares type variable T but does not use it.       
│  WARNING: method definition for ODE_DEFAULT_NORM at C:\Users\kianha\.julia\packages\DiffEqSensitivity\Pn9H4\src\reversediff.jl:14 declares type variable N but does not use it.
│  WARNING: method definition for ODE_DEFAULT_NORM at C:\Users\kianha\.julia\packages\DiffEqSensitivity\Pn9H4\src\reversediff.jl:26 declares type variable N but does not use it.
│  WARNING: Method definition wiener_randn(Random.AbstractRNG, ReverseDiff.TrackedArray{V, D, N, VA, DA} where DA where VA where N where D where V) in module DiffEqNoiseProcessReverseDiffExt at C:\Users\kianha\.julia\packages\DiffEqNoiseProcess\jSJNI\ext\DiffEqNoiseProcessReverseDiffExt.jl:6 overwritten in module DiffEqSensitivity at C:\Users\kianha\.julia\packages\DiffEqSensitivity\Pn9H4\src\reversediff.jl:49.
│  ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation.
└
┌ DataDrivenDiffEq
│  WARNING: Method definition isapprox(IntervalSets.AbstractInterval{T} where T, IntervalSets.AbstractInterval{T} where T) in module IntervalSets at C:\Users\kianha\.julia\packages\IntervalSets\kyCuf\src\IntervalSets.jl:296 overwritten in module DomainSets at C:\Users\kianha\.julia\packages\DomainSets\aafhp\src\domains\interval.jl:52.
│  ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation.
└
┌ DiffEqFlux
│  WARNING: Method definition (::ChainRulesCore.ProjectTo{var"#s441"<:(ChainRulesCore.Tangent{var"#s440", T} where T where var"#s440"<:Tuple), D<:(NamedTuple{names, T} where T<:Tuple where names)})(StaticArraysCore.SArray{S, T, N, L} where L where N where T where S<:Tuple) in module StaticArraysChainRulesCoreExt at C:\Users\kianha\.julia\packages\StaticArrays\EHHaF\ext\StaticArraysChainRulesCoreExt.jl:10 overwritten in module SciMLSensitivity at C:\Users\kianha\.julia\packages\SciMLSensitivity\rYAAz\src\staticarrays.jl:2.
│  ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation.
└
┌ DataInterpolations → DataInterpolationsSymbolicsExt
│  WARNING: Method definition isapprox(IntervalSets.AbstractInterval{T} where T, IntervalSets.AbstractInterval{T} where T) in module IntervalSets at C:\Users\kianha\.julia\packages\IntervalSets\kyCuf\src\IntervalSets.jl:296 overwritten in module DomainSets at C:\Users\kianha\.julia\packages\DomainSets\aafhp\src\domains\interval.jl:52.
│  ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation.
└
┌ DomainSets
│  WARNING: Method definition isapprox(IntervalSets.AbstractInterval{T} where T, IntervalSets.AbstractInterval{T} where T) in module IntervalSets at C:\Users\kianha\.julia\packages\IntervalSets\kyCuf\src\IntervalSets.jl:296 overwritten in module DomainSets at C:\Users\kianha\.julia\packages\DomainSets\aafhp\src\domains\interval.jl:52.
│  ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation.
└
  4 dependencies errored.
  For a report of the errors see `julia> err`. To retry use `pkg> precompile`

I get an error message stating the following:

(@v1.10) pkg> add OrdinaryDiffEq@6.74
   Resolving package versions...
ERROR: Unsatisfiable requirements detected for package DocStringExtensions [ffbed154]:
 DocStringExtensions [ffbed154] log:
 ├─possible versions are: 0.4.6-0.9.3 or uninstalled
 ├─restricted by compatibility requirements with Optimization [7f7a1694] to versions: 0.8.0-0.9.3
 │ └─Optimization [7f7a1694] log:
 │   ├─possible versions are: 3.5.0-3.24.3 or uninstalled
 │   └─restricted to versions * by an explicit requirement, leaving only versions: 3.5.0-3.24.3
 ├─restricted by compatibility requirements with GalacticOptim [a75be94c] to versions: 0.8.0-0.8.6
 │ └─GalacticOptim [a75be94c] log:
 │   ├─possible versions are: 0.1.0-3.4.0 or uninstalled
 │   ├─restricted to versions * by an explicit requirement, leaving only versions: 0.1.0-3.4.0
 │   ├─restricted by compatibility requirements with Zygote [e88e6eb3] to versions: 0.4.4-3.4.0 or uninstalled, leaving only versions: 0.4.4-3.4.0
 │   │ └─Zygote [e88e6eb3] log:
 │   │   ├─possible versions are: 0.1.0-0.6.69 or uninstalled
 │   │   ├─restricted to versions * by an explicit requirement, leaving only versions: 0.1.0-0.6.69
 │   │   ├─restricted by compatibility requirements with Lux [b2108857] to versions: 0.6.0-0.6.69 or uninstalled, leaving only versions: 0.6.0-0.6.69
 │   │   │ └─Lux [b2108857] log:
 │   │   │   ├─possible versions are: 0.3.0-0.5.30 or uninstalled
 │   │   │   └─restricted to versions * by an explicit requirement, leaving only versions: 0.3.0-0.5.30
 │   │           ├─possible versions are: 0.1.0-0.2.1 or uninstalled
 │   │           └─restricted to versions * by an explicit requirement, leaving only versions: 0.1.0-0.2.1
 │   └─restricted by compatibility requirements with Flux [587475ba] to versions: [0.1.0-0.1.1, 2.0.0-3.4.0] or uninstalled, leaving only versions: 2.0.0-3.4.0
 │     └─Flux [587475ba] log: see above
 └─restricted by compatibility requirements with OrdinaryDiffEq [1dea7af3] to versions: 0.9.0-0.9.3 — no versions left
   └─OrdinaryDiffEq [1dea7af3] log:
     ├─possible versions are: 4.0.0-6.74.1 or uninstalled
     └─restricted to versions 6.74 by an explicit requirement, leaving only versions: 6.74.0-6.74.1

Which is strange because OrdinaryDiffEq shouldn’t depend on other packages as shown when I ran status --outdated:

⌅ [336ed68f] CSV v0.8.5 (<v0.10.13): Forecast
⌃ [b0b7db55] ComponentArrays v0.13.7 (<v0.15.11)
⌃ [2445eb08] DataDrivenDiffEq v1.0.2 (<v1.3.0)
⌃ [a93c6f00] DataFrames v1.3.6 (<v1.6.1)
⌅ [2b5f629d] DiffEqBase v6.108.0 (<v6.148.0): OrdinaryDiffEq
⌃ [aae7a2af] DiffEqFlux v2.4.0 (<v3.3.1)
⌃ [0c46a032] DifferentialEquations v7.6.0 (<v7.13.0)
⌅ [587475ba] Flux v0.13.17 (<v0.14.15): OptimizationFlux
⌃ [b2108857] Lux v0.5.5 (<v0.5.30)
⌅ [f1d291b0] MLUtils v0.3.1 (<v0.4.4): DataDrivenDiffEq
⌅ [961ee093] ModelingToolkit v8.36.0 (<v9.8.0): DataDrivenDiffEq
⌃ [50b5cf9e] NLLSsolver v3.1.2 (<v4.0.0)
⌅ [3bd65402] Optimisers v0.2.20 (<v0.3.2): Flux, OptimizationOptimisers
⌃ [7f7a1694] Optimization v3.14.0 (<v3.24.3)
⌃ [253f991c] OptimizationFlux v0.1.4 (<v0.2.1)
⌃ [4e6fcdb7] OptimizationNLopt v0.1.5 (<v0.2.0)
⌃ [36348300] OptimizationOptimJL v0.1.8 (<v0.2.3)
⌃ [42dfb2eb] OptimizationOptimisers v0.1.2 (<v0.2.1)
⌃ [1dea7af3] OrdinaryDiffEq v6.33.3 (<v6.74.1)
⌃ [f0f68f2c] PlotlyJS v0.18.12 (<v0.18.13)
⌃ [1ed8b502] SciMLSensitivity v7.16.0 (<v7.56.2)
⌃ [102930c3] SmoothingSplines v0.3.1 (<v0.3.2)
⌅ [2913bbd2] StatsBase v0.33.21 (<v0.34.2): DataDrivenDiffEq, Forecast, LearnBase, MLDataPattern, MLDataUtils, MLLabelUtils, MLUtils, SmoothingSplines

Any suggestions which package to start updating in that case?

I would start with a clean environment:

mkdir my_project
cd my_project
julia --project="."

and then add the packages that you need one by one, always checking the status with

] # enter package manager mode
st

after each added package to see which package is causing downgrading.

2 Likes

GalacticOptim is no longer a thing (older version of Optimization.jl), I would start with a fresh env as @ ufechner7 suggested, and only add packages you need.

1 Like

Often the issue is the opposite: in Julia packages have also an upper bound, so packages that depends on OrdinaryDiffEq may block it.

The “julian way” to avoid package dependency hell is to work on a separate environment for each project you are using Julia for.
Environments are very cheap (just a couple of small text files), so that you can have thousand of environments on your pc, each one with its specific list of packages used for that specific project… (I use the word “project” here, that not by chance is also the name of one of these two files I was referring to)

1 Like