Search code examples
condamamba

Unsatisfiable conda packages though packages are found in conda-forge: package XXX requires package YYY, but none of the providers can be installed


I am trying to make a simple environment:

channels:
- rdonnelly
- bioconda
- anaconda
- r
- conda-forge
- defaults

dependencies:
- bioconda::bioconductor-mixomics>=6.16
- free::fonts-continuum
- rstudio

mamba env create -f my_env.yaml -n some_env, after which I get packages missing:

Looking for: ["bioconda::bioconductor-mixomics[version='>=6.16']", 'free::fonts-continuum', 'rstudio']


Encountered problems while solving:
  - package rstudio-1.0.153-1 requires qt 5.6.*, but none of the providers can be installed

However, I can see that qt exists in conda-forge:

mamba search conda-forge::qt

# returns
Loading channels: done
# Name                       Version           Build  Channel             
qt                             4.8.7      ha8c56c7_9  conda-forge         
qt                             5.6.2   hbe13537_1012  conda-forge         
qt                             5.6.2   hce4f676_1013  conda-forge         
qt                             5.6.2   hf516382_1009  conda-forge         
qt                             5.6.2   hf516382_1010  conda-forge         
qt                             5.6.2   hf516382_1011  conda-forge         
qt                             5.9.7      h0c104cb_3  conda-forge         
qt                             5.9.7      h52cfd70_2  conda-forge         
...

If I add qt=5.6 to my_env.yaml, the error changes for another package instead. What is going on? It sounds like my conda or mamba installation is buggy. I've tried conda clean -a but the problem remains.

Any idea why this is happening?


Solution

  • RStudio on Conda is Old

    Perhaps a bug in the conflicting reporting, but, going down the dependency rabbit hole a bit, it really does appear to be unsatisfiable. Specifically, that Bioconductor package you want requires R 4.1, and r-base=4.1.0 has the requirement icu >=68.1,<69.0a0.

    On the other hand, rstudio has a qt dependency, which in turn depends on icu. However, because all versions of rstudio on Anaconda Cloud are unmaintained, they're rather old, so you either end up with

    • rstudio =1.1.456 -> qt =5.6.* -> icu >=58.2,<59.0a0 (via defaults)
    • rstudio =1.2.502 -> qt >=5.9.4,<5.10.0a0] -> icu >=64.2,<65.0a0 (via rdonnelly)

    each of which prohibit using R 4.1.

    Technically, you could try installing older versions of mixomics, but the more important takeaway here is: don't install RStudio through Conda.

    Use Native RStudio

    In general, one should not be installing infrastructure like RStudio into kernel-like environments. Install it once, at the native level, and load an environment by launching RStudio with the environment activated. See this answer for instructions on loading a Conda R environment into a native RStudio session.


    Additional Notes

    Bioconda has very specific channel requirements, specifically, all packages are built with strict channel priority using the order

    conda-forge > bioconda > defaults
    

    Not following this channel order can lead to undefined behavior.