Installation de R 4.4.0?

Bonjour,

Je sais que la version 4.4.0 de r-base n'est pas encore disponible en package conda.

Mais la demande pour cette version existe bien.

Je me demandais si il existait un moyen de la packager dans un environnement conda. A priori l'intégration dans un container n'est pas possible pour une utilisation avec rstudio.

(Re-)bonjour,

J'ai réfléchi au problème et j'aimerais proposer une MR sur le repo tools avec les éléments suivants:

env.yml:

name: r-4.4.0
channels:
- conda-forge
- defaults
dependencies:
- gcc_linux-64
- xz
- pcre2
- libcurl

post-install.sh:

#!/bin/bash

version=4.4.0

set +e

eval "$(${CONDA_HOME}/bin/conda shell.bash hook)"

conda activate r-${version} 2> /dev/null
if [ $? -ne 0 ]
then
    conda activate ${CONDA_HOME}/envs/r-${version}
fi

if [ 'r-'${version} != "${CONDA_DEFAULT_ENV}" ]
then
    echo "Unable to load R env"
    exit 1;
fi

set -e

cd /tmp
wget https://cran.r-project.org/src/base/R-4/R-4.4.0.tar.gz
tar xzf R-4.4.0.tar.gz
cd R-4.4.0/
./configure --prefix=${CONDA_PREFIX} --with-x=no --with-readline=no
make -j $(nproc)
make install

Néanmoins j'aimerais également spécifier une liste de librairies R à installer avec un fichier r.yml mais l'exécution du script post-install.sh intervient APRÈS dans le pipeline gitlab.

Une façon de contourner ce problème ?

Ca c'est presque facile
Ne pas renseigner r.yml avant une première passe d'installation de R itself.

Et ça apprendra au utilisateur à ne pas fixer leurs versions dans lors du module load.

Par contre, pour la compilation de R dans un env Conda... Ca deviendrait un nouveau mode de déploiement en plus de pur conda et apptainer.

Je peux aussi inclure l'installation des library R dans le script post-install.sh en fait.

Je ferai une MR si ça intéresse du monde.

Hello Julien,

Le package conda-forge pour r 4.4.0 semble sur le point de sortir : r-base v4.4.0 by regro-cf-autotick-bot · Pull Request #297 · conda-forge/r-base-feedstock · GitHub

Si c'est possible de patienter encore quelques heures ça me parait la meilleure solution.

Julien

OK !

Merci.

Pour ceux qui seraient pressés, voici la méthode pour créer un environnement conda R 4.4.0 et l'importer dans jupyterhub:

env.yml:

name: r-4.4.0
channels:
- conda-forge
- defaults
dependencies:
- binutils
- cairo
- compilers
- fontconfig
- freetype
- fribidi
- harfbuzz
- jupyter_client
- libcurl
- libgit2
- libjpeg-turbo
- libtiff
- libxml2
- pcre2
- pkg-config
- xorg-libxt
- xz
- zlib
conda env create -n r-4.4.0 -f env.yml
conda activate r-4.4.0
wget https://cran.r-project.org/src/base/R-4/R-4.4.0.tar.gz
tar xzf R-4.4.0.tar.gz
cd R-4.4.0/
./configure --prefix=${CONDA_PREFIX} --with-readline=no
make -j $(nproc)
make -i install
R -e 'install.packages(c("devtools", "RCurl"), repos="https://cran.irsn.fr")'
R -e 'devtools::install_github(paste0("IRkernel/", c("repr", "IRdisplay", "IRkernel")), force = TRUE)'
R -e "IRkernel::installspec(name = 'r-4.4.0', displayname = 'R 4.4.0', user = TRUE, env = list(PATH = '$PATH'))"

Ensuite, modifier le fichier .local/share/jupyter/kernels/r-4.4.0/kernel.json (pour éviter un bug dans un jupyter notebook):

{
  "argv": ["/shared/home/rey/.conda/envs/r-4.4.0/lib64/R/bin/R", "--slave", "-e", "options(bitmapType='cairo') ; IRkernel::main()", "--args", "{connection_file}"],
  "display_name": "R 4.4.0",
  "language": "R",
  "env": {
    "PATH": "/shared/home/rey/.conda/envs/r-4.4.0/bin:/opt/conda/condabin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
  }
}

@+