web-dev-qa-db-fra.com

Comment installer les dépendances lors de l'utilisation de "R CMD INSTALL" pour installer les packages R?

Je développe mon premier package R (en utilisant R 2.13, Ubuntu 10.10). Appelons-le foo et disons que le code dans le répertoire R/commence par la ligne bibliothèque (bar), où bar est un existant package, en CRAN, dont foo dépend. Mon fichier DESCRIPTION contient la ligne:

Depends: bar

Lorsque le package foo est prêt pour les tests, je l'installe localement en utilisant:

R CMD INSTALL foo_1.0.tar.gz

Cependant, si bar n'est pas installé, je vois:

ERROR: dependency ‘bar’ is not available for package ‘foo’

Évidemment, si mon foo était installé à partir de CRAN en utilisant install.packages (), bar serait installé en même temps. Donc ma question est: comment puis-je m'assurer que le package CRAN bar est installé, si nécessaire, lorsque j'installe mon package foo à l'aide de R CMD INSTALL? Est-ce un travail pour un script de configuration?

41
neilfws

En fait, en relisant le guide des extensions R, cela ne dit pas que R CMD INSTALL obtiendra les dépendances de CRAN. La méthode install.packages () de R fera cela, mais à première vue je ne pense pas que R CMD INSTALL le fasse.

Vous pouvez utiliser install.packages pour installer à partir d'un fichier .tar.gz, mais vous devez définir repos = NULL, puis cela s'applique:

 dependencies: logical indicating to also install uninstalled packages
          on which these packages depend/suggest/import (and so on
          recursively).  Not used if repos = NULL.

Je soupçonne que la chose à faire est d'extraire les dépendances du fichier DESCRIPTION, puis d'exécuter R et de faire un install.packages () sur ceux-ci lorsque vous testez votre build dans un environnement propre.

17
Spacedman

J'ai fini par utiliser un document bash ici et en spécifiant le miroir cloud pour trouver les dépendances:

Sudo R --Vanilla <<EOF
install.packages('forecast', repos='http://cran.us.r-project.org')
q()
EOF

le package R est "prévisionnel", le miroir cloud que j'ai utilisé était http://cran.us.r-project.org . Si vous souhaitez utiliser un miroir différent, les voici tous: https://cran.r-project.org/mirrors.html

Ce qui précède a fonctionné pour moi en obtenant des packages R dans un AWS EMR bootstrap Script Shell.

6
Jonathan Le

Similaire à @Jonathan Le, mais meilleur pour l'utilisation du script:

Sudo R --Vanilla -e 'install.packages("forecast", repos="http://cran.us.r-project.org")'
2
Romain Rossi

Le mécanisme consiste à ajouter une entrée dans le champ depends de votre fichier DESCRIPTION.

Depends: bar

Cela chargera la bibliothèque bar si elle est déjà installée, sinon elle sera installée à partir de CRAN.

Ceci est décrit dans la section 1.1.1 du Writing R extensions manuel: http://cran.r-project.org/doc/manuals/R-exts.html#The-DESCRIPTION-file

0
Andrie