rcondaminicondapatchworkconda-forge

conda install -c conda-forge r-** install irrelevant packages


I am installing the R package patchwork in a self-created R virtual environment in miniconda3 through the command conda install -c conda-forge r-patchwork after activating the virtual env. In the list of R packages to install, I find many packages irrelevant to patchwork. I wish to ask why so many irrelevant packages are installed and if it is possible to install only patchwork and its dependencies?

Here is a screenshot showing many packages irrelevant to patchwork are installed using the code above: enter image description here


Solution

  • All the packages are relevant. While the immediate dependencies of r-patchwork are only r-base, r-ggplot and r-gtable, those each have their own dependencies. One can use Mamba's repoquery functionality to generate the full dependency graph.

    ## using Mambaforge container
    $ docker run --rm -it condaforge/mambaforge:latest
    
    ## create environment with r-patchwork as only spec
    (base) $ mamba create -qyn foo r-patchwork
    # this installs 139 packages...
    
    ## activate environment
    (base) $ conda activate foo
    
    ## show the dependency graph for r-patchwork
    (foo) $ mamba repoquery depends --tree r-patchwork
    
    r-patchwork[1.1.2]
      ├─ r-base[4.2.2]
      │  ├─ _r-mutex[1.0.1]
      │  ├─ bwidget[1.9.14]
      │  │  └─ tk[8.6.12]
      │  │     ├─ libgcc-ng[12.2.0]
      │  │     │  ├─ _libgcc_mutex[0.1]
      │  │     │  └─ _openmp_mutex[4.5]
      │  │     │     ├─ _libgcc_mutex already visited
      │  │     │     └─ libgomp[12.2.0]
      │  │     │        └─ _libgcc_mutex already visited
      │  │     └─ libzlib[1.2.13]
      │  │        └─ libgcc-ng already visited
      │  ├─ tk already visited
      │  ├─ libgcc-ng already visited
      │  ├─ libzlib already visited
      │  ├─ bzip2[1.0.8]
      │  │  └─ libgcc-ng already visited
      │  ├─ cairo[1.16.0]
      │  │  ├─ libgcc-ng already visited
      │  │  ├─ libzlib already visited
      │  │  ├─ fontconfig[2.14.1]
      │  │  │  ├─ libgcc-ng already visited
      │  │  │  ├─ libzlib already visited
      │  │  │  ├─ expat[2.5.0]
      │  │  │  │  ├─ libgcc-ng already visited
      │  │  │  │  └─ libstdcxx-ng[12.2.0]
      │  │  │  ├─ freetype[2.12.1]
      │  │  │  │  ├─ libgcc-ng already visited
      │  │  │  │  ├─ libzlib already visited
      │  │  │  │  └─ libpng[1.6.39]
      │  │  │  │     ├─ libgcc-ng already visited
      │  │  │  │     └─ libzlib already visited
      │  │  │  └─ libuuid[2.32.1]
      │  │  │     └─ libgcc-ng already visited
      │  │  ├─ freetype already visited
      │  │  ├─ libpng already visited
      │  │  ├─ fonts-conda-ecosystem[1]
      │  │  │  └─ fonts-conda-forge[1]
      │  │  │     ├─ font-ttf-dejavu-sans-mono[2.37]
      │  │  │     ├─ font-ttf-inconsolata[3.000]
      │  │  │     ├─ font-ttf-source-code-pro[2.038]
      │  │  │     └─ font-ttf-ubuntu[0.83]
      │  │  ├─ icu[70.1]
      │  │  │  ├─ libgcc-ng already visited
      │  │  │  └─ libstdcxx-ng already visited
      │  │  ├─ libglib[2.74.1]
      │  │  │  ├─ libgcc-ng already visited
      │  │  │  ├─ libzlib already visited
      │  │  │  ├─ libstdcxx-ng already visited
      │  │  │  ├─ gettext[0.21.1]
      │  │  │  │  └─ libgcc-ng already visited
      │  │  │  ├─ libffi[3.4.2]
      │  │  │  │  └─ libgcc-ng already visited
      │  │  │  ├─ libiconv[1.17]
      │  │  │  │  └─ libgcc-ng already visited
      │  │  │  └─ pcre2[10.40]
      │  │  │     ├─ libgcc-ng already visited
      │  │  │     ├─ libzlib already visited
      │  │  │     └─ bzip2 already visited
      │  │  ├─ libxcb[1.13]
      │  │  │  ├─ libgcc-ng already visited
      │  │  │  ├─ pthread-stubs[0.4]
      │  │  │  │  └─ libgcc-ng already visited
      │  │  │  ├─ xorg-libxau[1.0.9]
      │  │  │  │  └─ libgcc-ng already visited
      │  │  │  └─ xorg-libxdmcp[1.1.3]
      │  │  │     └─ libgcc-ng already visited
      │  │  ├─ pixman[0.40.0]
      │  │  │  └─ libgcc-ng already visited
      │  │  ├─ xorg-libice[1.0.10]
      │  │  │  └─ libgcc-ng already visited
      │  │  ├─ xorg-libsm[1.2.3]
      │  │  │  ├─ libgcc-ng already visited
      │  │  │  ├─ libuuid already visited
      │  │  │  └─ xorg-libice already visited
      │  │  ├─ xorg-libx11[1.7.2]
      │  │  │  ├─ libgcc-ng already visited
      │  │  │  ├─ libxcb already visited
      │  │  │  ├─ xorg-kbproto[1.0.7]
      │  │  │  │  └─ libgcc-ng already visited
      │  │  │  └─ xorg-xproto[7.0.31]
      │  │  │     └─ libgcc-ng already visited
      │  │  ├─ xorg-libxext[1.3.4]
      │  │  │  ├─ libgcc-ng already visited
      │  │  │  ├─ xorg-libx11 already visited
      │  │  │  └─ xorg-xextproto[7.3.0]
      │  │  │     └─ libgcc-ng already visited
      │  │  ├─ xorg-libxrender[0.9.10]
      │  │  │  ├─ libgcc-ng already visited
      │  │  │  ├─ xorg-libx11 already visited
      │  │  │  └─ xorg-renderproto[0.11.1]
      │  │  │     └─ libgcc-ng already visited
      │  │  └─ zlib[1.2.13]
      │  │     ├─ libgcc-ng already visited
      │  │     └─ libzlib already visited
      │  ├─ libstdcxx-ng already visited
      │  ├─ freetype already visited
      │  ├─ libpng already visited
      │  ├─ libuuid already visited
      │  ├─ icu already visited
      │  ├─ libglib already visited
      │  ├─ pcre2 already visited
      │  ├─ curl[7.86.0]
      │  │  ├─ libgcc-ng already visited
      │  │  ├─ libzlib already visited
      │  │  ├─ krb5[1.19.3]
      │  │  │  ├─ libgcc-ng already visited
      │  │  │  ├─ libstdcxx-ng already visited
      │  │  │  ├─ keyutils[1.6.1]
      │  │  │  │  └─ libgcc-ng already visited
      │  │  │  ├─ libedit[3.1.20191231]
      │  │  │  │  ├─ libgcc-ng already visited
      │  │  │  │  └─ ncurses[6.3]
      │  │  │  │     └─ libgcc-ng already visited
      │  │  │  └─ openssl[3.0.7]
      │  │  │     ├─ libgcc-ng already visited
      │  │  │     └─ ca-certificates[2022.9.24]
      │  │  ├─ openssl already visited
      │  │  ├─ libcurl[7.86.0]
      │  │  │  ├─ libgcc-ng already visited
      │  │  │  ├─ libzlib already visited
      │  │  │  ├─ krb5 already visited
      │  │  │  ├─ openssl already visited
      │  │  │  ├─ libnghttp2[1.47.0]
      │  │  │  │  ├─ libgcc-ng already visited
      │  │  │  │  ├─ libzlib already visited
      │  │  │  │  ├─ libstdcxx-ng already visited
      │  │  │  │  ├─ openssl already visited
      │  │  │  │  ├─ c-ares[1.18.1]
      │  │  │  │  │  └─ libgcc-ng already visited
      │  │  │  │  └─ libev[4.33]
      │  │  │  │     └─ libgcc-ng already visited
      │  │  │  └─ libssh2[1.10.0]
      │  │  │     ├─ libgcc-ng already visited
      │  │  │     ├─ libzlib already visited
      │  │  │     └─ openssl already visited
      │  │  └─ libssh2 already visited
      │  ├─ krb5 already visited
      │  ├─ ncurses already visited
      │  ├─ libcurl already visited
      │  ├─ libssh2 already visited
      │  ├─ gcc_impl_linux-64[12.2.0]
      │  │  ├─ libgcc-ng already visited
      │  │  ├─ libgomp already visited
      │  │  ├─ libstdcxx-ng already visited
      │  │  ├─ binutils_impl_linux-64[2.39]
      │  │  │  ├─ ld_impl_linux-64[2.39]
      │  │  │  └─ sysroot_linux-64[2.12]
      │  │  │     └─ kernel-headers_linux-64[2.6.32]
      │  │  ├─ sysroot_linux-64 already visited
      │  │  ├─ libgcc-devel_linux-64[12.2.0]
      │  │  └─ libsanitizer[12.2.0]
      │  │     └─ libgcc-ng already visited
      │  ├─ gfortran_impl_linux-64[12.2.0]
      │  │  ├─ libgcc-ng already visited
      │  │  ├─ libstdcxx-ng already visited
      │  │  ├─ gcc_impl_linux-64 already visited
      │  │  ├─ sysroot_linux-64 already visited
      │  │  └─ libgfortran5[12.2.0]
      │  ├─ libgfortran5 already visited
      │  ├─ gsl[2.7]
      │  │  ├─ libgcc-ng already visited
      │  │  ├─ libblas[3.9.0]
      │  │  │  └─ libopenblas[0.3.21]
      │  │  │     ├─ libgcc-ng already visited
      │  │  │     ├─ libgfortran5 already visited
      │  │  │     └─ libgfortran-ng[12.2.0]
      │  │  │        └─ libgfortran5 already visited
      │  │  └─ libcblas[3.9.0]
      │  │     └─ libblas already visited
      │  ├─ libblas already visited
      │  ├─ libgfortran-ng already visited
      │  ├─ gxx_impl_linux-64[12.2.0]
      │  │  ├─ gcc_impl_linux-64 already visited
      │  │  ├─ sysroot_linux-64 already visited
      │  │  └─ libstdcxx-devel_linux-64[12.2.0]
      │  ├─ jpeg[9e]
      │  │  └─ libgcc-ng already visited
      │  ├─ liblapack[3.9.0]
      │  │  └─ libblas already visited
      │  ├─ libtiff[4.4.0]
      │  │  ├─ libgcc-ng already visited
      │  │  ├─ libzlib already visited
      │  │  ├─ libstdcxx-ng already visited
      │  │  ├─ jpeg already visited
      │  │  ├─ lerc[4.0.0]
      │  │  │  ├─ libgcc-ng already visited
      │  │  │  └─ libstdcxx-ng already visited
      │  │  ├─ libdeflate[1.14]
      │  │  │  └─ libgcc-ng already visited
      │  │  ├─ libwebp-base[1.2.4]
      │  │  │  └─ libgcc-ng already visited
      │  │  ├─ xz[5.2.6]
      │  │  │  └─ libgcc-ng already visited
      │  │  └─ zstd[1.5.2]
      │  │     ├─ libgcc-ng already visited
      │  │     ├─ libzlib already visited
      │  │     └─ libstdcxx-ng already visited
      │  ├─ xz already visited
      │  ├─ libxml2[2.10.3]
      │  │  ├─ libgcc-ng already visited
      │  │  ├─ libzlib already visited
      │  │  ├─ icu already visited
      │  │  ├─ libiconv already visited
      │  │  └─ xz already visited
      │  ├─ make[4.3]
      │  │  └─ libgcc-ng already visited
      │  ├─ pango[1.50.12]
      │  │  ├─ libgcc-ng already visited
      │  │  ├─ cairo already visited
      │  │  ├─ fontconfig already visited
      │  │  ├─ freetype already visited
      │  │  ├─ libpng already visited
      │  │  ├─ fonts-conda-ecosystem already visited
      │  │  ├─ libglib already visited
      │  │  ├─ fribidi[1.0.10]
      │  │  │  └─ libgcc-ng already visited
      │  │  └─ harfbuzz[5.3.0]
      │  │     ├─ libgcc-ng already visited
      │  │     ├─ cairo already visited
      │  │     ├─ libstdcxx-ng already visited
      │  │     ├─ freetype already visited
      │  │     ├─ icu already visited
      │  │     ├─ libglib already visited
      │  │     └─ graphite2[1.3.13]
      │  │        ├─ libgcc-ng already visited
      │  │        └─ libstdcxx-ng already visited
      │  ├─ readline[8.1.2]
      │  │  ├─ libgcc-ng already visited
      │  │  └─ ncurses already visited
      │  ├─ sed[4.8]
      │  │  └─ libgcc-ng already visited
      │  ├─ tktable[2.10]
      │  │  ├─ tk already visited
      │  │  └─ libgcc-ng already visited
      │  └─ xorg-libxt[1.2.1]
      │     ├─ libgcc-ng already visited
      │     ├─ xorg-libice already visited
      │     ├─ xorg-libsm already visited
      │     ├─ xorg-libx11 already visited
      │     ├─ xorg-kbproto already visited
      │     └─ xorg-xproto already visited
      ├─ r-ggplot2[3.4.0]
      │  ├─ r-base already visited
      │  ├─ r-digest[0.6.30]
      │  │  ├─ r-base already visited
      │  │  ├─ libgcc-ng already visited
      │  │  └─ libstdcxx-ng already visited
      │  ├─ r-glue[1.6.2]
      │  │  ├─ r-base already visited
      │  │  └─ libgcc-ng already visited
      │  ├─ r-gtable[0.3.1]
      │  │  └─ r-base already visited
      │  ├─ r-isoband[0.2.6]
      │  │  ├─ r-base already visited
      │  │  ├─ libgcc-ng already visited
      │  │  ├─ libstdcxx-ng already visited
      │  │  ├─ r-rcpp[1.0.9]
      │  │  │  ├─ r-base already visited
      │  │  │  ├─ libgcc-ng already visited
      │  │  │  ├─ libstdcxx-ng already visited
      │  │  │  └─ __glibc >>> NOT FOUND <<<
      │  │  └─ r-testthat[3.1.5]
      │  │     ├─ r-base already visited
      │  │     ├─ libgcc-ng already visited
      │  │     ├─ libstdcxx-ng already visited
      │  │     ├─ r-digest already visited
      │  │     ├─ r-brio[1.1.3]
      │  │     │  ├─ r-base already visited
      │  │     │  └─ libgcc-ng already visited
      │  │     ├─ r-callr[3.7.3]
      │  │     │  ├─ r-base already visited
      │  │     │  ├─ r-processx[3.8.0]
      │  │     │  │  ├─ r-base already visited
      │  │     │  │  ├─ libgcc-ng already visited
      │  │     │  │  ├─ r-ps[1.7.2]
      │  │     │  │  │  ├─ r-base already visited
      │  │     │  │  │  └─ libgcc-ng already visited
      │  │     │  │  └─ r-r6[2.5.1]
      │  │     │  │     └─ r-base already visited
      │  │     │  └─ r-r6 already visited
      │  │     ├─ r-processx already visited
      │  │     ├─ r-ps already visited
      │  │     ├─ r-r6 already visited
      │  │     ├─ r-cli[3.4.1]
      │  │     │  ├─ r-base already visited
      │  │     │  ├─ libgcc-ng already visited
      │  │     │  ├─ libstdcxx-ng already visited
      │  │     │  └─ r-glue already visited
      │  │     ├─ r-crayon[1.5.2]
      │  │     │  └─ r-base already visited
      │  │     ├─ r-desc[1.4.2]
      │  │     │  ├─ r-base already visited
      │  │     │  ├─ r-r6 already visited
      │  │     │  ├─ r-cli already visited
      │  │     │  └─ r-rprojroot[2.0.3]
      │  │     │     ├─ r-base already visited
      │  │     │     └─ r-backports[1.4.1]
      │  │     │        ├─ r-base already visited
      │  │     │        └─ libgcc-ng already visited
      │  │     ├─ r-ellipsis[0.3.2]
      │  │     │  ├─ r-base already visited
      │  │     │  ├─ libgcc-ng already visited
      │  │     │  └─ r-rlang[1.0.6]
      │  │     │     ├─ r-base already visited
      │  │     │     ├─ libgcc-ng already visited
      │  │     │     └─ libstdcxx-ng already visited
      │  │     ├─ r-rlang already visited
      │  │     ├─ r-evaluate[0.18]
      │  │     │  └─ r-base already visited
      │  │     ├─ r-jsonlite[1.8.3]
      │  │     │  ├─ r-base already visited
      │  │     │  └─ libgcc-ng already visited
      │  │     ├─ r-lifecycle[1.0.3]
      │  │     │  ├─ r-base already visited
      │  │     │  ├─ r-glue already visited
      │  │     │  ├─ r-cli already visited
      │  │     │  └─ r-rlang already visited
      │  │     ├─ r-magrittr[2.0.3]
      │  │     │  ├─ r-base already visited
      │  │     │  └─ libgcc-ng already visited
      │  │     ├─ r-pkgload[1.3.2]
      │  │     │  ├─ r-base already visited
      │  │     │  ├─ r-glue already visited
      │  │     │  ├─ r-cli already visited
      │  │     │  ├─ r-crayon already visited
      │  │     │  ├─ r-desc already visited
      │  │     │  ├─ r-rprojroot already visited
      │  │     │  ├─ r-rlang already visited
      │  │     │  ├─ r-fs[1.5.2]
      │  │     │  │  ├─ r-base already visited
      │  │     │  │  ├─ libgcc-ng already visited
      │  │     │  │  └─ libstdcxx-ng already visited
      │  │     │  └─ r-withr[2.5.0]
      │  │     │     └─ r-base already visited
      │  │     ├─ r-withr already visited
      │  │     ├─ r-praise[1.0.0]
      │  │     │  └─ r-base already visited
      │  │     └─ r-waldo[0.4.0]
      │  │        ├─ r-base already visited
      │  │        ├─ r-glue already visited
      │  │        ├─ r-cli already visited
      │  │        ├─ r-rlang already visited
      │  │        ├─ r-diffobj[0.3.5]
      │  │        │  ├─ r-base already visited
      │  │        │  ├─ libgcc-ng already visited
      │  │        │  └─ r-crayon already visited
      │  │        ├─ r-fansi[1.0.3]
      │  │        │  ├─ r-base already visited
      │  │        │  └─ libgcc-ng already visited
      │  │        ├─ r-rematch2[2.1.2]
      │  │        │  ├─ r-base already visited
      │  │        │  └─ r-tibble[3.1.8]
      │  │        │     ├─ r-base already visited
      │  │        │     ├─ libgcc-ng already visited
      │  │        │     ├─ r-ellipsis already visited
      │  │        │     ├─ r-rlang already visited
      │  │        │     ├─ r-lifecycle already visited
      │  │        │     ├─ r-magrittr already visited
      │  │        │     ├─ r-fansi already visited
      │  │        │     ├─ r-pillar[1.8.1]
      │  │        │     │  ├─ r-base already visited
      │  │        │     │  ├─ r-cli already visited
      │  │        │     │  ├─ r-crayon already visited
      │  │        │     │  ├─ r-ellipsis already visited
      │  │        │     │  ├─ r-rlang already visited
      │  │        │     │  ├─ r-lifecycle already visited
      │  │        │     │  ├─ r-fansi already visited
      │  │        │     │  ├─ r-utf8[1.2.2]
      │  │        │     │  │  ├─ r-base already visited
      │  │        │     │  │  └─ libgcc-ng already visited
      │  │        │     │  └─ r-vctrs[0.5.1]
      │  │        │     │     ├─ r-base already visited
      │  │        │     │     ├─ libgcc-ng already visited
      │  │        │     │     ├─ libstdcxx-ng already visited
      │  │        │     │     ├─ r-glue already visited
      │  │        │     │     ├─ r-cli already visited
      │  │        │     │     ├─ r-rlang already visited
      │  │        │     │     └─ r-lifecycle already visited
      │  │        │     ├─ r-vctrs already visited
      │  │        │     └─ r-pkgconfig[2.0.3]
      │  │        │        └─ r-base already visited
      │  │        └─ r-tibble already visited
      │  ├─ r-rlang already visited
      │  ├─ r-withr already visited
      │  ├─ r-tibble already visited
      │  ├─ r-mass[7.3_58.1]
      │  │  ├─ r-base already visited
      │  │  └─ libgcc-ng already visited
      │  ├─ r-mgcv[1.8_41]
      │  │  ├─ r-base already visited
      │  │  ├─ libgcc-ng already visited
      │  │  ├─ libblas already visited
      │  │  ├─ liblapack already visited
      │  │  ├─ r-matrix[1.5_3]
      │  │  │  ├─ r-base already visited
      │  │  │  ├─ libgcc-ng already visited
      │  │  │  ├─ libblas already visited
      │  │  │  ├─ liblapack already visited
      │  │  │  └─ r-lattice[0.20_45]
      │  │  │     ├─ r-base already visited
      │  │  │     └─ libgcc-ng already visited
      │  │  └─ r-nlme[3.1_160]
      │  │     ├─ r-base already visited
      │  │     ├─ libgcc-ng already visited
      │  │     ├─ libgfortran5 already visited
      │  │     ├─ libgfortran-ng already visited
      │  │     └─ r-lattice already visited
      │  └─ r-scales[1.2.1]
      │     ├─ r-base already visited
      │     ├─ r-r6 already visited
      │     ├─ r-lifecycle already visited
      │     ├─ r-farver[2.1.1]
      │     │  ├─ r-base already visited
      │     │  ├─ libgcc-ng already visited
      │     │  └─ libstdcxx-ng already visited
      │     ├─ r-labeling[0.4.2]
      │     │  └─ r-base already visited
      │     ├─ r-munsell[0.5.0]
      │     │  ├─ r-base already visited
      │     │  └─ r-colorspace[2.0_3]
      │     │     ├─ r-base already visited
      │     │     └─ libgcc-ng already visited
      │     ├─ r-rcolorbrewer[1.1_3]
      │     │  └─ r-base already visited
      │     └─ r-viridislite[0.4.1]
      │        └─ r-base already visited
      └─ r-gtable already visited
    

    Upon inspection, one concludes that the additional R packages are r-ggplot dependencies. OP is seeing expected behavior.


    Some Unnecessary Packages

    Prompted by this question, I found that the r-isoband package in Conda Forge was unnecessarily including r-testthat as a runtime dependency when it was really only needed for running tests. Conda Forge now has removed this. I can report that using the same procedure as above now results in an environment with 16 fewer R packages (123 instead of 139).