Installation de R 4.2 sur Ubuntu 22.04 LTS et astuces pour les packages de cartographie

Author : Sébastien Rochette
Categories : cartographie, docker, serveur, ubuntu
Tags : cartographie, installation, production, ubuntu
Date :

C’est à nouveau ce moment dans votre vie d’utilisateur d’Ubuntu où vous envisagez de mettre à niveau votre installation serveur d’Ubuntu 20.04 vers Ubuntu 22.04 LTS. En effet, la première version 22.04.1 est maintenant disponible, et vous aimeriez que quelqu’un d’autre l’essaie pour vous avant de perdre tout votre travail. Laissez-moi faire, je prend le risque ! Nous utiliserons également R 4.2 par défaut. Aussi, comme tous les deux ans dans cet article, je donnerai les astuces pour l’installation des packages de données géographiques sur Ubuntu. Il suffit de suivre le guide…

La dernière fois que vous avez lu ce genre de tutoriel sur notre blog, c’était il y a deux ans pour migrer vers R 4.0 et Ubuntu 20.04 LTS. Notez que j’écris ce guide pour pouvoir mettre à jour mon propre ordinateur portable en production. Il faut que ça marche !
De plus, tout est proposé en lignes de commande, ce qui signifie que vous pouvez utiliser ce tutoriel pour mettre à jour un serveur sans interface graphique, pour construire vos conteneurs Docker ou mettre en place l’intégration continue de vos créations de packages. Notez que nous pouvons vous aider dans ce processus d’installation de serveur R, de mise en place de Docker ou de CI.

Cette année, je vais d’abord réaliser la mise à niveau d’Ubuntu Focal vers Ubuntu Jammy à l’intérieur d’un conteneur Docker, afin de pouvoir écrire mon article de blog en même temps. Je mettrai à niveau mon propre ordinateur portable juste après.

Table des matières

 

Pas l’temps de tout lire

Vous voulez seulement toutes les lignes de commande en un seul endroit parce que vous avez déjà suivi mes précédents articles de blog sur la migration d’ubuntu vers R au cours des quatre dernières années et vous me faites aveuglément confiance ? D’accord !

=> Cliquer ici pour la liste complète des commandes bash <=
# Install sudo if needed
apt-get install sudo  
# Upgrade your Ubuntu LTS
sudo su
apt-get -y autoremove
do-release-upgrade -d
# Clean the extra apt sources
# _Remove PPA like:
# - `deb https://mirror.ibcp.fr/pub/CRAN/ focal/`
# - `deb http://ppa.launchpad.net/c2d4u.team/c2d4u4.0+/ubuntu focal main`
sudo vi /etc/apt/sources.list
# _Or maybe the specific list
ls /etc/apt/sources.list.d
sudo rm -i /etc/apt/sources.list.d/name.of.file.for.mirror.list
# Clean previous R packages installation
sudo apt-get purge r-base* r-recommended r-cran-*
sudo apt autoremove
# Install R and all required dependencies
sudo apt install --no-install-recommends software-properties-common dirmngr
# _Add the keys
sudo apt install -y wget
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
# _Add the R 4.0 repo from CRAN -- adjust 'focal' to 'groovy' or 'bionic' as needed
sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"
# Install R
# On vous demandera de choisir votre zone géographique
sudo apt install -y r-base r-base-core r-recommended r-base-dev
# Install PPA with pre-compiled packages
sudo add-apt-repository ppa:c2d4u.team/c2d4u4.0+
# My own selection among 5000...
sudo apt install -y r-cran-rgl r-cran-rjags r-cran-snow r-cran-ggplot2 r-cran-igraph r-cran-lme4 r-cran-rjava r-cran-devtools r-cran-roxygen2 r-cran-rjava
# System deps for cartography
sudo apt install -y libgdal-dev libproj-dev libgeos-dev libudunits2-dev libv8-dev libnode-dev libcairo2-dev libnetcdf-dev
sudo apt install -y libglu1-mesa-dev freeglut3-dev mesa-common-dev
# Extra packages for image manipulation
sudo apt install -y libmagick++-dev libjq-dev libv8-dev libprotobuf-dev protobuf-compiler libsodium-dev imagemagick libgit2-dev

