pythoncondaminiconda

Conda update flips between two versions of fmt


When I do conda update -n base --all, I get this:

The following packages will be UPDATED:

  libmamba           artifactory/api/conda/conda-forge::li~ --> pkgs/main::libmamba-1.5.8-h99b1521_2
  libmambapy         artifactory/api/conda/conda-forge::li~ --> pkgs/main::libmambapy-1.5.8-py311h77c03ed_2
  pybind11-abi       artifactory/api/conda/conda-forge::py~ --> pkgs/main::pybind11-abi-5-hd3eb1b0_0

The following packages will be DOWNGRADED:

  fmt                                     10.2.1-h181d51b_0 --> 9.1.0-h181d51b_0
  libarchive                               3.7.2-h313118b_1 --> 3.6.2-h6f8411a_1

On the next invocation of conda update -n base --all I get

The following packages will be UPDATED:

  fmt                                      9.1.0-h181d51b_0 --> 10.2.1-h181d51b_0
  libarchive                               3.6.2-h6f8411a_1 --> 3.7.2-h313118b_1

The following packages will be SUPERSEDED by a higher-priority channel:

  libmamba             pkgs/main::libmamba-1.5.8-h99b1521_2 --> artifactory/api/conda/conda-forge::libmamba-1.5.8-h3f09ed1_0
  libmambapy         pkgs/main::libmambapy-1.5.8-py311h77c~ --> artifactory/api/conda/conda-forge::libmambapy-1.5.8-py311h0317a69_0
  pybind11-abi         pkgs/main::pybind11-abi-5-hd3eb1b0_0 --> artifactory/api/conda/conda-forge::pybind11-abi-4-hd8ed1ab_3

and the cycle repeats.

I.e., I never get All requested packages already installed.

Is there a way to avoid this insanity?

PS1: conda 24.5.0

PS2: After RTFM, the answer turned out to be

conda config --set channel_priority flexible

(it was false before -- dunno why, I think I copied it from the local docs without thinking).


Solution

  • You have a configuration where conda finds a higher version of fmt and libarchive in a lower priority channel, so it installs the updates along with equivalent-versioned related packages from that channel.

    Then it finds the same version numbers of the libmamba and pybind11 packages in your primary channel so it installs those, but has to downgrade fmt and libarchive.

    You can do any of the following:

    conda update -n base --all conda-forge::fmt conda-forge::libarchive
    
    conda update -n base --all -c conda-forge -c defaults
    
    conda config --prepend channels conda-forge