Вопрос или проблема
Я новичок в 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-пакетов и несоответствия версий. Рассмотрим шаги, которые могут помочь разрешить эти проблемы.
Теория
-
Зависимости R-пакетов: Многие R-пакеты требуют наличия определенных системных библиотек или других R-пакетов для корректной работы. Если их нет, установка может завершиться с ошибкой.
-
Совместимость версий: Пакеты Debian и Ubuntu могут иметь строгие зависимости по версиям. Это важно учитывать при установке через пакетные менеджеры, такие как
apt
. -
Изоляция окружения: Использование контейнеров, таких как 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.
Применение
-
Обход зависимостей:
- Обновите систему и попробуйте повторно установить необходимые системные библиотеки перед установкой 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'))"
- Обновите систему и попробуйте повторно установить необходимые системные библиотеки перед установкой R-пакетов:
-
Совместимость версий:
- Проверьте, какие версии R-пакетов доступны, и убедитесь, что они совместимы с используемой версией R.
- Вы можете указать конкретные версии и репозитории CRAN, чтобы исключить несовместимость:
R -e "options(rlib_url = 'https://cloud.r-project.org/')"
-
Использование Ubuntu 22.04:
- Перейдите на версию контейнера Ubuntu 22.04, чтобы воспользоваться более актуальными репозиториями и улучшенной стабильностью.
- Обновите дефиницию для контейнера и повторите установку R:
add-apt-repository "deb https://cloud.r-project.org/bin/linux/debian buster-cran40/" # Проверьте актуальную версию репозитория
Применение данных рекомендаций может помочь устранить проблемы с установкой R и его пакетов внутри Apptainer. Прочтите логи и следите за конфигурациями зависимостей, чтобы соответствовать необходимым версиям.