2010-04-21 19 views
5

Ho una macchina che esegue Ubuntu Hardy, che fornisce il proprio pacchetto RubyGems. Sfortunatamente quella versione di RubyGems (1.1.1) è troppo vecchia per fare qualcosa di utile, quindi ho deciso di aggiornare manualmente RubyGems alla versione corrente (1.3.6). Quella parte è andata liscia, e se faccio gem -v, ottengo 1.3.6 che è previsto. Il problema è quando provo a fare: sudo gem install rack, restituisce questo errore:Errori di installazione di RubyGems sia quando si utilizza 'sudo' che non si utilizza sudo

ERROR: While executing gem ... (Errno::EACCES) 
Permission denied - /home/username/.gem 

Di solito quando installo gemme come root, si sa per installarlo in /usr/lib/ruby/gems, quindi perché è controllando mia home directory a tutti? Un altro aspetto fastidioso è quando faccio gem install rack (non come root), si dice:

ERROR: While executing gem ... (Gem::FilePermissionError) 
You don't have write permissions into the /usr/lib/ruby/gems/1.8 directory. 

che è dove voglio andare. Ho già provato a cancellare source_caches, provando diverse versioni di RubyGems (1.3.5), forzando l'installazione in /usr/lib con -i senza alcun risultato. Qualche idea sul perché RubyGems è così insistente nel controllare la mia directory /home quando si installa come root?

risposta

2

Sembra che potrebbe trattarsi di un problema di percorso associato all'installazione di più versioni.

eventuale differenza in uscita tra:

sudo gem env 

e

gem env 
+0

Nessuna differenza tra i due, sebbene nella sezione GEM PATHS: '/ usr/lib/ruby ​​/ gems/1.8' e'/home/username/.gem/ruby ​​/ 1.8'. Non dovrebbe non essere lì di default con sudo? –

+0

Sono uguali sul mio sistema, ma solo dopo che sono passato e ho "ripulito" tutto dopo aver ricompilato 1.9. Cose che ho controllato: 1. Eliminato il comando gem non usato (ne aveva uno in/usr/bin e/usr/local/bin 2. Ho controllato il mio file ~/.gemrc e ho ripulito il percorso fino a puntare alla mia gemma percorso in/usr/local/lib. Utilizzata la mia cartella ~/.gem come backup 3. Corrispondenza delle variabili di ambiente GEM_HOME e GEM_PATH su (in .profile/.bash_profile/.bashrc) con il file .gemrc 4.Permessi controllati sulle cartelle gemma 5. Puoi anche controllare se hai qualcosa in/etc/gemrc – SundayEdition

+0

Così ho esaminato questi suggerimenti e sembrano tutti dare un'occhiata: 1) solo un eseguibile gem in/usr/bin , 2) no .gemrc, 3) Non ho mai impostato queste variabili nel mio file .profile, 4) le cartelle gem avevano i permessi per root, che sudo dovrebbe andare bene, 5) no/etc/gemrc. L'unico altro intoppo è forse il fatto che la mia home directory risieda su AFS avvita le cose? –

-3

Woulda stato così facile su (password) poi chmod 755 /usr/lib/ruby/gems/1.8

+1

È più sicuro installare gemme in homedir o in/usr/local/.... Non rovinare i file installati sul sistema e non rendere le cartelle della libreria scrivibili per ogni utente. Si ritorcerà contro. – Munhitsu

0

stavo correndo lo stesso problema io stesso su Fedora 15, così mi sono imbattuto 'gioiello installa 'con l'opzione' --backtrace 'per vedere cosa stava succedendo.

Si è verificato un errore in /usr/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:203 in cui si è tentato di chdir nella directory precedentemente memorizzata (la directory home dell'utente che ero in esecuzione sudo)

Non ho eseguito il debug estensivo per vedere quale fosse la causa sottostante, piuttosto ho usato una soluzione rapida per continuare a procedere. Per risolvere il problema, è sufficiente effettuare il cd nella directory root, ad esempio cd/, prima di eseguire il comando gem installazione.

Spero che questo aiuti/risolvi il problema.

Problemi correlati