Après cette installation, ouvrir R et mettre à niveau tous les packages

update.packages(ask = FALSE, checkBuilt = TRUE)

Nouvelle version d’Ubuntu et nouvelle version de R

ubuntu-with-rSi vous utilisez Ubuntu sur votre ordinateur portable ou sur les serveurs de votre entreprise, il y a de fortes chances que vous utilisiez une version LTS (Long Term Support). L’utilisation d’une version LTS est plus sûre pour les entreprises ayant des contraintes de stabilité. Cela permet d’éviter d’éventuels changements cassants qui compromettraient vos flux de travail et donc votre activité. La première version d’Ubuntu 22.04 Jammy Jellyfish pour serveur ou desktop est disponible au téléchargement. Si vous utilisez encore Ubuntu 20.04, cette mise à jour vous est proposée dès à présent.

Mise à niveau vers Ubuntu 22.04 Jammy Jellyfish

ubuntu-logoComme toujours, assurez-vous d’avoir quelques sauvegardes de vos fichiers avant de commencer la migration !
Si vous utilisez Ubuntu 20.04 LTS, vous pouvez voir la nouvelle version en utilisant le “gestionnaire de mise à jour de noyau”.

Vous avez vraiment envie de faire le saut ? Alors, c’est parti ! Assurez-vous que le gestionnaire est installé :

# install sudo if needed
# apt-get install sudo  

Vous devrez vous assurer que votre système est déjà à jour.

sudo apt upgrade
sudo apt dist-upgrade

Un peu de nettoyage

sudo apt autoremove

et la mise à niveeau vers Ubuntu 22.04 !

sudo do-release-upgrade

Cela devrait fonctionner si vous n’avez autorisé que l’installation des versions LTS, et après la première version de point 22.04.1, attendue le 4 août 2022.
Si la mise à niveau n’est pas déjà disponible, et que vous ne voulez pas attendre, vous devrez mettre à niveau à travers les versions de développement avec :

do-release-upgrade -d

Soyez prudent avec ce changement. Si vous utilisez votre ordinateur pour le travail en mode production, remettez-le en “lts” dès que vous aurez installé le LTS. Cependant, pour un serveur en production, je vous recommande d’attendre la version 22.04.1, début août 2022.

Prompt=lts

pour:

Prompt=normal

Ensuite vous pourrez exécuter sudo do-release-upgrade

Suivez les instructions et vous avez terminé pour la mise à jour d’Ubuntu.

Supprimer la version précédente de R

Supprimer les dépôts supplémentaires

Pour pouvoir utiliser R 4.0, vous devrez supprimer tout ce qui concerne la version précédente de R.
Avec la mise à jour de la version, il y a de fortes chances qu’Ubuntu ait déjà désactivé les dépôts. Cependant, les versions récentes essaient de les réactiver après la mise à jour.
Nous devons d’abord vérifier si vous avez utilisé l’un des serveurs miroirs de R**. P’tet bin qu’oui, p’tet bin qu’non… Le serveur miroir R sera l’un des suivants : https://cran.r-project.org/mirrors.html.
Le nom de ce serveur peut être listé dans le fichier “/etc/apt/sources.list” que vous pouvez éditer avec :

Dans le terminal:

sudo vi /etc/apt/sources.list

Trouvez la ou les lignes qui ressemblent à deb https://mirror.ibcp.fr/pub/CRAN/ focal/ et commentez-les avec un #. De même, si vous avez suivi notre post “migrer vers Ubuntu 20.04 et R 4.0”, vous avez probablement ajouté le miroir principal du CRAN deb https://cloud.r-project.org/bin/linux/ubuntu mais aussi peut-être les binaires Ubuntu fournis par Michael Rutter sur le PPA de l’équipe “c2d4u” qui ressemble à deb http://ppa.launchpad.net/c2d4u.team/c2d4u4.0+/ubuntu focal main. Commentez toutes ces lignes avec un #.

