5

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?

Sos
  • 1,783
  • 2
  • 20
  • 46
  • 1
    Curious why you have so many channels listed? Having extra (potentially un-used) channels may not be the main problem but it can exacerbate issues. This error message is notoriously opaque; it doesn't even necessarily mean that it can't find `qt` from `conda-forge` – Matt Thompson Jul 11 '21 at 16:39
  • Thanks for your comment @MattThompson. I've added those channels because they were needed at some point though I recognize that not all are currently needed (I can drop `r` for instance). I do not understand what you mean regarding `qt` considering that `conda-forge` is part of my `condarc` channels, and is also specified in the channel list and therefore it should be one of those being searched. If it isn't finding it in another channel that's not `conda-forge`, shouldn't it then search `conda-forge` anyway? – Sos Jul 12 '21 at 08:01
  • 1
    I mean to only point out that the error message is misleading; you can easily read it as the solver saying "I couldn't find qt 5.6.* from conda-forge" but the solver is not really being useful there. (As you have correctly found, it is available from conda-forge.) The root of the issue is often more complicated and deals with how each packages depend on each other, as @merv describes in his answer with much more detail than I had the patience to find myself. – Matt Thompson Jul 13 '21 at 18:45

1 Answers1

4

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.

merv
  • 67,214
  • 13
  • 180
  • 245
  • 1
    Many thanks for this @merv. A quick question, would an installation from github [adapting this answer for instance](https://stackoverflow.com/a/32799944/1379826) present as plausible solution to overcome the outdated rstudio version in conda? – Sos Jul 13 '21 at 09:11
  • @Sos for what package? I am unclear what you still see as a problem to be solved. GitHub installs with Conda only work through Pip and therefore only apply to Python packages. Moreover, Bioconductor packages are pinned to R versions, so I doubt you could install mixomics=6.16 to ever build for under R v4.1, no matter where you sourced it. – merv Jul 13 '21 at 20:01
  • Alright, thanks, I understand. Many thanks – Sos Jul 14 '21 at 09:05