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?
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.
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.
Similaire à @Jonathan Le, mais meilleur pour l'utilisation du script:
Sudo R --Vanilla -e 'install.packages("forecast", repos="http://cran.us.r-project.org")'
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