2010-08-12 9 views
27

Sono nuovo sia per Ruby che per Mac OSX, anche se ho una discreta esperienza con i comandi Unix. Ho appena installato Ruby 1.9 tramite un comando MacPorts (port install ruby19). Poi ho dovuto fare una ricerca da root per capire dove era andata, che risultò essere: /opt/local/var/macports/software/ruby19/1.9.1-p376_0/opt/local/bin/ruby1. 9.Ruby su Mac OSX tramite porte Mac

L'attuale versione di Ruby (1.8.6) viene eseguita tramite/usr/bin/ruby, che è un collegamento simbolico a /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby dove Current è un collegamento simbolico a una directory chiamata 1.8.

Mi piacerebbe rendere Ruby 1.9 il mio predefinito (insieme agli strumenti correlati come irb), e mentre riesco a farlo, mi piacerebbe sapere se c'è un modo convenzionale. Dovrei copiare o collegare il percorso MacPorts a /System/Library/Frameworks/Ruby.framework/Versions/1.9 e quindi puntare Current a 1.9? (Avrei anche rinominato o copiato gli eseguibili: rubino1.9 in rubino, irb1.9 in irb, ecc.) Oppure dovrei semplicemente soffiare via il link/usr/bin/ruby ​​(e/usr/bin/irb, ecc.) e crearne di nuovi che puntano alla versione MacPorts?

+1

Si dovrebbe * non * rimuovere (o toccare, francamente) il sistema Ruby (o Perl o Python). Lascia che sia esattamente così com'è. Il sistema si aspetta che sia lì, e non hai modo di sapere in anticipo quante (o quali) cose dipendono da questo. In questo caso, 'rvm' è uno strumento eccellente per gestire più interpreti Ruby, ma c'è * sempre * una risposta migliore di" rimuovere l'impostazione predefinita ". – Telemachus

+0

Tutti i suggerimenti di rvm sono un buon esempio di Straw Men. Nello specifico, vuoi un rubino di sistema, un rubino ovunque. Vuoi/opt/local/bin/ruby ​​essere rubino1.9. Ora, unix fornisce la variabile $ PATH per questo,/usr/bin/$ {i binari ruby} non saranno cercati se si presume che tu abbia impostato correttamente il tuo percorso, che a quanto pare. RVM è un ottimo strumento, a meno che tu non voglia usare il rubino ogni giorno per impostazione predefinita. – chiggsy

+1

installazione porte ruby19 + nosuffix, btw;) – chiggsy

risposta

23

Il mio consiglio:

$ port uninstall ruby1.9 

Poi seguono questo: https://rvm.io/rvm/install/

Poi:

$ rvm install 1.9.2 
$ rvm --default 1.9.2 

Si potrebbe anche rvm install macruby giocare con cacao.

+0

+1 qui, e checkout homebrew per altri pacchetti di gestione http://github.com/mxcl/homebrew –

+0

Grazie! Rvm sembra un po 'impegnativo, ma probabilmente vale la pena. –

+1

rvm ha un sacco di opzioni, ma per cominciare, si può ottenere solo con questi tre: 'rvm install' per ottenere un nuovo rubino,' rvm dell'uso al di passare le versioni, e di tanto in tanto 'rvm update' per ottenere le nuove cose Tutto il resto che puoi imparare a tuo piacimento, quando ne hai bisogno (ad esempio, test multiversion). – Amadan

4

Vorrei altamente consiglia RVM. Ci vuole un po 'di lettura, ma una volta installato è possibile installare un rubino con rvm install 1.9 (o jruby, ree, 1.8, ecc.) E passare da uno all'altro con rvm 1.9. Ogni versione in rubino avrà anche un proprio set di rubini completamente isolato.

26

Installare la variante nosuffix invece:

sudo port install ruby19 +nosuffix 

La versione più recente rubino dovrebbe avere la precedenza su quello preinstallato.

+2

Grazie, è molto utile. Non ho visto questa opzione. –

2

Il binario ruby1.9 deve essere installato in /opt/local/bin; se non lo è, potresti non aver attivato la porta.

Il modo più semplice per rendere Ruby 1.9 la radice predefinita è creare un alias per ruby in ruby1.9. Se stai usando Bash, è possibile farlo mettendo questo nel file di configurazione di Bash:

alias ruby='/opt/local/bin/ruby1.9' 
+0

Grazie per averlo indicato. Ho /opt/local/bin/ruby1.9. Probabilmente lo abiliterò con un link simbolico piuttosto che un alias, ma in entrambi i casi funzionerebbe. –

+0

Probabilmente non è abbastanza. Dovresti collegare, gem, rdoc e una serie di file che vengono con ruby1.9. La soluzione migliore per mantenere pulito il tuo sistema sta utilizzando RVM. Il rubino di sistema o anche macbook può essere utilizzato per la compilazione, cioè con il supporto di rubino. –

16

Nella ultima versione di MacPorts (2.1.3 o superiore) è possibile utilizzare il comando port select.

port select --list ruby 
sudo port select --set ruby ruby19 

Per le versioni precedenti di macport è possibile creare un collegamento simbolico alla versione in rubino numerata. Questo è il modo in cui Macports gestisce generalmente il passaggio tra diverse versioni di pacchetti.

28

È possibile utilizzare facilmente il comando port select, in MacPorts 2.1.3

$sudo port select --set ruby ruby19 
+4

Questo è apparentemente il modo "corretto" per MacPorts di farlo ora invece di '+ nosuffix' – beporter

+0

Sì, funziona anche con ruby20! – TCSGrad

2

Disinstallare rubino versione 1.8:
sudo port disinstallazione rubino
installare Ruby versione 1.9:
sudo port install ruby19
Riaprire terminale

+0

Non sono sicuro che sia necessario riaprire il terminale. –