Si vous n’avez pas trouvé ces lignes, le serveur peut être répertorié dans un fichier externe répertorié dans “/etc/apt/sources.list.d”. Trouvez le “nom.du.fichier.avec.un.nom.miroir” (remplacez ce chemin par le chemin approprié) et supprimez les fichiers.

Dans le terminal:

ls /etc/apt/sources.list.d
sudo rm -i /etc/apt/sources.list.d/name.of.file.for.mirror.list

Si vous ne l’avez pas trouvé, vous avez probablement installé R en utilisant les serveurs par défaut d’Ubuntu. Dans ce cas, vous n’avez rien d’autre à faire.

Supprimer les paquets Ubuntu pour R

Vous devez maintenant supprimer tous les paquets Ubuntu pour R et nettoyer votre installation.

Dans le terminal:

sudo apt-get purge r-base* r-recommended r-cran-*
sudo apt autoremove

Notez que pour utiliser le * pour la correspondance partielle, vous avez besoin de apt-get, et non de apt.

R devrait être totalement supprimé après cela.

Installer la nouvelle version de R (4.2)

Définir de nouveaux dépôts Ubuntu pour R 4.2

Les instructions d’installation détaillées se trouvent sur https://cran.r-project.org/bin/linux/ubuntu/. Grâce à Dirk Eddelbuettel et Michael Rutter, installer R sur Ubuntu est un jeu d’enfant !
Nous utiliserons le miroir https://cloud.r-project.org, qui redirigera automatiquement vers le miroir CRAN le plus proche.

Dans le terminal:


sudo apt install --no-install-recommends software-properties-common dirmngr
# Add the keys
wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
# add the R 4.0 repo from CRAN -- adjust 'focal' to 'groovy' or 'bionic' as needed
sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"

Installer R 4.2

Très peu de paquets deb sont nécessaires :

Dans le terminal:

sudo apt install r-base r-base-core r-recommended r-base-dev

Installer les binaires d’autres paquets avec Ubuntu

À titre personnel, j’ai installé certains paquets R avec une PPA Ubuntu (Personal Package Archives) parce que je fais confiance aux mainteneurs et que je suis sûr que ces paquets R fonctionneront avec ma distribution Ubuntu. Ils nécessitent des dépendances Linux qui peuvent être compliquées à installer. C’est le cas des paquets pour la cartographie ou ceux qui contiennent du java.
Michael Rutter prépare pour nous l’installation de binaires prêts à l’emploi de vos paquets R préférés sur un PPA avec la “cran2deb4ubuntu Build Team”. Plus d’explications sur ces binaires sont disponibles sur son billet de blog : “R4.0 now available”. Par conséquent, vous devrez utiliser son PPA avant d’installer les paquets Ubuntu pour R (commençant par “r-cran-”). Notez que c’est la même chose que pour R4.0.

Dans le terminal:

sudo add-apt-repository ppa:c2d4u.team/c2d4u4.0+

Voici ma propre sélection de paquets que vous ne voudrez peut-être pas construire vous-même à partir des sources et laisser Michael le faire pour vous.

sudo apt install r-cran-rgl r-cran-rjags r-cran-snow r-cran-ggplot2 r-cran-igraph r-cran-lme4 r-cran-rjava r-cran-devtools r-cran-roxygen2 r-cran-rjava

Installer les paquets pour les analyses de données spatiales dans Ubuntu

ubuntu-carto-rL’installation de paquets R comme {sf}, {terra} … peut nécessiter des paquets Ubuntu externes pour des logiciels comme PROJ, GDAL ou GEOS.

Installez les paquets Ubuntu suivants pour permettre de futures analyses de données spatiales dans R :

sudo apt install libgdal-dev libproj-dev libgeos-dev libudunits2-dev libv8-dev libnode-dev libcairo2-dev libnetcdf-dev

Si vous voulez jouer avec {rgl} et {rayshader}, vous pouvez également avoir besoin des éléments suivants :

sudo apt install libglu1-mesa-dev freeglut3-dev mesa-common-dev

Si vous souhaitez obtenir des dépendances système supplémentaires pour la manipulation des images, vous pouvez installer les éléments suivants :

