Skip to content

Instantly share code, notes, and snippets.

@elgalu
Last active June 27, 2018 14:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save elgalu/2f2633780fdcba36e2f6e11d182c8deb to your computer and use it in GitHub Desktop.
Save elgalu/2f2633780fdcba36e2f6e11d182c8deb to your computer and use it in GitHub Desktop.
Troubleshooting UnsatisfiableError on mro and
active environment : None
user config file : /home/nbuser/.condarc
populated config files : /opt/conda/.condarc
conda version : 4.5.4
conda-build version : not installed
python version : 3.6.5.final.0
base environment : /opt/conda (writable)
channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/free/linux-64
https://repo.anaconda.com/pkgs/free/noarch
https://repo.anaconda.com/pkgs/r/linux-64
https://repo.anaconda.com/pkgs/r/noarch
https://repo.anaconda.com/pkgs/pro/linux-64
https://repo.anaconda.com/pkgs/pro/noarch
https://conda.anaconda.org/conda-forge/linux-64
https://conda.anaconda.org/conda-forge/noarch
package cache : /opt/conda/pkgs
/home/nbuser/.conda/pkgs
envs directories : /opt/conda/envs
/home/nbuser/.conda/envs
platform : linux-64
user-agent : conda/4.5.4 requests/2.19.1 CPython/3.6.5 Linux/4.16.14 ubuntu/18.04 glibc/2.27
UID:GID : 1000:100
netrc file : None
offline mode : False
# Ubuntu 18:04
FROM registry.opensource.zalan.do/stups/ubuntu:latest
#==============================
# Locale and encoding settings
#==============================
# Note: LANGUAGE="${LANG_WHICH}_${LANG_WHERE}.${ENCODING}"
ENV LANG_WHICH="en" \
LANG_WHERE="US" \
LOCALE_TAG="en_US" \
ENCODING="UTF-8" \
LC_ALL="en_US.UTF-8" \
LOCALE_ALL="en_US.UTF-8" \
LANG="en_US.UTF-8" \
LANGUAGE="en_US.UTF-8" \
OS_LOCALE="en_US.UTF-8" \
TZ="Europe/Berlin" \
DEBIAN_FRONTEND="noninteractive" \
DEBCONF_NONINTERACTIVE_SEEN="true" \
CONDA_DIR="/opt/conda" \
PATH="/opt/conda/bin:${PATH}" \
SHELL="/bin/bash" \
NB_USER="nbuser" \
NB_UID="1000" \
NB_GID="100" \
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64" \
JAVA_OPTS="-XX:+PrintFlagsFinal -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1" \
JAVA_OPTIONS="-XX:+PrintFlagsFinal -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1" \
CLASSPATH="/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/*:/usr/share/java/*" \
XDG_CACHE_HOME="/home/nbuser/.cache/" \
MPLBACKEND="Agg"
#-- +750 MB ; (885 MB)
RUN echo "" \
&& echo "--------------------------" \
&& echo "-- Upgrade: perl, curl ..." \
&& apt-qyy update && apt -qqy install \
perl-base \
curl \
libcurl4 \
libcurl4-openssl-dev \
&& echo "----------------------------------------------------------------" \
&& echo "-- Install: locale, language packs, locale and timezone setup..." \
&& apt-qyy update && apt -qqy install \
language-pack-en \
tzdata \
locales \
&& locale-gen ${LANGUAGE} \
&& dpkg-reconfigure --frontend noninteractive locales \
&& echo "Setting time zone to '${TZ}'" \
&& echo "${TZ}" > /etc/timezone \
&& dpkg-reconfigure --frontend noninteractive tzdata \
&& echo "${LANGUAGE} ${ENCODING}" > /etc/locale.gen && locale-gen \
&& localedef -i ${LOCALE_TAG} -f ${ENCODING} ${LOCALE_ALL} \
&& echo "--------------------------------------------" \
&& echo "-- Install: build tools (gcc, make, etc) ..." \
&& apt-qyy update && apt -qqy install \
build-essential \
gcc-multilib \
g++ \
make \
cmake \
automake \
pandoc \
&& echo "---------------------------------------------------------" \
&& echo "-- Install: wget packages and others (wget, curl, jq) ..." \
&& apt-qyy update && apt -qqy install \
wget \
curl \
jq \
unzip \
bzip2 \
sudo \
locales \
htop \
iputils-ping \
dnsutils \
apt-utils \
less \
man \
&& mkdir -p /usr/share/man/man1 \
&& echo "-----------------------" \
&& echo "-- Install: editors ..." \
&& apt-qyy update && apt -qqy install \
emacs \
jed \
vim \
nano \
&& echo "-------------------" \
&& echo "-- Install: git ..." \
&& apt-qyy update && apt -qqy install \
git \
&& echo "--------------------" \
&& echo "-- Install: libs ..." \
&& apt-qyy update && apt -qqy install \
libkrb5-dev \
libavahi-compat-libdnssd-dev \
libsm6 \
libxext-dev \
libxrender1 \
lmodern \
libssl-dev \
libffi-dev \
&& echo "-----------------------------------" \
&& echo "-- Install: gpg, gnupg, openssh ..." \
&& apt-qyy update && apt -qqy install \
gpgv \
&& apt-qyy update && apt -qqy install \
openssh-client \
gpg \
gpgconf \
gnupg \
gnupg2 \
gnupg-utils \
dirmngr \
&& echo "-----------------------------------------------------------" \
&& echo "-- Install: minimal python2 (30MB) for google-cloud-sdk ..." \
&& apt-qyy update && apt -qqy install \
libpython2.7-stdlib \
libpython2.7-minimal \
python2.7-minimal \
python2.7 \
&& echo "--------------------------" \
&& echo "-- Install: tini (1MB) ..." \
&& wget --progress=bar:force:noscroll "https://github.com/krallin/tini/releases/download/v0.18.0/tini" \
&& echo "12d20136605531b09a2c2dac02ccee85e1b874eb322ef6baf7561cd93f93c855 *tini" | sha256sum -c - \
&& mv tini /usr/local/bin/tini \
&& chmod +x /usr/local/bin/tini \
&& echo "----------------------------------" \
&& echo "-- Install: GNU parallel (1MB) ..." \
&& cd /tmp \
&& wget -q "http://ftp.gnu.org/gnu/parallel/parallel-20180522.tar.bz2" \
&& echo "eb017e2aea57464c3c91bd1120d419a303d2c204c35ec41fc156e6536ffa0cce parallel-20180522.tar.bz2" | sha256sum -c - \
&& tar -xjf parallel-20180522.tar.bz2 \
&& rm parallel-20180522.tar.bz2 \
&& cd parallel-20180522 \
&& ./configure \
&& make \
&& sudo make install \
&& cd / && rm -rf /tmp/parallel-20180522 \
&& parallel --version | grep 20180522 \
&& echo "----------------------------------------------------------------------" \
&& echo "-- Create nbuser user with UID=1000 and in the 'users' group (1MB) ..." \
&& useradd ${NB_USER} \
--uid ${NB_UID} \
--gid ${NB_GID} \
--shell /bin/bash \
--create-home \
&& usermod -a -G sudo ${NB_USER} \
&& gpasswd -a ${NB_USER} video \
&& echo "${NB_USER}:__emergency__access__" | chpasswd \
&& echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers \
&& echo "----------------------------------------------------------" \
&& echo "-- Make sure these dirs are writable by the 'users' group." \
&& mkdir -p ${CONDA_DIR} \
&& chown -R ${NB_USER}:${NB_GID} ${CONDA_DIR} \
&& chown -R ${NB_USER}:${NB_GID} /home/nbuser
# NodeJS, Npm and Yarn (npm-like) package manager (This is not YARN scheduler!)
#
# Pinning setuptools==39.1.0 due to Tensorflow hard requirement: setuptools<=39.1.0 (from tf-nightly)
#
# before: 885 MB
# after: 1.22 GB => 1249 MB
# diff: +363 MB
RUN echo "" \
&& echo "----------------------------------------------------------------------" \
&& echo "-- Install conda giving full access to the default ${NB_USER} (365 MB)" \
&& export MINICONDA_VERSION="latest" \
&& cd /tmp \
&& wget --progress=bar:force:noscroll "https://repo.continuum.io/miniconda/Miniconda3-${MINICONDA_VERSION}-Linux-x86_64.sh" \
&& sudo /bin/bash Miniconda3-${MINICONDA_VERSION}-Linux-x86_64.sh -f -b -p ${CONDA_DIR} \
&& rm "Miniconda3-${MINICONDA_VERSION}-Linux-x86_64.sh" \
&& ${CONDA_DIR}/bin/conda config --system --append channels conda-forge \
&& ${CONDA_DIR}/bin/conda config --system --set auto_update_conda false \
&& ${CONDA_DIR}/bin/conda config --system --set show_channel_urls true \
&& ${CONDA_DIR}/bin/conda config --add channels r \
&& ${CONDA_DIR}/bin/conda update --all --quiet --yes \
&& ${CONDA_DIR}/bin/conda update -n base conda --yes \
&& echo "------------------------------------------------" \
&& echo "-- Conda Install: Python 3.6 , NodeJS 8 (30 MB) " \
&& conda install --yes \
'python=3.6.5' \
'nodejs=8.11.1' \
'sqlite=3.20.*' \
'readline' \
'libedit' \
'ncurses' \
'yarn' \
&& echo "-------------------------" \
&& echo "-- Ensure and upgrade pip" \
&& which pip \
&& which pip | grep "/opt/conda/bin/pip" \
&& which python \
&& which python | grep "/opt/conda/bin/python" \
&& which python3 \
&& which python3 | grep "/opt/conda/bin/python3" \
&& export EXPECTED_PYTHON_VERSION="3.6.5" \
&& export EXPECTED_PIP_VERSION="10.0.1" \
&& python --version \
&& python --version 2>&1 | grep "${EXPECTED_PYTHON_VERSION}" \
&& pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir setuptools==39.1.0 \
&& pip --version \
&& pip --version | grep "${EXPECTED_PIP_VERSION}" \
&& echo "----------------------------" \
&& echo "-- Ensure node, npm and yarn" \
&& export EXPECTED_NODE_VERSION="8.11.1" \
&& export EXPECTED_YARN_VERSION="1.8.0" \
&& export EXPECTED_NPM_VERSION="5.6.0" \
&& node --version \
&& node --version | grep "v${EXPECTED_NODE_VERSION}" \
&& yarn --version \
&& yarn --version | grep "${EXPECTED_YARN_VERSION}" \
&& npm --version \
&& npm --version | grep "${EXPECTED_NPM_VERSION}" \
&& npm install -g npm \
&& npm install -g node-gyp \
&& npm install -g bower \
&& which node \
&& which node | grep "/opt/conda/bin/node" \
&& which npm \
&& which npm | grep "/opt/conda/bin/npm" \
&& chown -R ${NB_USER}:${NB_GID} ${CONDA_DIR} \
&& chown -R ${NB_USER}:${NB_GID} /home/nbuser
USER ${NB_USER}
# Pinning twisted=17.* as it gets downgraded later on
# Pinning requests-oauthlib=0.8.* as it gets downgraded by dask or scikit or others later on
#
# before: 1.22 GB
# after: 1.47 GB
# diff: +250 MB
RUN echo "" \
&& echo "------------------------------------------------------------------" \
&& echo "-- Test conda, pip and python are there" \
&& conda --version \
&& which pip \
&& which pip | grep "/opt/conda/bin/pip" \
&& which python \
&& which python | grep "/opt/conda/bin/python" \
&& which python3 \
&& which python3 | grep "/opt/conda/bin/python3" \
&& echo "${CONDA_DIR}" | grep "conda" \
&& echo "${LOCALE_TAG}" | grep "en" \
&& echo "${JAVA_HOME}" | grep "java" \
&& echo "${CLASSPATH}" | grep "java" \
&& echo "-------------------------------------------------" \
&& echo "-- Conda Install: Small and pinned repos (235 MB)" \
&& conda install --yes \
'twisted=17.*' \
'requests-oauthlib=0.8.*' \
'bleach' \
'html5lib' \
'python-dateutil' \
'cytoolz' \
'msgpack-python' \
'networkx' \
'openssl' \
'pyOpenSSL' \
'pyYAML' \
'jsonschema' \
'pyjwt' \
'constantly' \
'pyasn1' \
'pyasn1-modules' \
'dill' \
'ipython' \
'ipython_genutils' \
'attrs' \
'pamela' \
'prometheus_client' \
'markupsafe' \
'markdown' \
'pygments' \
'automat' \
'blinker' \
'python-editor' \
'libssh2' \
'libpq' \
'bzip2' \
'krb5' \
'hdf5' \
'async_generator' \
'mako' \
'hyperlink' \
'zope' \
'zope.interface' \
'incremental' \
'appdirs' \
'service_identity' \
'statsd' \
'pymysql' \
'pycurl' \
'urllib3' \
'cryptography' \
'cython' \
'psycopg2' \
'traitlets' \
'decorator' \
'tornado' \
'alembic' \
'SQLAlchemy' \
'Jinja2' \
'cachetools' \
'websocket-client' \
'google-auth' \
'oauthlib' \
'rsa' \
'yapf' \
'beautifulsoup4' \
'simple-salesforce' \
'snappy' \
'python-snappy' \
'awscli' \
'boto3' \
'botocore' \
'colorama' \
'docutils' \
's3transfer' \
'jmespath' \
's3fs' \
'xlrd' \
'markovify' \
'unidecode' \
'simplejson' \
'ijson' \
'tabulate' \
'future' \
'pyparsing' \
'pydot' \
'pathlib' \
'pybind11' \
'XlsxWriter' \
'et_xmlfile' \
'jdcal' \
'openpyxl' \
'httplib2' \
'oauth2client' \
'gspread' \
'termcolor' \
'grpcio' \
'astor' \
'absl-py' \
'gast' \
'werkzeug' \
'jupyterhub' \
&& echo "-------------------------------------------------------------------" \
&& echo "-- Pip Git Install: Kubespawner (20 MB) last known working version:" \
&& echo "-- cff7f0128b337f3018b95e885a55bbfd96d6f994" \
&& echo "-- Pip Git Install: Kubespawner (20 MB) upgrading:" \
&& echo "-- 53b0ebd27893f5c6c914b130291fda674c6b5930" \
&& pip install \
'git+https://github.com/jupyterhub/kubespawner@53b0ebd27893f5c6c914b130291fda674c6b5930' \
'nullauthenticator' \
'oauthenticator' \
'escapism' \
'kubernetes' \
&& echo "-----------------------------------------------" \
&& echo "-- Npm Install: configurable-http-proxy (10 MB)" \
&& npm install -g \
'configurable-http-proxy' \
&& echo "-- Test commonly used packages work for normal user: ${NB_USER}" \
&& python3 -c 'import requests' \
&& python3 -c 'import ijson' \
&& python3 -c 'import simple_salesforce' \
&& python3 -c 'import boto3' \
&& python3 -c 'import gspread' \
&& python3 -c 'import oauth2client' \
&& echo ""
# Versions as of 2018-06-23
# blas: 1.0-mkl defaults
# h5py: 2.8.0-py36ha1f6525_0 defaults
# intel-openmp: 2018.0.3-0 defaults
# libopenblas: 0.2.20-h9ac9557_7 defaults
# mkl: 2018.0.3-1 defaults
# mkl-service: 1.1.2-py36h17a0993_4 defaults
# mkl_fft: 1.0.1-py36h3010b51_0 defaults
# mkl_random: 1.0.1-py36h629b387_0 defaults
# nomkl: 3.0-0 defaults
# numpy: 1.14.5-py36hcd700cb_0 defaults
# numpy-base: 1.14.5-py36hdbf6ddf_0 defaults
#
# before: 1.47 GB
# after.: 2.33 GB
# diff..: +880 MB
RUN echo "" \
&& echo "-------------------------------------------" \
&& echo "-- Conda Install: mkl, blas, numpy (880 MB)" \
&& conda install --yes \
'blas' \
'h5py' \
'intel-openmp' \
'mkl' \
'mkl_fft' \
'mkl_random' \
'mkl-service' \
'nomkl' \
'numpy' \
'numpy-base' \
'cymem' \
'ftfy' \
'murmurhash' \
'plac' \
'preshed' \
'regex' \
'thinc' \
'ujson' \
'wordcloud' \
'wrapt' \
&& echo "-- Test commonly used packages work for normal user: ${NB_USER}" \
&& python3 -c 'import numpy' \
&& echo ""
# Pinning pandas=0.23.0 due to https://github.com/pandas-dev/pandas/issues/21471
# Pinning numpy=1.14.* to avoid DOWNGRADED error numpy: 1.14.5-py36h28100ab_0 defaults --> 1.14.2-py36_nomklh2b20989_1 defaults [nomkl]
#
# before: 2.33 GB
# after.: 3.25 GB
# diff..: +1 GB
RUN echo "" \
&& echo "------------------------" \
&& echo "-- Pip Install: graphviz" \
&& pip install \
'graphviz' \
# Pip install protobuf due to TF issue https://stackoverflow.com/a/50339442/511069
&& echo "----------------------------------------" \
&& echo "-- Conda Install: DSI packages (1 GB)" \
&& conda install --yes \
'numpy=1.14.*' \
'pandas=0.23.0' \
'qt=5.6.2' \
'pyqt=5.6.*' \
'pango=1.41.*' \
'freetype=2.8' \
'gst-plugins-base' \
'gstreamer' \
'matplotlib' \
'matplotlib-venn' \
'dask' \
'dask-core' \
'pytables' \
'bcolz' \
'yapf' \
'packaging' \
'numexpr' \
'scipy' \
'scikit-learn' \
'scikit-image' \
'bokeh' \
'libgfortran-ng' \
'seaborn' \
'heapdict' \
'psutil' \
'sortedcontainers' \
'cycler' \
'click' \
'clickclick' \
'cloudpickle' \
'dbus' \
'distributed' \
'pywavelets' \
'tblib' \
'expat' \
'fontconfig' \
'glib' \
'icu' \
'jpeg' \
'kiwisolver' \
'libpng' \
'libxcb' \
'libxml2' \
'lzo' \
'zict' \
'partd' \
'locket' \
'blosc' \
'pcre' \
'pytz' \
'sip' \
'patsy' \
'bqplot' \
'colorlover' \
'ppft' \
'pox' \
'imageio' \
'multiprocess' \
'pathos' \
'cairo' \
'deap' \
'graphite2' \
'harfbuzz' \
'libtool' \
'pixman' \
&& echo "-- Test commonly used packages work for normal user: ${NB_USER}" \
&& python3 -c 'import mpl_toolkits' \
&& python3 -c 'import ipykernel' \
&& python3 -c 'import ipywidgets' \
&& python3 -c 'import matplotlib' \
&& python3 -c 'import pandas' \
&& python3 -c 'import scipy' \
&& python3 -c 'import sklearn' \
&& python3 -c 'import bokeh' \
&& python3 -c 'import statsmodels' \
&& python3 -c 'from graphviz import Digraph' \
&& python3 -c "import matplotlib.pyplot" \
&& echo ""
# Pinning numpy=1.14.* to avoid DOWNGRADED error numpy: 1.14.5-py36h28100ab_0 defaults --> 1.14.2-py36_nomklh2b20989_1 defaults [nomkl]
#
# before: 3.25 GB
# after.: 3.71 GB
# diff..: +480 MB
RUN echo "" \
&& echo "-----------------------------------------------" \
&& echo "-- Conda Install: notebook, jupyterlab (100 MB)" \
&& conda install --yes \
'numpy=1.14.*' \
'backcall' \
'entrypoints' \
'gmp' \
'gmpy2' \
'fastcache' \
'mpc' \
'mpfr' \
'mpmath' \
'sympy' \
'ipykernel' \
'ipython' \
'ipywidgets' \
'jedi' \
'jupyter_client' \
'jupyter_core' \
'jupyterlab' \
'jupyterlab_launcher' \
'libsodium' \
'mistune' \
'nbconvert' \
'nbformat' \
'notebook' \
'pandoc' \
'pandocfilters' \
'parso' \
'pexpect' \
'pickleshare' \
'prompt_toolkit' \
'ptyprocess' \
'pygments' \
'pyzmq' \
'send2trash' \
'simplegeneric' \
'terminado' \
'testpath' \
'wcwidth' \
'widgetsnbextension' \
'zeromq' \
&& echo "----------------------------------" \
&& echo "-- Conda Install: gcc gxx (380 MB)" \
&& conda install --yes \
'numpy=1.14.*' \
'binutils_impl_linux-64' \
'binutils_linux-64' \
'gcc_impl_linux-64' \
'gcc_linux-64' \
'gxx_linux-64' \
'gxx_impl_linux-64' \
'gfortran_linux-64' \
&& sudo ln -s /opt/conda/bin/x86_64-conda_cos6-linux-gnu-cc /usr/bin/ \
&& echo "-- Test jupyter installed" \
&& jupyter --version \
&& echo ""
# Pinning numpy=1.14.* to avoid DOWNGRADED error numpy: 1.14.5-py36h28100ab_0 defaults --> 1.14.2-py36_nomklh2b20989_1 defaults [nomkl]
#
# before: 3.71 GB
# after.: 4.48 GB
# diff..: +780 MB
RUN echo "" \
&& echo "--------------------------------------------------" \
&& echo "-- Conda Install: additional DSI packages (680 MB)" \
&& conda install --yes \
'numpy=1.14.*' \
'llvmlite' \
'vincent' \
'bcolz' \
'qgrid' \
'emcee' \
'theano' \
'thrift' \
'thrift-cpp' \
'fastparquet' \
'pyarrow' \
'pycrypto' \
'pygpu' \
'pystan' \
'pytest' \
'fbprophet' \
'libboost' \
'libevent' \
'libgpuarray' \
'mpld3' \
'df2gspread' \
'spylon-kernel' \
'arrow-cpp' \
'atomicwrites' \
'findspark' \
'google-api-python-client' \
'lz4-c' \
'metakernel' \
'more-itertools' \
'parquet-cpp' \
'pluggy' \
'py' \
'uritemplate' \
'vincent' \
'zstd' \
'plotly' \
'dnspython' \
'raven' \
'contextlib2' \
'arrow' \
'typing' \
'pystache' \
'humanize' \
'pyperclip'\
'tqdm' \
&& echo "---------------------------------------" \
&& echo "-- Pip Install: additional DSI packages" \
&& pip install \
'lightgbm' \
# https://github.com/ClimbsRocks/auto_ml
# http://auto-ml.readthedocs.io/en/latest/
'auto-ml' \
'expan' \
'nmslib' \
'cufflinks' \
# squarify is for creating Treemaps
'squarify' \
'sklearn-deap2' \
'enum34' \
'edward' \
'pytagcloud' \
'nltk' \
'textblob' \
'TextBlob-de' \
'stups' \
'stups-zign' \
&& echo "--------------------------" \
&& echo "-- Install XGBoost (10 MB)" \
# https://xgboost.readthedocs.io/en/latest/build.html
&& cd /tmp \
&& git clone --recursive https://github.com/dmlc/xgboost \
&& cd xgboost \
&& make -j4 \
&& cd python-package \
&& python setup.py install \
&& cd /tmp && rm -rf /tmp/xgboost \
&& echo "---------------------------------------------------------------" \
&& echo "-- Test commonly used packages work for normal user: ${NB_USER}" \
&& python3 -c 'import df2gspread' \
&& python3 -c 'import fastparquet' \
&& python3 -c 'import fbprophet' \
&& python3 -c 'import squarify' \
&& python3 -c 'import expan' \
&& python3 -c 'import tqdm' \
&& python3 -c 'import lightgbm' \
&& python3 -c 'import auto_ml' \
&& python3 -c 'import xgboost' \
&& echo ""
# before: 4.48 GB
# after.: 5.18 GB
# diff..: +727 MB
RUN echo "" \
&& echo "---------------------------------------------" \
&& echo "-- Pip Install: Tensorflow and Keras (287 MB)" \
&& pip install \
'numpy==1.14.*' \
'tf-nightly==1.10.0.dev20180624' \
'tb-nightly==1.10.0a20180622 ' \
'keras' \
'absl-py' \
'astor' \
'gast' \
'grpcio' \
'markdown' \
'setuptools' \
'termcolor' \
'wheel' \
'pandas-gbq' \
'protobuf' \
'pillow' \
'wordcloud' \
&& echo "------------------------" \
&& echo "-- Test Tensorflow works" \
&& python3 -c 'import tensorflow' \
&& python3 -c 'import tensorboard' \
&& python3 -c 'import keras' \
&& echo "-------------------------------" \
&& echo "-- Install: java 8 (256 MB) ..." \
&& mkdir -p /usr/share/man/man1 \
&& apt-qyy update && apt -qqy install \
openjdk-8-jdk \
&& sudo chown -R ${NB_USER}:${NB_GID} /usr/share/java/ \
&& echo "------------" \
&& echo "-- Test Java" \
&& java -version \
&& java -version 2>&1 | grep "1.8" \
# https://cloud.google.com/sdk/docs/quickstart-debian-ubunt
&& echo "---------------------------------------" \
&& echo "-- Install: gcloud, gsutil (184 MB) ..." \
&& export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" \
&& echo "deb http://packages.cloud.google.com/apt ${CLOUD_SDK_REPO} main" | \
sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list \
&& wget -O - "https://packages.cloud.google.com/apt/doc/apt-key.gpg" | sudo apt-key add - \
&& apt-qyy update && apt -qqy install \
google-cloud-sdk \
&& gcloud --version \
&& gsutil --version \
&& python3 -c 'import google.cloud' \
&& echo ""
# before: 5.18 GB
# after.: 6.18 GB
# diff..: +1 GB
RUN echo "" \
&& echo "----------------------------------------------------------" \
&& echo "-- Conda Install: rstudio dependencies [part 1] (1 GB) ..." \
&& conda install --yes \
'numpy==1.14.*' \
'defaults::qt=5.6.2' \
# 'mro-base' \
'curl' \
'libntlm' \
'libuuid' \
'cyrus-sasl' \
'unixodbc' \
'font-ttf-ubuntu' \
'font-ttf-dejavu-sans-mono' \
'fonts-anaconda' \
'font-ttf-source-code-pro' \
'font-ttf-inconsolata' \
'_r-mutex' \
'r-revoutilsmath' \
&& echo ""
# before: 6.18 GB
# after.: 7.65 GB
# diff..: +1.47 GB
RUN echo "" \
&& echo "------------------------------------------------------------" \
&& echo "-- Conda Install: rstudio dependencies [part 2] (1.5 GB) ..." \
&& conda install --yes \
'numpy==1.14.*' \
'defaults::qt=5.6.2' \
'mro-basics' \
'r-lattice' \
'r-jsonlite' \
'r-mgcv' \
'r-boot' \
'r-nnet' \
'r-codetools' \
'r-revoioq' \
# 'r-microsoftr' \
'r-spatial' \
'r-checkpoint' \
'r-mass' \
'r-kernsmooth' \
'r-png' \
'r-matrix' \
'r-survival' \
'r-foreign' \
'r-class' \
'r-iterators' \
'r-cluster' \
'r-revomods' \
'r-curl' \
'r-doparallel' \
'r-rpart' \
'r-runit' \
'r-foreach' \
'r-nlme' \
'r-deployrrserve' \
'r-r6' \
&& echo ""
# before: 7.65 GB
# after.: 8.38 GB
# diff..: 750MB
RUN echo "" \
&& echo "------------------------------------------------" \
&& echo "-- Conda Install: rstudio dependencies ( MB) ..." \
# gtar: https://github.com/IRkernel/IRkernel/issues/487
&& sudo ln -s /bin/tar /bin/gtar \
&& conda install --yes \
'numpy==1.14.*' \
'r-assertthat' \
'r-backports' \
'r-base64enc' \
'r-bh' \
'r-bindr' \
'r-bindrcpp' \
'r-bit' \
'r-bit64' \
'r-bitops' \
'r-blob' \
'r-broom' \
'r-callr' \
'r-caret' \
'r-catools' \
'r-cellranger' \
'r-cli' \
'r-clipr' \
'r-colorspace' \
'r-config' \
'r-crayon' \
'r-cvst' \
'r-data.table' \
'r-dbi' \
'r-dbplyr' \
'r-ddalpha' \
'r-deoptimr' \
'r-dichromat' \
'r-digest' \
'r-dimred' \
'r-dplyr' \
'r-drr' \
'r-essentials' \
'r-evaluate' \
'r-forcats' \
'r-formatr' \
'r-ggplot2' \
'r-glmnet' \
'r-glue' \
'r-gower' \
'r-gtable' \
'r-haven' \
'r-hexbin' \
'r-highr' \
'r-hms' \
'r-htmltools' \
'r-htmlwidgets' \
'r-httpuv' \
'r-httr' \
'r-ipred' \
'r-irdisplay' \
'r-irkernel' \
'r-kernlab' \
'r-knitr' \
'r-labeling' \
'r-lava' \
'r-lazyeval' \
'r-lubridate' \
'r-magrittr' \
'r-maps' \
'r-markdown' \
'r-mime' \
'r-miniui' \
'r-mnormt' \
'r-modelmetrics' \
'r-modelr' \
'r-mongolite' \
'r-munsell' \
'r-numderiv' \
'r-odbc' \
'r-openssl' \
'r-packrat' \
'r-pbdzmq' \
'r-pillar' \
'r-pkgconfig' \
'r-pki' \
'r-plogr' \
'r-plyr' \
'r-prodlim' \
'r-profvis' \
'r-psych' \
'r-purrr' \
'r-quantmod' \
'r-randomforest' \
'r-rappdirs' \
'r-rbokeh' \
'r-rcolorbrewer' \
'r-rcpp' \
'r-rcpproll' \
'r-rcurl' \
'r-readr' \
'r-readxl' \
'r-recipes' \
'r-recommended' \
'r-rematch' \
'r-repr' \
'r-reprex' \
'r-reshape2' \
'r-rjava' \
'r-rjdbc' \
'r-rjsonio' \
'r-rlang' \
'r-rmarkdown' \
'r-robustbase' \
'r-rprojroot' \
'r-rsconnect' \
'r-rstudioapi' \
'r-rvest' \
'r-scales' \
'r-selectr' \
'r-sfsmisc' \
'r-sourcetools' \
'r-sparklyr' \
'r-stringi' \
'r-stringr' \
'r-tibble' \
'r-tidyr' \
'r-tidyselect' \
'r-tidyverse' \
'r-timedate' \
'r-ttr' \
'r-utf8' \
'r-uuid' \
'r-viridislite' \
'r-whisker' \
'r-withr' \
'r-xml2' \
'r-xtable' \
'r-xts' \
'r-yaml' \
'r-zoo' \
'rstudio' \
&& R CMD javareconf \
&& echo ""
RUN conda info
# before: 8.38 GB
# after.:
# diff..:
RUN echo "" \
&& echo "------------------------------------------------" \
&& echo "-- Conda Install: rstudio dependencies ( MB) ..." \
&& conda install --yes \
'r-base' \
&& R CMD javareconf \
&& echo ""
# This fails with:
# UnsatisfiableError: The following specifications were found to be in conflict:
# - r-base -> _r-mutex=1[build=anacondar_1]
# - r-microsoftr -> mro-base=3.4.3 -> _r-mutex=1[build=mro_2]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment