0

I am using apptainer to build a r-text package container in Ubuntu on a server. Anyone could help? My hardware is Mac pro M1 with MacOS 13.4 (22F66).

My build.def file is as follows. The container is based the docker Ubuntu image. And I am trying to install the r first, then to install necessary packages. And then I need the text package and conda to be installed.

Bootstrap: docker
From: ubuntu:20.04

%environment
  export LANG=C.UTF-8 LC_ALL=C.UTF-8
  export XDG_RUNTIME_DIR=/tmp/.run_$(uuidgen)

%post
    # Install
    apt-get -y update

    export R_VERSION=4.2.2
    echo "export R_VERSION=${R_VERSION}" >> $SINGULARITY_ENVIRONMENT

     # Install R
     apt-get update
     apt-get install -y --no-install-recommends software-properties-common dirmngr  wget uuid-runtime
     wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | \
       tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
     add-apt-repository \
       "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"
     apt-get install -y --no-install-recommends \
     r-base=${R_VERSION}* \
     r-base-core=${R_VERSION}* \
     r-base-dev=${R_VERSION}* \
     r-recommended=${R_VERSION}* \
     r-base-html=${R_VERSION}* \
     r-doc-html=${R_VERSION}* \
     libcurl4-openssl-dev \
     libharfbuzz-dev \
     libfribidi-dev \
     libgit2-dev \
     libxml2-dev \
     libfontconfig1-dev \
     libssl-dev \
     libxml2-dev \
     libfreetype6-dev \
     libpng-dev \
     libtiff5-dev \
     libjpeg-dev
     
     # Add a default CRAN mirror
     echo "options(repos = c(CRAN = 'https://cran.rstudio.com/'), download.file.method = 'libcurl')" >> /usr/lib/R/etc/Rprofile.site

     # Fix R package libpaths (helps RStudio Server find the right directories)
     mkdir -p /usr/lib64/R/etc
     echo "R_LIBS_USER='/usr/lib64/R/library'" >> /usr/lib64/R/etc/Renviron
     echo "R_LIBS_SITE='${R_PACKAGE_DIR}'" >> /usr/lib64/R/etc/Renviron
     # Clean up
     rm -rf /var/lib/apt/lists/*

     # Install python3
     apt-get -y install python3 wget
     apt-get -y clean

     # Install Miniconda
     cd /
     wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
     bash Miniconda3-latest-Linux-x86_64.sh -b -p /miniconda

/bin/bash <<EOF
     rm Miniconda3-latest-Linux-x86_64.sh
     source /miniconda/etc/profile.d/conda.sh
     conda update -y conda
     # Install reticulate and text
         Rscript -e 'install.packages("pkgdown")'
     Rscript -e 'install.packages("ragg")'
     Rscript -e 'install.packages("textshaping")'
     Rscript -e 'install.packages("reticulate")'
     Rscript -e 'install.packages("devtools")'
     Rscript -e 'install.packages("glmnet")'
     Rscript -e 'install.packages("tidyverse")'
#     Rscript -e 'install.packages("text")'
     Rscript -e 'devtools::install_github("oscarkjell/text")'
     # Create the Conda environment at a system folder
     Rscript -e 'text::textrpp_install(prompt = FALSE, rpp_version = c("torch==1.11.0", "transformers==4.19.2", "numpy", "nltk"))'
     Rscript -e 'text::textrpp_initialize(save_profile = TRUE, prompt = FALSE, textEmbed_test = TRUE)'
     Rscript -e 'text::textEmbed("hello", model = "distilbert-base-cased", layers = 5)'
     Rscript -e 'text::textEmbed("hello", model = "bert-base-cased", layers = 11)'
     Rscript -e 'text::textEmbed("hello", model = "bert-large-cased", layers = 23)'
     Rscript -e 'text::textEmbed("hello", model = "roberta-base", layers = 11)'
     Rscript -e 'text::textEmbed("hello", model = "roberta-large", layers = 23)'
     Rscript -e 'text::textEmbed("hello", model = "google/flan-t5-base", layers = -2)'
     Rscript -e 'text::textEmbed("hello", model = "google/flan-t5-large", layers = -2)'
     Rscript -e 'text::textEmbed("hello", model = "bigscience/T0pp", layers = -2)'
     Rscript -e 'text::textEmbed("hello", mdoel = "xlm-roberta-base", layers=-2)'
     Rscript -e 'text::textEmbed("hello", mdoel = "xlm-roberta-large", layers=-2)'
     Rscript -e 'text::textEmbed("hej", mdoel = "KB/bert-base-swedish-cased", layers=-2)'
     Rscript -e 'text::textEmbed("hello", mdoel = "nghuyong/ernie-2.0-base-en", layers=-2)'

With this file, I then ran the Linux command to build the container: apptainer container.sif build.def. And the server returned the following error messages.

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 r-recommended : Depends: r-cran-mgcv (>= 1.1.5) but it is not going to be installed
                 Depends: r-cran-rpart (>= 3.1.20) but it is not going to be installed
                 Depends: r-cran-survival (>= 2.13.2-1) but it is not going to be installed
                 Depends: r-cran-mass but it is not going to be installed
                 Depends: r-cran-class but it is not going to be installed
                 Depends: r-cran-matrix but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
FATAL:   While performing build: while running engine: exit status 100
AlexGu
  • 41
  • 4
  • You could rely on [r2u](https://eddelbuettel.github.io/r2u/) to make this easier: it brings _all_ of CRAN to Ubuntu 20.04 and 22.04 as binaries which _just work_. It would take care of _all_ the CRAN needs you have here, and likely permit installation of the one non-CRAN package you seem to have here. – Dirk Eddelbuettel Jun 11 '23 at 22:26

1 Answers1

0

Use the following code to replace the apt-get code starting "apt-get install -y --no-install-recommends ...".

r-base=${R_VERSION}* \
r-base-core=${R_VERSION}* \
r-base-dev=${R_VERSION}* \
r-recommended=${R_VERSION}* \
r-base-html=${R_VERSION}* \
r-doc-html=${R_VERSION}* \
libcurl4-openssl-dev \
libharfbuzz-dev \
libfribidi-dev \
libgit2-dev \
libxml2-dev \
libfontconfig1-dev \
libssl-dev \
libxml2-dev \
libfreetype6-dev \
libpng-dev \
libtiff5-dev \
libjpeg-dev \
r-cran-mgcv \
r-cran-rpart \
r-cran-survival \
r-cran-mass \
r-cran-class \
r-cran-matrix

Also, upgrade the export R_VERSION=4.2.2 to export R_VERSION=4.3.0.

It seems working.

AlexGu
  • 41
  • 4