2013-05-29 18 views
14

Sto costruendo un setup vagabondo, e una parte di questo è l'installazione di rbenv. Sto usando il bibliotecario-chef per gestire tutti i miei libri di cucina, e installa rbenv e ruby-build.Dovrebbe essere installato rbenv a livello di sistema o a livello di utente?

Tuttavia, quando ho provato a ssh nel mio VM Vagrant e digitare ruby -v ho ottenuto il sistema standard installato ruby 1.8.7 (2012-02-08 patchlevel 358) [x86_64-linux]. Pensando che forse rbenv non è stato installato, ho provato a fare funzionare rbenv versions, ma rbenv era infatti installato:

[email protected]:~$ rbenv versions 
* system (set by /opt/rbenv/version) 

Allora ho provato rbenv install [version]:

[email protected]:~$ rbenv install 1.9.3-p327 
[...] 

BUILD FAILED 
[...] 

test -z "/opt/rbenv/versions/1.9.3-p327/include" || /bin/mkdir -p "/opt/rbenv/versions/1.9.3-p327/include" 
/bin/mkdir: cannot create directory `/opt/rbenv/versions/1.9.3-p327': Permission denied 

che non è riuscita con Permission denied. Ho provato a installare di nuovo con sudo:

sudo rbenv install 1.9.3-p327 

E che ha funzionato. Poi ho provato a fare funzionare rbenv versions ancora:

[email protected]:~$ rbenv versions 
* system (set by /opt/rbenv/version) 

ma ancora dice solo system rubino è installato. Tuttavia, se l'eseguo con sudo:

[email protected]:~$ sudo rbenv versions 
* system (set by /home/vagrant/.rbenv/version) 
    1.9.3-p327 

rbenv versions ora mostra 1.9.3 è stato installato.

Quindi sembra esserci una disconnessione, nel senso che rbenv e la mia versione ruby ​​sono ora installate a livello di sistema e non a livello di utente.

Sto usando il rbenv-cookbook. Mi piacerebbe avere rbenv impostato con lo chef, perché questo mi impedisce di configurarlo manualmente, dopo l'installazione.

L'altro problema che sto avendo è che sembra che tutto ciò che è controllato da ruby, come ad esempio gem, subisca anche la stessa disconnessione.

[email protected]:~$ gem install bundler 
Fetching: bundler-1.3.5.gem (100%) 
ERROR: While executing gem ... (Gem::FilePermissionError) 
    You don't have write permissions into the /opt/vagrant_ruby/lib/ruby/gems/1.8 directory. 

risposta

14

Circa due anni fa, un discussion happened in github sulle installazioni condivise, che sembra rispondere alla domanda.

Sinossi: sstephenson (rbenv autore) specificamente non piace incoraggiare installazioni a livello di sistema a causa della complessità con i permessi, l'accesso in scrittura, ecc Egli ritiene che l'aggiunta di un robusto supporto renderebbe rbenv più complessa, e la semplicità è l'obiettivo .

EDIT

Da allora ho incontrato libro di cucina lo chef-rbenv di fnichol, che, se effettivamente desidera installare un rbenv a livello di sistema, dà un right and proper method, ed è possibile automatizzare con Chef (I consiglia il coltello da solo).

Si installa su /etc/profile.d/ in modo che venga eseguito per tutti gli utenti, .

+0

Il collegamento "metodo corretto e corretto" è interrotto. – Volte

1

Tutto in Readme di rbenv è assumere un'installazione locale (per utente) in ~/.rbenv/ quindi presumo che la raccomandazione ufficiale è quello di installarlo su un singolo utente.

Ancora, è possibile installarlo globalmente. Ma avrai bisogno di sudo per tutti i comandi che necessitano di diritti di scrittura. Installare nuovi rubini, installare gemme * e cambiare la versione globale del rubino sono quelli che mi vengono in mente qui, potrebbe essercene di più.

(*) Avendo bisogno di sudo per l'installazione di nuove gemme è l'impostazione predefinita quando si installa il rubino attraverso le routine di sistema di default come apt su Debian, non avendo bisogno di sudo per in realtà è un effetto collaterale positivo di utilizzare rubino manager versione che lavorano su una base per utente

+0

Questo articolo ha le istruzioni: http://blakewilliams.me/blog/4-system-wide-rbenv-install Cambia anche il gruppo nello staff e fornisce permessi di gruppo + imposta il bit sticky, quindi dovresti essere in grado di installare e utilizzare rubini da qualsiasi utente. Non sono sicuro che sia comunque consigliato e non so perché o perché no. – Duke

13

rbenv deve essere installato a livello di utente.

Sfortunatamente, questo significa che quando si esegue gem install, si può incorrere nel problema che avete visto:

You don't have write permissions into the {...} directory 

È possibile risolvere questo problema impostando le autorizzazioni corrette sulla directory ~/.rbenv.

sudo chown -R yourusername ~/.rbenv 

Dopo chown ing directory, sarete in grado di eseguire senza gem installsudo.

+0

Grazie mille! – thomallen

Problemi correlati