Search code examples
condaminiconda

Updating a Conda environment only through conda-forge channel


I have Miniconda installed with 2 environments: base and gis. Packages in gis were installed from coda-forge. I have 2 questions:

Q1) want to update all packages in gis environment only from conda-forge. Am I using correct command ?

Q2) Why it is downgrading numpy-base ? It is updating other packages and when conda-forge still has several newer versions of 1.15.3 of numpy-base, why it is being downgraded ?

(gis) [arnuld@arch64 ~]$ conda update --all -c conda-forge
Solving environment: done

Package Plan

environment location: /home/arnuld/.local/miniconda/envs/gis

The following packages will be downloaded:

package                    |            build
---------------------------|-----------------
matplotlib-3.0.1           |       h8a2030e_1           6 KB  conda-forge
openblas-0.3.3             |       ha44fe06_1        13.7 MB  conda-forge
libopenblas-0.2.20         |       h9ac9557_7         8.8 MB
numpy-base-1.14.3          |   py36h0ea5e3f_1         4.1 MB
blas-1.1                   |         openblas           1 KB  conda-forge
krb5-1.16.2                |       hbb41f41_0         1.4 MB  conda-forge
scipy-1.1.0                |py36_blas_openblashb06ca3d_202        39.8 MB  conda-forge
mkl_random-1.0.2           |           py36_0         1.3 MB  conda-forge
numpy-1.15.3               |py36_blas_openblashb06ca3d_0         9.4 MB  conda-forge
matplotlib-base-3.0.1      |   py36hc039c98_1         9.2 MB  conda-forge
------------------------------------------------------------
                                       Total:        87.6 MB

The following NEW packages will be INSTALLED:

libopenblas:     0.2.20-h9ac9557_7                
matplotlib-base: 3.0.1-py36hc039c98_1  conda-forge
openblas:        0.3.3-ha44fe06_1      conda-forge

The following packages will be UPDATED:

blas:            1.0-mkl                           --> 1.1-openblas                         conda-forge
krb5:            1.16.1-hbb41f41_0     conda-forge --> 1.16.2-hbb41f41_0                    conda-forge
matplotlib:      2.2.3-py36h8e2386c_0  conda-forge --> 3.0.1-h8a2030e_1                     conda-forge
mkl_random:      1.0.1-py36_0          conda-forge --> 1.0.2-py36_0                         conda-forge
numpy:           1.15.0-py36h1b885b7_0             --> 1.15.3-py36_blas_openblashb06ca3d_0  conda-forge [blas_openblas]
scipy:           1.1.0-py36hc49cb51_0              --> 1.1.0-py36_blas_openblashb06ca3d_202 conda-forge [blas_openblas]

The following packages will be DOWNGRADED:

numpy-base:      1.15.0-py36h3dfced4_0             --> 1.14.3-py36h0ea5e3f_1                           

Proceed ([y]/n)? n

