Установка R не удалась в Ubuntu.

Вопрос или проблема

Я новичок в Apptainer и пытаюсь установить R, Julia и пакеты R. Мне удалось установить R и Julia отдельно (т.е. создать .sif файлы), и они работают, но я не могу установить некоторые из пакетов R. Поэтому этот файл работает хорошо:

файл ubuntu_R_base.def

BootStrap: docker
From: r-base:4.3.2

Когда я строю файл ubuntu_R_packages.def поверх ubuntu_R_base.sif, он не устанавливает некоторые пакеты (например, dev tools).

BootStrap: localimage
From: ubuntu_R_base.sif    
    
    %post
        # Установка системных зависимостей для пакетов R
        apt-get update && apt-get install -y \
        libcurl4-openssl-dev libssl-dev libxml2-dev \
        libgit2-dev libgeos-dev libproj-dev libgdal-dev \
        libpng-dev libjpeg-dev libtiff-dev \
        gfortran
    
    R -e "install.packages('devtools')"
    R -e "install.packages('raster')"
    R -e "install.packages('dplyr')"

Это возвращает длинный код (не могу скопировать сюда), но ошибка выглядит так:

ERROR: dependencies 'usethis', 'pkgdown', 'rcmdcheck', 'roxygen2',
'rversions', 'urlchecker' are not available for package 'devtools'.

removing '/usr/local/lib/R/site-library/devtools'   
The downloaded source packages are in '/tmp/RtmptR7qsG/downloaded_packages'    
There were 17 warnings (use warnings() to see them)

Поэтому я подумал, что лучшее решение – создать .def файл из Ubuntu 22.04 (так как он более стабильный) и построить R внутри него. Вот файл R_base_2.def

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
    # Установка
    apt-get -y update

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

     # Установка 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 \
r-cran-mgcv \
r-cran-rpart \
r-cran-survival \
r-cran-mass \
r-cran-class \
r-cran-matrix

Ошибка, которую я получаю, следующая:

The following packages have unmet dependencies:  r-cran-class :
Depends: r-base-core (>= 4.4.2-1.2004.0) but 4.3.0-1.2004.0 is to be
installed  r-cran-mass : Depends: r-base-core (>= 4.4.2-1.2004.0) but
4.3.0-1.2004.0 is to be installed  r-cran-matrix : Depends: r-base-core (>= 4.4.1-3.2004.1) but 4.3.0-1.2004.0 is to be installed
                 Depends: r-cran-lattice but it is not going to be installed  r-cran-mgcv : Depends: r-base-core (>= 4.3.2-1.2004.0) but
4.3.0-1.2004.0 is to be installed
               Depends: r-cran-nlme (>= 3.1-64) but it is not going to be installed  r-cran-survival : Depends: r-base-core (>=
4.4.2-1.2004.0) but 4.3.0-1.2004.0 is to be installed  r-recommended : Depends: r-cran-boot (>= 1.2.19) but it is not going to be installed
                 Depends: r-cran-cluster (>= 1.9.6-2) but it is not going to be installed
                 Depends: r-cran-foreign (>= 0.7-2) but it is not going to be installed
                 Depends: r-cran-kernsmooth (>= 2.2.14) but it is not going to be installed
                 Depends: r-cran-lattice (>= 0.10.11) but it is not going to be installed
                 Depends: r-cran-nlme (>= 3.1.52) but it is not going to be installed
                 Depends: r-cran-nnet 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: while
running %post section: exit status 100

Ответ или решение

Установка R в Ubuntu часто сталкивается с различными проблемами из-за зависимости от правильных версий библиотек и программных пакетов. В данной ситуации вы сталкиваетесь с проблемами из-за зависимости некоторых R-пакетов и несоответствия версий. Рассмотрим шаги, которые могут помочь разрешить эти проблемы.

Теория

  1. Зависимости R-пакетов: Многие R-пакеты требуют наличия определенных системных библиотек или других R-пакетов для корректной работы. Если их нет, установка может завершиться с ошибкой.

  2. Совместимость версий: Пакеты Debian и Ubuntu могут иметь строгие зависимости по версиям. Это важно учитывать при установке через пакетные менеджеры, такие как apt.

  3. Изоляция окружения: Использование контейнеров, таких как Apptainer (ранее Singularity), может добавить уровень сложности, так как временные файлы и настройки могут не применяться должным образом в процессе установки.

Пример

В представленном вами процессе установки вы столкнулись с двумя основными проблемами:

  • Недопустимые зависимости R-пакетов: ERROR: dependencies 'usethis', 'pkgdown', 'rcmdcheck', 'roxygen2', 'rversions', 'urlchecker' are not available for package 'devtools' указывает на отсутствие требуемых пакетов. Это может быть решено дополнительной установкой зависимостей.

  • Конфликты версий зависимости: Проблемы с установкой версии r-base-core и других пакетов, таких как r-cran-class и r-cran-mass, свидетельствуют о конфликте версий. Пакеты пытаются установить версии, несовместимые с текущей доступной версией R.

Применение

  1. Обход зависимостей:

    • Обновите систему и попробуйте повторно установить необходимые системные библиотеки перед установкой R-пакетов:
      apt-get update && apt-get install -y \
      libcurl4-openssl-dev libssl-dev libxml2-dev \
      libgit2-dev libgeos-dev libproj-dev libgdal-dev \
      libpng-dev libjpeg-dev libtiff-dev gfortran
    • Установите отсутствующие R-пакеты вручную перед установкой devtools:
      R -e "install.packages(c('usethis', 'pkgdown', 'rcmdcheck', 'roxygen2', 'rversions', 'urlchecker'))"
  2. Совместимость версий:

    • Проверьте, какие версии R-пакетов доступны, и убедитесь, что они совместимы с используемой версией R.
    • Вы можете указать конкретные версии и репозитории CRAN, чтобы исключить несовместимость:
      R -e "options(rlib_url = 'https://cloud.r-project.org/')"
  3. Использование Ubuntu 22.04:

    • Перейдите на версию контейнера Ubuntu 22.04, чтобы воспользоваться более актуальными репозиториями и улучшенной стабильностью.
    • Обновите дефиницию для контейнера и повторите установку R:
      add-apt-repository "deb https://cloud.r-project.org/bin/linux/debian buster-cran40/" # Проверьте актуальную версию репозитория

Применение данных рекомендаций может помочь устранить проблемы с установкой R и его пакетов внутри Apptainer. Прочтите логи и следите за конфигурациями зависимостей, чтобы соответствовать необходимым версиям.

Оцените материал
Добавить комментарий

Капча загружается...