Come installare 2 differenti versioni R su Debian?
-
27-10-2019 - |
Domanda
Il nostro server, R 2.12.1 viene installato seguendo le istruzioni su http: //cran.r- project.org/bin/linux/debian/ , utilizzando apt-get install
ecc ecc.
A causa di circostanze la vecchia macchina lenny non è stato aggiornato per il nuovo debian stabile, e sembra che questo non sta per accadere presto. Come alcune delle ricerche qui dipende l'ultima versione di VGAM, abbiamo bisogno del R 2.14.0 installato su debian. Ma al fine di mantenere il vecchio codice in esecuzione, non possiamo solo cadere il R 2.12.1 (installando il VGAM 0.8.4 su questa versione dà errori).
Quindi abbiamo bisogno di installare 2 R versioni. Da quel poco ho capito, se usiamo apt-get upgrade
la vecchia versione sarà sostituito dal nuovo. Vado attraverso cumuli di documentazione, ma non riesco a trovare il modo ottimale di farlo.
L'unica cosa che potevo immaginare ora, è quello di cercare di costruire l'ultima R dalla sorgente, ma i miei colleghi non erano molto appassionato di questa idea e mi ha spinto a primo sguardo per un'altra soluzione. Qualsiasi informazioni che ho perso, o è qualcuno disposto a farmi vedere il piccolo trucco per ottenere questo fatto? Se la costruzione dalla sorgente è la soluzione, mi piacerebbe conoscere le insidie ??o possibili problemi.
Soluzione
Come ho già detto nei commenti, questo è teoricamente possibile, proprio come alcune famiglie del pacchetto (Emacs, PostgreSQL, ...) consentono più versioni simultanee.
Non posso offrire che in questo momento, come si usa /usr/{share,lib}/R
cui i conflitti. Se dovessi fare che /usr/{share,lib}/R-$version
e quindi utilizzare dpkg-alternatives
a flip per un default preferito uno, potremmo forse farlo. Il problema è la transizione. Questa funzione viene utilizzata da una minoranza di utenti, di arrivare a esso può introdurre bug per la maggior parte til questo è stabile. Inoltre, non ho tempo libero (ma se qualcun altro vuole farlo, si prega di farlo).
Nel frattempo, puoi
-
eventualmente utilizzare una funzione avanzata di
dpkg
e decompresso in una cartella locale piuttosto il valore di default di sotto/
- così/opt/R/oldversions/2.12.1
dovrebbe essere possibile. R potrebbe anche funzionare, è necessario ridefinire$RHOME
di conseguenza. -
solo costruire varianti locali in
/usr/local
se davvero deve -
Se un particolare CRAN / reclami pacchetto non CRAN a bisogno di una particolare versione di R, fissare il pacchetto maledetto già! ; -)
Infine, questo è un argomento per r-sig-debian
come ad esempio il manutentore CRAN Michael e Johannes non leggere questo thread qui.
Altri suggerimenti
È possibile installare diverse versioni di qualsiasi software utilizzando flag di compilazione corretta. Quando si esegue lo script di configurazione con --help si dovrebbe vedere la possibilità di vedere l'installazione radice.
Date un'occhiata a
./configure --help
...
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]
in modo è possibile installare R-2.14 a:
/usr/local/R/2.14
ed è possibile installare R-2.12 a:
/usr/local/R/2.12
quando si avvia lo script di configurazione fare:
./configure --prefix=/usr/local/R/2.14
e così via.
Credo che se non v'è alcuna repo debian che fornisce più versioni, è difficile mantenere due versioni di R intoppi senza compilare R dalla sorgente.
Quello che faccio spesso è installare R nella mia home directory come il nostro istituto non ci dà i privilegi di root. Per installare una versione fonte di R systemwide, è possibile installare questo in una directory separata (ad esempio /opt/R2.14) ed impiego:
./configure --prefix=/opt/R2.14/
Il passo finale è quello di creare un collegamento simbolico al binario R:
ln -s /opt/R2.14/bin/R /usr/bin/R2.14
Gli utenti possono iniziare di due versioni di R (R e R2.14). Spero che questo aiuti!
E 'vero che la costruzione di R dalla sorgente è molto molto facile (anche io posso farlo!), Fino a quando si conosce il seguente comando per eseguire prima:
apt-get build-dep r-base
altrimenti si potrebbe ottenere manca errori di tipo libreria da make
. Grazie a Dirk distacco quella gemma in passato. Non ho visto che nel manuale, README o FAQ.
Quindi, è solo:
./configure
make
Suppongo che questo potrebbe essere una considerazione per voi allora: does librerie uso R statiche o dinamiche di sistema? Si potrebbe prevedere un collegamento R auto-costruito di diverse librerie rispetto al pre-confezionati binario R? (Non lo so). Quanto si entra in questo dipende dalla critica l'applicazione di R è immagino e che le librerie di sistema sono fondamentali per voi.