[arnuld@arch64 ~]$ conda list -n gis
# packages in environment at /home/arnuld/.local/miniconda/envs/gis:
#
# Name                    Version                   Build  Channel
attrs                     18.2.0                     py_0    conda-forge
backcall                  0.1.0                      py_0    conda-forge
blas                      1.0                         mkl  
bleach                    3.0.2                      py_0    conda-forge
boost-cpp                 1.67.0               h3a22d5f_0    conda-forge
bzip2                     1.0.6                h470a237_2    conda-forge
ca-certificates           2018.10.15           ha4d7672_0    conda-forge
cairo                     1.14.12              he6fea26_5    conda-forge
certifi                   2018.10.15            py36_1000    conda-forge
click                     7.0                        py_0    conda-forge
click-plugins             1.0.4                      py_0    conda-forge
cligj                     0.5.0                      py_0    conda-forge
curl                      7.62.0               h74213dd_0    conda-forge
cycler                    0.10.0                     py_1    conda-forge
dbus                      1.13.0               h3a4f0e9_0    conda-forge
decorator                 4.3.0                      py_0    conda-forge
descartes                 1.1.0                      py_2    conda-forge
entrypoints               0.2.3                 py36_1002    conda-forge
expat                     2.2.5                hfc679d8_2    conda-forge
fiona                     1.8.0            py36hfc77a4a_0    conda-forge
fontconfig                2.13.1               h65d0f4c_0    conda-forge
freetype                  2.9.1                h6debe1e_4    conda-forge
freexl                    1.0.5                h470a237_2    conda-forge
gdal                      2.3.2            py36hb00a9d7_0    conda-forge
geopandas                 0.4.0                      py_1    conda-forge
geos                      3.6.2                hfc679d8_3    conda-forge
geotiff                   1.4.2                h700e5ad_5    conda-forge
gettext                   0.19.8.1             h5e8e0c9_1    conda-forge
giflib                    5.1.4                h470a237_1    conda-forge
glib                      2.55.0               h464dc38_2    conda-forge
gmp                       6.1.2                hfc679d8_0    conda-forge
gst-plugins-base          1.12.5               hde13a9d_0    conda-forge
gstreamer                 1.12.5               h61a6719_0    conda-forge
hdf4                      4.2.13               h951d187_2    conda-forge
hdf5                      1.10.3               hc401514_2    conda-forge
icu                       58.2                 hfc679d8_0    conda-forge
intel-openmp              2019.0                      118  
ipykernel                 5.1.0              pyh24bf2e0_0    conda-forge
ipython                   7.1.1           py36h24bf2e0_1000    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
jedi                      0.13.1                py36_1000    conda-forge
jinja2                    2.10                       py_1    conda-forge
jpeg                      9c                   h470a237_1    conda-forge
json-c                    0.12.1               h470a237_1    conda-forge
jsonschema                3.0.0a3               py36_1000    conda-forge
jupyter_client            5.2.3                      py_1    conda-forge
jupyter_core              4.4.0                      py_0    conda-forge
kealib                    1.4.10               hb88cf67_0    conda-forge
kiwisolver                1.0.1            py36h2d50403_2    conda-forge
krb5                      1.16.1               hbb41f41_0    conda-forge
libcurl                   7.62.0               hbdb9355_0    conda-forge
libdap4                   3.19.1               h8fe5423_1    conda-forge
libedit                   3.1.20170329         haf1bffa_1    conda-forge
libffi                    3.2.1                hfc679d8_5    conda-forge
libgcc-ng                 7.2.0                hdf63c60_3    conda-forge
libgdal                   2.3.2                hc73897a_0    conda-forge
libgfortran               3.0.0                         1    conda-forge
libgfortran-ng            7.2.0                hdf63c60_3    conda-forge
libiconv                  1.15                 h470a237_3    conda-forge
libkml                    1.3.0                hccc92b1_8    conda-forge
libnetcdf                 4.6.1               h9cd6fdc_11    conda-forge
libpng                    1.6.35               ha92aebf_2    conda-forge
libpq                     10.5                 he29860b_0    conda-forge
libsodium                 1.0.16               h470a237_1    conda-forge
libspatialindex           1.8.5                hfc679d8_3    conda-forge
libspatialite             4.3.0a              hdfcc80b_23    conda-forge
libssh2                   1.8.0                h5b517e9_2    conda-forge
libstdcxx-ng              7.2.0                hdf63c60_3    conda-forge
libtiff                   4.0.9                he6b73bb_2    conda-forge
libuuid                   2.32.1               h470a237_2    conda-forge
libxcb                    1.13                 h470a237_2    conda-forge
libxml2                   2.9.8                h422b904_5    conda-forge
markupsafe                1.0              py36h470a237_1    conda-forge
matplotlib                2.2.3            py36h8e2386c_0    conda-forge
mistune                   0.8.4            py36h470a237_0    conda-forge
mkl                       2019.0                      118  
mkl_fft                   1.0.6                    py36_0    conda-forge
mkl_random                1.0.1                    py36_0    conda-forge
munch                     2.3.2                      py_0    conda-forge
nbconvert                 5.3.1                      py_1    conda-forge
nbformat                  4.4.0                      py_1    conda-forge
ncurses                   6.1                  hfc679d8_1    conda-forge
notebook                  5.7.0                 py36_1000    conda-forge
numpy                     1.15.0           py36h1b885b7_0  
numpy-base                1.15.0           py36h3dfced4_0  
openjpeg                  2.3.0                h0e734dc_3    conda-forge
openssl                   1.0.2p               h470a237_1    conda-forge
pandas                    0.23.4           py36hf8a1672_0    conda-forge
pandoc                    2.3.1                         0    conda-forge
pandocfilters             1.4.2                      py_1    conda-forge
parso                     0.3.1                      py_0    conda-forge
pcre                      8.41                 hfc679d8_3    conda-forge
pexpect                   4.6.0                 py36_1000    conda-forge
pickleshare               0.7.5                 py36_1000    conda-forge
pip                       18.1                  py36_1000    conda-forge
pixman                    0.34.0               h470a237_3    conda-forge
poppler                   0.67.0               h4d7e492_3    conda-forge
poppler-data              0.4.9                         0    conda-forge
postgresql                10.5                 h66035e0_0    conda-forge
proj4                     4.9.3                h470a237_8    conda-forge
prometheus_client         0.4.2                      py_0    conda-forge
prompt_toolkit            2.0.7                      py_0    conda-forge
psycopg2                  2.7.5            py36hdffb7b8_2    conda-forge
pthread-stubs             0.4                  h470a237_1    conda-forge
ptyprocess                0.6.0                 py36_1000    conda-forge
pygments                  2.2.0                      py_1    conda-forge
pyparsing                 2.3.0                      py_0    conda-forge
pyproj                    1.9.5.1          py36h508ed2a_6    conda-forge
pyqt                      5.6.0            py36h8210e8a_7    conda-forge
pyrsistent                0.14.5           py36h470a237_1    conda-forge
pysal                     1.14.4.post2          py36_1001    conda-forge
python                    3.6.6                h5001a0f_3    conda-forge
python-dateutil           2.7.5                      py_0    conda-forge
pytz                      2018.7                     py_0    conda-forge
pyzmq                     17.1.2           py36hae99301_1    conda-forge
qt                        5.6.2                hf70d934_9    conda-forge
readline                  7.0                  haf1bffa_1    conda-forge
rtree                     0.8.3                 py36_1000    conda-forge
scipy                     1.1.0            py36hc49cb51_0  
send2trash                1.5.0                      py_0    conda-forge
setuptools                40.5.0                   py36_0    conda-forge
shapely                   1.6.4            py36h164cb2d_1    conda-forge
sip                       4.18.1           py36hfc679d8_0    conda-forge
six                       1.11.0                py36_1001    conda-forge
sqlalchemy                1.2.13           py36h470a237_0    conda-forge
sqlite                    3.25.2               hb1c47c0_0    conda-forge
terminado                 0.8.1                 py36_1001    conda-forge
testpath                  0.4.2                 py36_1000    conda-forge
tk                        8.6.8                ha92aebf_0    conda-forge
tornado                   5.1.1            py36h470a237_0    conda-forge
traitlets                 4.3.2                 py36_1000    conda-forge
wcwidth                   0.1.7                      py_1    conda-forge
webencodings              0.5.1                      py_1    conda-forge
wheel                     0.32.2                   py36_0    conda-forge
xerces-c                  3.2.0                h5d6a6da_2    conda-forge
xorg-kbproto              1.0.7                h470a237_2    conda-forge
xorg-libice               1.0.9                h470a237_4    conda-forge
xorg-libsm                1.2.3                h8c8a85c_0    conda-forge
xorg-libx11               1.6.6                h470a237_0    conda-forge
xorg-libxau               1.0.8                h470a237_6    conda-forge
xorg-libxdmcp             1.1.2                h470a237_7    conda-forge
xorg-libxext              1.3.3                h470a237_4    conda-forge
xorg-libxrender           0.9.10               h470a237_2    conda-forge
xorg-renderproto          0.11.1               h470a237_2    conda-forge
xorg-xextproto            7.3.0                h470a237_2    conda-forge
xorg-xproto               7.0.31               h470a237_7    conda-forge
xz                        5.2.4                h470a237_1    conda-forge
zeromq                    4.2.5                hfc679d8_6    conda-forge
zlib                      1.2.11               h470a237_3    conda-forge
[arnuld@arch64 ~]$ 

Solution

  • Q1

    Yes, that's the right command. However, some of your packages aren't in conda-forge, e.g., numpy-base:

    conda search conda-forge::numpy-base
    

    turns up empty, same for libopenblas. They are falling back to updating from the defaults channel.

    Q2

    Don't know for sure, but it seems your BLAS libraries are involved too. Namely, libopenblas also has 0.3.3 version available in defaults, whereas here it shows installing 0.2.2. This happens to be a dependency of numpy-base, and specifically version 1.15.3 requires libopenblas>=0.3.3.

    Could have something to do with the mkl to openblas switch that happens when prioritizing conda-forge. I think we'd need to know the other libraries installed (not being changed during update) to precisely answer this question as posed.

    It looks like this script for searching the conda dependency graph could be useful for further inspection if you're really interested in assigning the blame.