2010-05-25 11 views
35

Vorrei creare un repository di pacchetti R locale in modo tale che gli utenti della mia azienda possano installare pacchetti da esso e gli amministratori di sistema possano aggiornare periodicamente il repository locale. L'accesso agli specchi CRAN è attualmente negato.Creazione di un repository di pacchetti R locale

C'è un modo semplice per farlo?

Grazie per il vostro tempo.

EDIT: Mi scuso per la supervisione. La guida è dove avrei dovuto guardare prima. Grazie.

risposta

36

Sì, una semplice copia di CRAN o un repository con pacchetti locali è facile da configurare. Presumibilmente si desidera che questo per Windows in modo da fare questo:

  1. Creare una directory di livello superiore sul vostro server web, dite R/
  2. Creare la gerarchia usuale in là: R/bin/windows/contrib/2.11. Se è necessario supportare altre versioni (precedenti), creare semplicemente le directory 2.10, 2.9, ... accanto alla directory 2.11.
  3. Posizionare i pacchetti necessari nella directory (ad esempio, 2.11), poi cambiare in quella directory ed eseguire il seguente comando per generare PACKAGES e PACKAGES.gz file per il repository:

    tools::write_PACKAGES(".", type="win.binary")

Questo è tutto quello che c'è da fare - ora puoi accedere al repository puntando all'indirizzo dato un comando come

update.packages(repos="http://my.local.server/R", ask=FALSE) 

che faccio anche in R/zzz.R per i pacchetti locali in modo che si aggiornino da soli.

Modifica circa cinque + anni dopo: E il pacchetto drat ora automatizza un sacco di questo, e brilla in particolare se si utilizza anche GitHub per servire il repository su HTTP/HTTPS (ma è utile per altri o locale di hosting troppo) .

+0

L'aggiornamento automatico sembra molto comodo, ma non capisco dove inserire il comando di aggiornamento. Ho giocato con 'zzz.R' e' .onLoad' ma non riesco a far passare il comando 'R CMD ...'. In un certo senso, sembra un po 'strano aggiornare ciò che stai attualmente caricando. – Backlin

+0

Il comando di aggiornamento può essere digitato in R da chiunque possa accedere al repository. –

+4

Oltre ai commenti di Dirk, se si ottiene che gli utenti del pacchetto modifichino i loro file 'Rprofile.site' (che vengono eseguiti all'avvio di ogni sessione R) per includere qualcosa come' options (repos = c (getOption ("repos"), MyCompanyRepo = "http: //my.local.server/R")) ', allora i tuoi utenti possono fare cose come' install.packages ("mypackage") 'senza bisogno di puntare a un percorso. –

2

Il pacchetto miniCRAN offre anche una grande funzionalità per questo. Il vantaggio principale è che non hai bisogno di un mirror completo, ma puoi configurare un mirror "mini" di CRAN con solo le distribuzioni dei pacchetti di cui hai bisogno, incluse le loro dipendenze.

Problemi correlati