jupyterhub / repo2docker

Turn repositories into Jupyter-enabled Docker images
https://repo2docker.readthedocs.io
BSD 3-Clause "New" or "Revised" License
1.61k stars 360 forks source link

libconv dependency error when using repo2docker but not when using conda env directly #758

Open rbavery opened 5 years ago

rbavery commented 5 years ago

Bug description

It looks like that I'm getting a dependency error when building a docker image with repo2docker form an environment.yaml, but not when using conda env create -f environment.yaml. I've included the traceback below.

Expected behaviour

No dependency error wince I don't get this when I just call the conda command

Actual behaviour

I get the following traceback.

# rave at rave-thinkpad in ~ [9:56:42]
→ jupyter-repo2docker pyatsa
Picked Local content provider.
Using local repo pyatsa.
Using PythonBuildPack builder
Step 1/46 : FROM buildpack-deps:bionic
 ---> 90c775362283e...
Step 2/46 : ENV DEBIAN_FRONTEND=noninteractive
 ---> Running in 9b0781fd8c04
Removing intermediate container 9b0781fd8c04
 ---> 457df126e0b2
Step 3/46 : RUN apt-get -qq update &&     apt-get -qq install --yes --no-install-recommends locales > /dev/null &&     apt-get -qq purge &&     apt-get -qq clean &&     rm -rf /var/lib/apt/lists/*
 ---> Running in 652b14991472
debconf: delaying package configuration, since apt-utils is not installed
Removing intermediate container 652b14991472
 ---> 5482c925f7e0
Step 4/46 : RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen &&     locale-gen
 ---> Running in e22234aa3589
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
Removing intermediate container e22234aa3589
 ---> 0bf9a75566da
Step 5/46 : ENV LC_ALL en_US.UTF-8
 ---> Running in 9bf874b4514a
Removing intermediate container 9bf874b4514a
 ---> 1e71a4c145ec
Step 6/46 : ENV LANG en_US.UTF-8
 ---> Running in 37496a456ec9
Removing intermediate container 37496a456ec9
 ---> de40fc45f5b0
Step 7/46 : ENV LANGUAGE en_US.UTF-8
 ---> Running in 218c9a23c10a
Removing intermediate container 218c9a23c10a
 ---> 1af0f6989959
Step 8/46 : ENV SHELL /bin/bash
 ---> Running in 96d6f88293e3
Removing intermediate container 96d6f88293e3
 ---> 73d80ac2cb13
Step 9/46 : ARG NB_USER
 ---> Running in cc78953dab29
Removing intermediate container cc78953dab29
 ---> ed944794ef50
Step 10/46 : ARG NB_UID
 ---> Running in c5a49ace34bd
Removing intermediate container c5a49ace34bd
 ---> eb789bff2a02
Step 11/46 : ENV USER ${NB_USER}
 ---> Running in 1b4739f5b8e0
Removing intermediate container 1b4739f5b8e0
 ---> 0abc9421377e
Step 12/46 : ENV HOME /home/${NB_USER}
 ---> Running in f647ee7bdcb2
Removing intermediate container f647ee7bdcb2
 ---> 59a214a4bce8
Step 13/46 : RUN adduser --disabled-password     --gecos "Default user"     --uid ${NB_UID}     ${NB_USER}
 ---> Running in b1a6e1292abf
Adding user `rave' ...
Adding new group `rave' (1000) ...
Adding new user `rave' (1000) with group `rave' ...
Creating home directory `/home/rave' ...
Copying files from `/etc/skel' ...
Removing intermediate container b1a6e1292abf
 ---> 0fb2ec9d3d1f
Step 14/46 : RUN wget --quiet -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key |  apt-key add - &&     DISTRO="bionic" &&     echo "deb https://deb.nodesource.com/node_10.x $DISTRO main" >> /etc/apt/sources.list.d/nodesource.list &&     echo "deb-src https://deb.nodesource.com/node_10.x $DISTRO main" >> /etc/apt/sources.list.d/nodesource.list
 ---> Running in e90a38babf1e
Warning: apt-key output should not be parsed (stdout is not a terminal)
OK
Removing intermediate container e90a38babf1e
 ---> 92ea653bc15d
Step 15/46 : RUN apt-get -qq update &&     apt-get -qq install --yes --no-install-recommends        less        nodejs        unzip        > /dev/null &&     apt-get -qq purge &&     apt-get -qq clean &&     rm -rf /var/lib/apt/lists/*
 ---> Running in 71b67c8947e9
debconf: delaying package configuration, since apt-utils is not installed
Removing intermediate container 71b67c8947e9
 ---> 6b45cd5df00c
Step 16/46 : EXPOSE 8888
 ---> Running in b9b015960864
Removing intermediate container b9b015960864
 ---> e83bdad5053b
Step 17/46 : ENV APP_BASE /srv
 ---> Running in 88a945043f40
Removing intermediate container 88a945043f40
 ---> b336fa710363
Step 18/46 : ENV NPM_DIR ${APP_BASE}/npm
 ---> Running in 84c62d96395a
Removing intermediate container 84c62d96395a
 ---> 1b76f16d879a
Step 19/46 : ENV NPM_CONFIG_GLOBALCONFIG ${NPM_DIR}/npmrc
 ---> Running in a237f76be383
Removing intermediate container a237f76be383
 ---> 0771db5309b1
Step 20/46 : ENV CONDA_DIR ${APP_BASE}/conda
 ---> Running in 0af695703651
Removing intermediate container 0af695703651
 ---> cc55746d5dca
Step 21/46 : ENV NB_PYTHON_PREFIX ${CONDA_DIR}/envs/notebook
 ---> Running in 89a73d56e2de
Removing intermediate container 89a73d56e2de
 ---> b681ff0e7dfc
Step 22/46 : ENV KERNEL_PYTHON_PREFIX ${NB_PYTHON_PREFIX}
 ---> Running in b851f4a4a6d9
Removing intermediate container b851f4a4a6d9
 ---> a39cc42d93b0
Step 23/46 : ENV PATH ${NB_PYTHON_PREFIX}/bin:${CONDA_DIR}/bin:${NPM_DIR}/bin:${PATH}
 ---> Running in 14b3af1f6c09
Removing intermediate container 14b3af1f6c09
 ---> c77c8cea6c73
Step 24/46 : COPY conda/activate-conda.sh /etc/profile.d/activate-conda.sh
 ---> 2bdce7eef7ee
Step 25/46 : COPY conda/environment.py-3.7.frozen.yml /tmp/environment.yml
 ---> b1422a5d2c7c
Step 26/46 : COPY conda/install-miniconda.bash /tmp/install-miniconda.bash
 ---> 11bbf7c61c7f
Step 27/46 : RUN mkdir -p ${NPM_DIR} && chown -R ${NB_USER}:${NB_USER} ${NPM_DIR}
 ---> Running in 95d947ebb9ba
Removing intermediate container 95d947ebb9ba
 ---> 5b6f7ed47221
Step 28/46 : USER ${NB_USER}
 ---> Running in 22427310743c
Removing intermediate container 22427310743c
 ---> db00d72f38c5
Step 29/46 : RUN npm config --global set prefix ${NPM_DIR}
 ---> Running in e01c382255b4
Removing intermediate container e01c382255b4
 ---> 460a99b82dad
Step 30/46 : USER root
 ---> Running in 53fc4dcb9f84
Removing intermediate container 53fc4dcb9f84
 ---> d5d611314297
Step 31/46 : RUN bash /tmp/install-miniconda.bash && rm /tmp/install-miniconda.bash /tmp/environment.yml
 ---> Running in 23c6fa71f8a9
++ dirname /tmp/install-miniconda.bash
+ cd /tmp
+ MINICONDA_VERSION=4.6.14
+ CONDA_VERSION=4.7.10
+ MD5SUM=718259965f234088d785cad1fbd7de03
+ URL=https://repo.continuum.io/miniconda/Miniconda3-4.6.14-Linux-x86_64.sh
+ INSTALLER_PATH=/tmp/miniconda-installer.sh
+ unset HOME
+ wget --quiet https://repo.continuum.io/miniconda/Miniconda3-4.6.14-Linux-x86_64.sh -O /tmp/miniconda-installer.sh
+ chmod +x /tmp/miniconda-installer.sh
+ echo '718259965f234088d785cad1fbd7de03  /tmp/miniconda-installer.sh'
+ md5sum --quiet -c -
+ bash /tmp/miniconda-installer.sh -b -p /srv/conda
PREFIX=/srv/conda
installing: python-3.7.3-h0371630_0 ...
Python 3.7.3
installing: ca-certificates-2019.1.23-0 ...
installing: libgcc-ng-8.2.0-hdf63c60_1 ...
installing: libstdcxx-ng-8.2.0-hdf63c60_1 ...
installing: libffi-3.2.1-hd88cf55_4 ...
installing: ncurses-6.1-he6710b0_1 ...
installing: openssl-1.1.1b-h7b6447c_1 ...
installing: xz-5.2.4-h14c3975_4 ...
installing: yaml-0.1.7-had09818_2 ...
installing: zlib-1.2.11-h7b6447c_3 ...
installing: libedit-3.1.20181209-hc058e9b_0 ...
installing: readline-7.0-h7b6447c_5 ...
installing: tk-8.6.8-hbc83047_0 ...
installing: sqlite-3.27.2-h7b6447c_0 ...
installing: asn1crypto-0.24.0-py37_0 ...
installing: certifi-2019.3.9-py37_0 ...
installing: chardet-3.0.4-py37_1 ...
installing: idna-2.8-py37_0 ...
installing: pycosat-0.6.3-py37h14c3975_0 ...
installing: pycparser-2.19-py37_0 ...
installing: pysocks-1.6.8-py37_0 ...
installing: ruamel_yaml-0.15.46-py37h14c3975_0 ...
installing: six-1.12.0-py37_0 ...
installing: cffi-1.12.2-py37h2e261b9_1 ...
installing: setuptools-41.0.0-py37_0 ...
installing: cryptography-2.6.1-py37h1ba5d50_0 ...
installing: wheel-0.33.1-py37_0 ...
installing: pip-19.0.3-py37_0 ...
installing: pyopenssl-19.0.0-py37_0 ...
installing: urllib3-1.24.1-py37_0 ...
installing: requests-2.21.0-py37_0 ...
installing: conda-4.6.14-py37_0 ...
installation finished.
+ export PATH=/srv/conda/bin:/srv/conda/envs/notebook/bin:/srv/conda/bin:/srv/npm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ PATH=/srv/conda/bin:/srv/conda/envs/notebook/bin:/srv/conda/bin:/srv/npm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ conda config --system --add channels conda-forge
+ conda config --system --set auto_update_conda false
+ conda config --system --set show_channel_urls true
+ echo 'update_dependencies: false'
+ [[ 4.7.10 != \4\.\6\.\1\4 ]]
+ conda install -yq conda==4.7.10
Collecting package metadata: ...working... done
Solving environment: ...working... done

## Package Plan ##

  environment location: /srv/conda

  added / updated specs:
    - conda==4.7.10

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    _libgcc_mutex-0.1          |             main           3 KB  defaults
    bzip2-1.0.8                |       h516909a_0         396 KB  conda-forge
    ca-certificates-2019.6.16  |       hecc5488_0         145 KB  conda-forge
    certifi-2019.6.16          |           py37_1         149 KB  conda-forge
    conda-4.7.10               |           py37_0         3.0 MB  conda-forge
    conda-package-handling-1.4.1|           py37_0         262 KB  conda-forge
    icu-64.2                   |       he1b5a44_0        12.6 MB  conda-forge
    libarchive-3.3.3           |    hb44662c_1005         1.4 MB  conda-forge
    libxml2-2.9.9              |       h8cf2a2b_3         1.3 MB  conda-forge
    lz4-c-1.8.3                |    he1b5a44_1001         187 KB  conda-forge
    lzo-2.10                   |    h14c3975_1000         319 KB  conda-forge
    openssl-1.1.1c             |       h516909a_0         2.1 MB  conda-forge
    python-libarchive-c-2.8    |        py37_1004          21 KB  conda-forge
    tqdm-4.32.2                |             py_0          41 KB  conda-forge
    zstd-1.4.0                 |       h3b9ef0a_0         928 KB  conda-forge
    ------------------------------------------------------------
                                           Total:        22.8 MB

The following NEW packages will be INSTALLED:

  _libgcc_mutex      pkgs/main/linux-64::_libgcc_mutex-0.1-main
  bzip2              conda-forge/linux-64::bzip2-1.0.8-h516909a_0
  conda-package-han~ conda-forge/linux-64::conda-package-handling-1.4.1-py37_0
  icu                conda-forge/linux-64::icu-64.2-he1b5a44_0
  libarchive         conda-forge/linux-64::libarchive-3.3.3-hb44662c_1005
  libxml2            conda-forge/linux-64::libxml2-2.9.9-h8cf2a2b_3
  lz4-c              conda-forge/linux-64::lz4-c-1.8.3-he1b5a44_1001
  lzo                conda-forge/linux-64::lzo-2.10-h14c3975_1000
  python-libarchive~ conda-forge/linux-64::python-libarchive-c-2.8-py37_1004
  tqdm               conda-forge/noarch::tqdm-4.32.2-py_0
  zstd               conda-forge/linux-64::zstd-1.4.0-h3b9ef0a_0

The following packages will be UPDATED:

  ca-certificates    pkgs/main::ca-certificates-2019.1.23-0 --> conda-forge::ca-certificates-2019.6.16-hecc5488_0
  certifi                pkgs/main::certifi-2019.3.9-py37_0 --> conda-forge::certifi-2019.6.16-py37_1
  conda                      pkgs/main::conda-4.6.14-py37_0 --> conda-forge::conda-4.7.10-py37_0
  openssl              pkgs/main::openssl-1.1.1b-h7b6447c_1 --> conda-forge::openssl-1.1.1c-h516909a_0

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
+ conda config --system --set channel_priority flexible
installing notebook env:
+ echo 'installing notebook env:'
+ cat /tmp/environment.yml
# AUTO GENERATED FROM environment.py-3.7.yml, DO NOT MANUALLY MODIFY
# Frozen on 2019-07-29 15:52:07 UTC
name: r2d
channels:
  - conda-forge
  - defaults
  - conda-forge/label/broken
dependencies:
  - _libgcc_mutex=0.1=main
  - alembic=1.0.11=py_0
  - asn1crypto=0.24.0=py37_1003
  - async_generator=1.10=py_0
  - attrs=19.1.0=py_0
  - backcall=0.1.0=py_0
  - bleach=3.1.0=py_0
  - blinker=1.4=py_1
  - bzip2=1.0.8=h516909a_0
  - ca-certificates=2019.6.16=hecc5488_0
  - certifi=2019.6.16=py37_1
  - certipy=0.1.3=py_0
  - cffi=1.12.3=py37h8022711_0
  - chardet=3.0.4=py37_1003
  - configurable-http-proxy=4.1.0=node11_1
  - cryptography=2.7=py37h72c5cf5_0
  - decorator=4.4.0=py_0
  - defusedxml=0.5.0=py_1
  - entrypoints=0.3=py37_1000
  - idna=2.8=py37_1000
  - ipykernel=5.1.1=py37h5ca1d4c_0
  - ipython=7.7.0=py37h5ca1d4c_0
  - ipython_genutils=0.2.0=py_1
  - ipywidgets=7.4.2=py_0
  - jedi=0.14.1=py37_0
  - jinja2=2.10.1=py_0
  - jsonschema=3.0.1=py37_0
  - jupyter_client=5.3.1=py_0
  - jupyter_core=4.4.0=py_0
  - jupyterhub=1.0.0=py37_0
  - jupyterlab=0.35.4=py37_0
  - jupyterlab_server=0.2.0=py_0
  - krb5=1.16.3=h05b26f9_1001
  - libcurl=7.65.3=hda55be3_0
  - libedit=3.1.20170329=hf8c457e_1001
  - libffi=3.2.1=he1b5a44_1006
  - libgcc-ng=9.1.0=hdf63c60_0
  - libsodium=1.0.17=h516909a_0
  - libssh2=1.8.2=h22169c7_2
  - libstdcxx-ng=9.1.0=hdf63c60_0
  - mako=1.0.10=py_0
  - markupsafe=1.1.1=py37h14c3975_0
  - mistune=0.8.4=py37h14c3975_1000
  - nbconvert=5.4.1=py_2
  - nbformat=4.4.0=py_1
  - ncurses=6.1=hf484d3e_1002
  - nodejs=11.14.0=he1b5a44_1
  - notebook=5.7.8=py37_1
  - nteract_on_jupyter=2.0.12=py_0
  - oauthlib=3.0.1=py_0
  - openssl=1.1.1c=h516909a_0
  - pamela=1.0.0=py_0
  - pandoc=2.7.3=0
  - pandocfilters=1.4.2=py_1
  - parso=0.5.1=py_0
  - pexpect=4.7.0=py37_0
  - pickleshare=0.7.5=py37_1000
  - pip=19.2.1=py37_0
  - prometheus_client=0.7.1=py_0
  - prompt_toolkit=2.0.9=py_0
  - ptyprocess=0.6.0=py_1001
  - pycparser=2.19=py37_1
  - pycurl=7.43.0.2=py37h16ce93b_1
  - pygments=2.4.2=py_0
  - pyjwt=1.7.1=py_0
  - pyopenssl=19.0.0=py37_0
  - pyrsistent=0.15.4=py37h516909a_0
  - pysocks=1.7.0=py37_0
  - python=3.7.3=h33d41f4_1
  - python-dateutil=2.8.0=py_0
  - python-editor=1.0.4=py_0
  - pyzmq=18.0.2=py37h1768529_2
  - readline=8.0=hf8c457e_0
  - requests=2.22.0=py37_1
  - send2trash=1.5.0=py_0
  - setuptools=41.0.1=py37_0
  - six=1.12.0=py37_1000
  - sqlalchemy=1.3.6=py37h516909a_0
  - sqlite=3.29.0=hcee41ef_0
  - terminado=0.8.2=py37_0
  - testpath=0.4.2=py_1001
  - tk=8.6.9=hed695b0_1002
  - tornado=6.0.3=py37h516909a_0
  - traitlets=4.3.2=py37_1000
  - urllib3=1.25.3=py37_0
  - wcwidth=0.1.7=py_1
  - webencodings=0.5.1=py_1
  - wheel=0.33.4=py37_0
  - widgetsnbextension=3.4.2=py37_1000
  - xz=5.2.4=h14c3975_1001
  - zeromq=4.3.2=he1b5a44_2
  - zlib=1.2.11=h516909a_1005
prefix: /opt/conda/envs/r2d

+ conda env create -p /srv/conda/envs/notebook -f /tmp/environment.yml
Traceback (most recent call last):
  File "/srv/conda/bin/conda-env", line 6, in <module>
    from conda_env.cli.main import main
  File "/srv/conda/lib/python3.7/site-packages/conda_env/cli/main.py", line 39, in <module>
    from . import main_create
  File "/srv/conda/lib/python3.7/site-packages/conda_env/cli/main_create.py", line 12, in <module>
    from conda.cli import install as cli_install
  File "/srv/conda/lib/python3.7/site-packages/conda/cli/install.py", line 19, in <module>
    from ..core.index import calculate_channel_urls, get_index
  File "/srv/conda/lib/python3.7/site-packages/conda/core/index.py", line 9, in <module>
    from .package_cache_data import PackageCacheData
  File "/srv/conda/lib/python3.7/site-packages/conda/core/package_cache_data.py", line 15, in <module>
    from conda_package_handling.api import InvalidArchiveError
  File "/srv/conda/lib/python3.7/site-packages/conda_package_handling/api.py", line 12, in <module>
    from .tarball import CondaTarBZ2 as _CondaTarBZ2, libarchive_enabled
  File "/srv/conda/lib/python3.7/site-packages/conda_package_handling/tarball.py", line 11, in <module>
    import libarchive
  File "/srv/conda/lib/python3.7/site-packages/libarchive/__init__.py", line 1, in <module>
    from .entry import ArchiveEntry
  File "/srv/conda/lib/python3.7/site-packages/libarchive/entry.py", line 6, in <module>
    from . import ffi
  File "/srv/conda/lib/python3.7/site-packages/libarchive/ffi.py", line 27, in <module>
    libarchive = ctypes.cdll.LoadLibrary(libarchive_path)
  File "/srv/conda/lib/python3.7/ctypes/__init__.py", line 434, in LoadLibrary
    return self._dlltype(name)
  File "/srv/conda/lib/python3.7/ctypes/__init__.py", line 356, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libiconv.so.2: cannot open shared object file: No such file or directory
Removing intermediate container 23c6fa71f8a9

How to reproduce

  1. git clone https://github.com/agroimpacts/pyatsa.git
  2. python3 -m pip install https://github.com/jupyter/repo2docker/archive/master.zip
  3. jupyter-repo2docker pyatsa

Your personal set up

Server: Engine: Version: 18.09.7 API version: 1.39 (minimum version 1.12) Go version: go1.10.1 Git commit: 2d0083d Built: Mon Jul 1 19:31:12 2019 OS/Arch: linux/amd64 Experimental: false

I just installed the latest version from master today, so that might be why the version is "0+unknown"

scottyhq commented 5 years ago

Hi @rbavery, maybe this is related to this recent change to only conda-forge packages on master?: https://github.com/jupyter/repo2docker/pull/728. Seems there are quite a few issues out there for libiconv not getting installed as a necessary dependency https://github.com/jupyter/jupyter/issues/431. Did this environment build for you previously? If you add libiconv to your environment.yml is the build successful? Do you know what version of libiconv was installed in your previous build?

betatim commented 5 years ago

Is there a clue in the output for "maybe caused by only using conda packages"? To me it looks pretty standard :-/ What is weird is that the error occurs during the step where miniconda is installed so the contents of the repo hasn't been looked at yet.

With repo2docker master (version output 0.9.0+186.gd72c601) and repo2docker --ref 66ba8eb8892a1983d3ea1afc2a13092d87c53660 https://github.com/agroimpacts/pyatsa I get a working container (working == it builds) locally. My docker image cache is empty.

scottyhq commented 5 years ago

True @betatim ! maybe I spoke too soon (I was assuming it was working for @rbavery previously). I'm suspicious of the "0+unknown" version... I haven't seen that before. Could the repo2docker environment itself be behind this issue?

rbavery commented 5 years ago

Hi @scottyhq and @betatim thanks for the speedy responses! The environment built for me previously but only if I call conda env create -f environment.yaml directly and do not use repo2docker.

betatim commented 5 years ago

An older version (from a week ago or so) of repo2docker also built this repo for me when I posted my comment above. So I think this isn't a newly broken thing.

The error in repo2docker occurs while installing miniconda and the default environnent. This means the problem is probably not related to the contents of your environment.yaml.

@rbavery Can you build other environments like https://github.com/binder-examples/conda? What if you delete all docker images related to repo2docker and then try to build things?

msarahan commented 5 years ago

I think the tricky thing is that there's two ways to have libiconv:

Conda-forge has the former, Anaconda has the latter. I attempted to unify those by making conda-forge's recipe use the glibc one, but that didn't work because we really need to make that change across all recipes that use libiconv, not just libxml2 and libarchive. If you use conda-forge's packages, make sure you have libiconv as a dependency. If you're mixing conda-forge and defaults packages, you might need to figure out a way to use a more pure conda-forge stack or a more pure defaults stack. We will work to unify these, but it will take time.

rbavery commented 5 years ago

@betatim I was able to build an image with the same "unknown" repo2docker version, I tested it on this repo: https://github.com/ecohydro/CropMask_RCNN and https://github.com/binder-examples/conda .

I'll make sure to include libiconv as a dependency, thanks for the suggestion @msarahan

scollis commented 5 years ago

Just saw this on Binder


Traceback (most recent call last):
  File "/srv/conda/bin/conda-env", line 6, in <module>
    from conda_env.cli.main import main
  File "/srv/conda/lib/python3.7/site-packages/conda_env/cli/main.py", line 39, in <module>
    from . import main_create
  File "/srv/conda/lib/python3.7/site-packages/conda_env/cli/main_create.py", line 12, in <module>
    from conda.cli import install as cli_install
  File "/srv/conda/lib/python3.7/site-packages/conda/cli/install.py", line 19, in <module>
    from ..core.index import calculate_channel_urls, get_index
  File "/srv/conda/lib/python3.7/site-packages/conda/core/index.py", line 9, in <module>
    from .package_cache_data import PackageCacheData
  File "/srv/conda/lib/python3.7/site-packages/conda/core/package_cache_data.py", line 15, in <module>
    from conda_package_handling.api import InvalidArchiveError
  File "/srv/conda/lib/python3.7/site-packages/conda_package_handling/api.py", line 12, in <module>
    from .tarball import CondaTarBZ2 as _CondaTarBZ2, libarchive_enabled
  File "/srv/conda/lib/python3.7/site-packages/conda_package_handling/tarball.py", line 11, in <module>
    import libarchive
  File "/srv/conda/lib/python3.7/site-packages/libarchive/__init__.py", line 1, in <module>
    from .entry import ArchiveEntry
  File "/srv/conda/lib/python3.7/site-packages/libarchive/entry.py", line 6, in <module>
    from . import ffi
  File "/srv/conda/lib/python3.7/site-packages/libarchive/ffi.py", line 27, in <module>
    libarchive = ctypes.cdll.LoadLibrary(libarchive_path)
  File "/srv/conda/lib/python3.7/ctypes/__init__.py", line 434, in LoadLibrary
    return self._dlltype(name)
  File "/srv/conda/lib/python3.7/ctypes/__init__.py", line 356, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libiconv.so.2: cannot open shared object file: No such file or directory```

Actually the Pangeo binder..