Comment réparer les dépendances de paquets R cassées après une mise à jour de libgfortran.so

0

[En pratique, cela devrait s’appliquer à toutes les distributions Lx, et "conceptuellement" à tous les systèmes Apple et M $.]

Mettre à jour R [base] sur votre système peut parfois casser certaines dépendances , selon les packages que vous avez installés et utilisés en appelant: library("package_name"). Cela m’est arrivé récemment après une mise à jour régulière de versions. Voici le message que j'ai reçu:

impossible de charger un objet partagé /home/USER/R/x86_64-pc-linux-gnu-library/3.5/leaps/libs/leaps.so:
libgfortran.so.4: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type

package_dep_install_error

J'ai vu pas mal de billets sur SE, Github et ailleurs avec des rapports similaires mais aucune solution (du moins pour moi).

  • Réinstaller R base ne fait aucun bien ou mal ou quoi que ce soit.
  • Une autre chose qui me vient à l’esprit est la rétrogradation et la suppression des derniers packages pour revenir à l’état de la version précédente. Pas satisfaisant et compliqué à maintenir pour les versions glissantes telles que Arch Lx.

Alors, comment résoudre ce problème à 19 heures, lorsque vous devez mettre R au travail "maintenant"?

Cbhihe
la source

Réponses:

0

1) $ find /usr/lib/ -name "libgfortran.*" Convainquez-vous que simplement composer le chaînon manquant libgfortran.so.4 -> libgfortran.so.5.0.0 ne aide pas du tout.
(Les informations sur la version cible "5.0.0" dans le lien symbolique varient en fonction des versions installées.)

2) Trouver exactement quelles dépendances sont brisées. Ceci est une fonction de vos paquets installés. (Remplacer /3.x dans le chemin ci-dessous, quelle que soit la version de R base tu utilises.)

$ ldd ~/R/x86_64-pc-linux-gnu-library/3.x/*/libs/*.so \
  | egrep '(so:$|not found)' > ~/R/x86_64-pc-linux-gnu-library/3.x/foobar

ldd affiche les dépendances des objets partagés. Toute ligne dans foobar précédant une ligne où "pas trouvé" montre fait référence à un paquet défectueux qui doit être supprimé et réinstallé.

3) Déplacez les dossiers des paquets cassés précédemment identifiés vers un dossier de sauvegarde de votre choix. Les packages Yr R sont normalement installés dans ~/R/x86_64-pc-linux-gnu-library/3.x/ par défaut sur lx. (Vous devez spécifier tout autre emplacement lors de l'installation ou globalement dans votre fichier de configuration.) À partir de la console R, réinstallez les packages supprimés:
> install.packages(c("pkg_name_1","pkg_name_2",...), depend=T)
Notez que pas (removing | moving) les paquets existants (cassés) de leur emplacement, et procéder à leur réinstallation ne réparera rien. Vous devez déplacer les dossiers des paquets cassés hors de leur emplacement, afin que R puisse reconstruire les dépendances.

4) Chargez les bibliothèques R d’intérêt et effectuez des tests ad hoc à partir de la console R avant de supprimer ~/R/x86_64-pc-linux-gnu-library/3.x/foobar.

HTH.

Cbhihe
la source