anchor.diff:    # Install build / source control tools
     $APT_INSTALL curl wget git maven ivy subversion make gcc lsof libffi-dev \
       pandoc pandoc-citeproc libssl-dev libcurl4-openssl-dev libxml2-dev && \
  -  curl -sL https://deb.nodesource.com/setup_11.x | bash && \
  +  curl -sL https://deb.nodesource.com/setup_12.x | bash && \
     $APT_INSTALL nodejs && \
     # Install needed python packages. Use pip for installing packages (for consistency).
  -  $APT_INSTALL libpython3-dev python3-pip python3-setuptools && \
  +  $APT_INSTALL python3-pip python3-setuptools && \
     # qpdf is required for CRAN checks to pass.
     $APT_INSTALL qpdf jq && \
  -  # Change default python version to python3.
  -  update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 && \
  -  update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2 && \
  -  update-alternatives --set python /usr/bin/python3.6 && \
     pip3 install $PIP_PKGS && \
     # Install R packages and dependencies used when building.
     # R depends on pandoc*, libssl (which are installed above).
     # Note that PySpark doc generation also needs pandoc due to nbsphinx
     $APT_INSTALL r-base r-base-dev && \
  +  $APT_INSTALL libcurl4-openssl-dev libgit2-dev libssl-dev libxml2-dev && \
     $APT_INSTALL texlive-latex-base texlive texlive-fonts-extra texinfo qpdf && \
     Rscript -e "install.packages(c('curl', 'xml2', 'httr', 'devtools', 'testthat', 'knitr', 'rmarkdown', 'roxygen2', 'e1071', 'survival'), repos='https://cloud.r-project.org/')" && \
     Rscript -e "devtools::install_github('jimhester/lintr')" && \
     # Install tools needed to build the documentation.
  -  $APT_INSTALL ruby2.5 ruby2.5-dev && \
  +  $APT_INSTALL ruby2.7 ruby2.7-dev && \
     gem install --no-document $GEM_PKGS
   
   WORKDIR /opt/spark-rm/output
  
positive.code:   apt-get clean && \
    apt-get update && \
    $APT_INSTALL software-properties-common && \
    apt-add-repository -y ppa:brightbox/ruby-ng && \
    apt-get update && \
    # Install openjdk 8.
    $APT_INSTALL openjdk-8-jdk && \
  
negative.code: # TODO(SPARK-32407): Sphinx 3.1+ does not correctly index nested classes.
  #   See also https://github.com/sphinx-doc/sphinx/issues/7551.
  #   We should use the latest Sphinx version once this is fixed.
  ARG PIP_PKGS="sphinx==3.0.4 mkdocs==1.1.2 numpy==1.19.4 pydata_sphinx_theme==0.4.1 ipython==7.19.0 nbsphinx==0.8.0 numpydoc==1.1.0"
  ARG GEM_PKGS="jekyll:4.2.0 jekyll-redirect-from:0.16.0 rouge:3.26.0"
  
  # Install extra needed repos and refresh.
  # - CRAN repo
  