sudo apt install libmagick++-dev libjq-dev libv8-dev libprotobuf-dev protobuf-compiler libsodium-dev imagemagick libgit2-dev

Chez ThinkR, nous utilisons des conteneurs Docker préconstruits pour dispenser une formation R sur notre plateforme BakaCode, afin que les participants ne se débattent pas avec les installations et commencent directement leur cours en écrivant leurs lignes de commande dans R.
Par conséquent, nous avons un fichier de configuration avec toutes les dépendances du système Ubuntu dont nous avons besoin pour nos tutoriels, que vous pouvez trouver sur notre compte GitHub à l’adresse suivante : https://github.com/ThinkR-open/installR/blob/master/bk-config.sh.

Mise à jour des packages R

Dans la console R :

update.packages(ask = FALSE, checkBuilt = TRUE)

Test de R et des paquets spatiaux

Sur mon blog personnel StatnMap blog, j’ai écrit un billet de blog comme Introduction à la cartographie avec {sf} & Co.. Il y a suffisamment d’exemples pour tester l’installation correcte de R et de vos packages de cartographie. Le code est disponible sur GitHub, il suffit d’exécuter les lignes de code suivantes et le tour est joué :

# Download file with Spatial analyses
download.file("https://raw.githubusercontent.com/statnmap/blog_tips/master/2018-07-14-introduction-to-mapping-with-sf-and-co.R",
destfile = "test-spatial.R")
# Install missing dependencies 
# This may take some time. Packages will be built from source if not installed with Ubuntu binaries.
install.packages("attachment")
deps <- attachment::att_from_rscript("test-spatial.R")
attachment::install_if_missing(deps)
# Run the script
source("test-spatial.R")
# Show interactive outputs
m
tmap_leaflet(tm)
mapView(departements_L93)

Configurer un conteneur Docker avec la nouvelle version d’Ubuntu

Comme je n’ai qu’un seul ordinateur pour la production, je dois admettre que j’ai d’abord testé toutes les étapes dans un conteneur Docker. Puis j’ai mis à niveau mon propre ordinateur portable.
Je fais suffisamment confiance aux développeurs d’Ubuntu pour savoir que la mise à niveau de Focal à Jammy se fera sans problème. Je dois maintenant voir si je peux utiliser correctement R et les packages de données géographiques sur Jammy.

Je commence donc par une image brute avec Ubuntu Jammy dessus, et j’exécute le code à l’intérieur du conteneur depuis mon VSCode.

Dans un terminal

docker pull ubuntu:jammy
docker run --rm -it  ubuntu:jammy

Ensuite, j’ai testé toutes les lignes de commande de ce billet de blog.

Command lines in VSCode showing test of the R spatial installation on Ubuntu

Notez que vous pouvez aussi commencer à partir des images Rocker, comme l’image “rocker/rstudio” de DockerHub, qui contient un RStudio où vous pouvez tester votre configuration.
Cependant, la version actuelle est toujours focal et la version devel des images rocker utilise la dernière version d’Ubuntu, qui n’est plus Jammy, donc, je ne peux pas utiliser rocker pour tester R sur Jammy moi-même, mais vous pouvez tester les étapes d’installation pour la future version d’Ubuntu.

docker run -d -p 8787:8787 -e ROOT=TRUE -e DISABLE_AUTH=true rocker/rstudio:devel

Ici, j’ai utilisé les options suivantes :

  • -e ROOT=TRUE, pour que je puisse être root dans le Terminal et tester certaines étapes de l’installation avant de créer mon propre Dockerfile dérivé.
  • -e DISABLE_AUTH=true, pour que je n’aie pas à donner de mot de passe pour me connecter à la session du serveur RStudio et tester la session R
  • -p 8787:8787 pour pouvoir ouvrir le serveur RStudio sur le port 8787 sur mon propre ordinateur portable

A votre tour !

Si vous avez besoin d’aide pour votre installation de serveur R et déploiement de packages et d’applications Shiny ou pour un cours de manipulation des données géographiques avec R, vous pouvez contacter l’équipe ThinkR.


Comments


Also read