R est un langage de programmation qui ne nécessite aucune présentation. Je prends celle de Wikipedia pour laisser les choses simples :
"R est un langage de programmation et un logiciel libre destiné aux statistiques et à la science des données soutenu par la R Foundation for Statistical Computing. R fait partie de la liste des paquets GNU et est écrit en C (langage), Fortran et R.
GNU R est un logiciel libre distribué selon les termes de la licence GNU GPL et disponible sous GNU/Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X et Windows.
Le langage R est largement utilisé par les statisticiens, les data miners, data scientists pour le développement de logiciels statistiques et l'analyse des données.
En Janvier 2019, R est classé 12e dans l'index TIOBE qui mesure la popularité des langages de programmation"
Pour un langage de programmation classé 12ème, mes dernières 24 heures n'étaient pas vraiment le paradis. Un mélange de facteurs qui a fait que R en tant que plateforme peut devenir un enfer.
Prenons les faits :
"R est un langage de programmation et un logiciel libre destiné aux statistiques et à la science des données soutenu par la R Foundation for Statistical Computing. R fait partie de la liste des paquets GNU et est écrit en C (langage), Fortran et R.
GNU R est un logiciel libre distribué selon les termes de la licence GNU GPL et disponible sous GNU/Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X et Windows.
Le langage R est largement utilisé par les statisticiens, les data miners, data scientists pour le développement de logiciels statistiques et l'analyse des données.
En Janvier 2019, R est classé 12e dans l'index TIOBE qui mesure la popularité des langages de programmation"
Pour un langage de programmation classé 12ème, mes dernières 24 heures n'étaient pas vraiment le paradis. Un mélange de facteurs qui a fait que R en tant que plateforme peut devenir un enfer.
Prenons les faits :
- Je dois faire une Analyse factorielle des correspondances, ainsi, R me vient directement à l'esprit,
- Je commence par faire une recherche rapide et ça donne vite pleins de résultats, mais toujours en R (une recherche pour d'autres langages sur GitHub ne donne rien, aucun projet open source en Java n'est disponible),
- Je choisis un des premier (celui là), et il recommande l'installation de deux packages par une simple ligne de code :
install.packages(c("FactoMineR", "factoextra"))
- L'installation commence par désignait qu'il fallait installer environ 90 packages de dépendances, alors ça allait prendre du temps.
- Finalement, le processus se termine par des erreurs, il fallait lire le log pour voir ce qui ne marche pas :
- Premier problème : il fallait installer gfortran, c'est à dire un compilateur Fortran pour pouvoir compiler des packages,
- Deuxième problème : des packages pour gfortran, gcc (g++) sont aussi manquants,
- Troisième problème : des packages de R (lui-même) ne sont pas disponibles (?)
- La partie de gfortran était la plus simple : apt-get et le compilateur en question est téléchargé et installé,
- Le deuxième problème était un peu plus délicat, heureusement, il y avait des postes sur ce même problème (celui là, à titre d'exemple) et il fallait passer par une installation manuelle d'un ensemble de bibliothèques. Le problème est que le message d'erreur mentionnait une commande absente, il fallait trouver la bibliothèque qui le contenait ainsi ses dépendances. Il s'agissait de 4 bibliothèques :
- liblapack-dev
- liblapack3
- libopenblas-base
- libopenblas-dev
- Finalement des packages de R lui même sont manquants. J'ai relancé l'installation juste pour voir est ce que les éléments installés sont allégé un peu les erreurs. C'était le cas mais l'installation échoue toujours.
- A ce point, je laisse tomber tout et je me concentre exclusivement sur le processus d'installation, et il y avait deux constats :
- Le programme d'installation supprime les archives téléchargés si l'installation échoue, c'était la configuration par défaut. Il fallait les télécharger à nouveau pour chaque tentative.
- L'installation tente de faire une compilation complète des packages, c'était g++ entrain de créer des bibliothèque .so par des scripts make ? Pour tout les packages.
- Pour ce dernier point et pour récupérer les autres packages manquants, je me dirige vers les entrepôts officiels. A titre d'exemple celui de nlem. Et là, je constate qu'il y a pas de distribution binaire pour Linux. Je fais une petite recherche sur les autres packages et c'est la même chose. Seuls les packages de base (r-base-core, r-base et r-base-dev) sont disponibles.
- R propose aussi une commande pour installer des packages à partir de leurs URLs, alors c'était le moment de l'utiliser :
install.packages("http://exemple.com/package.tar.gz", repos=NULL)
- A ce stade j'obtient des message d'erreur sur la version de R, une mise à niveau était nécessaire.
- Je vérifie l'entrepôt officiel et il ne contient pas la dernière version, alors il était temps d'ajouter manuellement l'entrepôt de R et de le réinstaller. Malheureusement, c'est pas aussi simple que ça : si la dernière version n'est pas dans l'entrepôt officiel, c'est parce qu'elle dépend de quelques bibliothèques qui sont encore en phase instable (unstable).
- Etape suivante, j'ai téléchargé les codes sources des bibliothèques en question et j'ai procédé à leur compilation et installation, rien de plus simple :
make
sudo make install
- Mais non, l'une des trois nécessitait une commande (nasm) pour pouvoir être installée.
Ainsi, j'était entrain d'installer une bibliothèque pour pouvoir compiler et installer une bibliothèque pour pouvoir mettre à jour R pour pouvoir installer un package pour pouvoir installer un autre package pour pouvoir faire une AFC.
- Et je l'ai fait,
- Installation terminée de nasm, compilation et installation terminée des trois bibliothèques manquantes, mise à niveau de r-base, r-base-core et r-base-dev (bref, de R) terminée avec succès,
- Je tente de le lancer pour pouvoir installer les deux autres niveaux de dépendances et là R ne fonctionne plus :
/usr/lib/R/bin/exec/R: symbol lookup error: /usr/lib/libreadline.so.7: undefined symbol: UP
- L'erreur est reportée sur plusieurs repo GitHub comme un bug à revoir avec un certain ordre de priorité de chaîne.
- Résultat final : R ne fonctionne plus.
Pour moi, je ne vais plus investir du temps avec R, je vais me baser sur Apache Commons Math pour écrire un bout de code pour faire mon AFC.




