Come uso gemme con Ubuntu?

Recentemente ho aggiornato a Ubuntu 9.04 e ho problemi con gemme. Ho installato Ruby, Rubygems e Rails usando apt-get. Il comando rails funziona.

Ho quindi installato capistrano e altre gemme, come heroku. Per fare ciò, ho usato il comando:

 sudo gem install XXX 

Quando voglio usare il comando cap non funziona:

 bash: cap: command not found 

È lo stesso con gli altri comandi gem.

Ho qualcosa di particolare da fare in modo che i comandi gem siano funzionanti?

Dove sono le mie gemme?

Puoi trovare dove sono memorizzate le tue gemme usando il comando gem environment . Per esempio:

 [email protected]:~$ gem environment RubyGems Environment: - RUBYGEMS VERSION: 1.3.2 - RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux] - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8 - RUBY EXECUTABLE: /usr/bin/ruby1.8 - EXECUTABLE DIRECTORY: /usr/bin - RUBYGEMS PLATFORMS: - ruby - x86-linux - GEM PATHS: - /usr/lib/ruby/gems/1.8 - /home/chris/.gem/ruby/1.8 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - REMOTE SOURCES: 

Se osservate la sezione “GEM PATHS:” potete vedere che le gemme possono essere memorizzate in due punti del mio laptop: /usr/lib/ruby/gems/1.8 o nella directory .gem nella mia directory home.

Puoi anche vedere che gli eseguibili sono memorizzati in DIRECTORY ESEGUIBILE che in questo caso è /usr/bin .

Poiché /usr/bin è nel mio percorso, questo mi consente di eseguire cap , merb , rails ecc.

Aggiornamento del PERCORSO

Se per qualche ragione il tuo DIRECTORY ESECUTIVO non è sul tuo percorso (per esempio se è /var/lib/gems/1.8/bin) allora devi aggiornare la tua variabile PATH.

Supponendo che stai usando la shell bash. Puoi farlo velocemente per la sessione corrente digitando quanto segue al prompt della shell; facciamo finta di voler aggiungere /var/lib/gems/1.8/bin al percorso:

 export PATH=$PATH:/var/lib/gems/1.8/bin 

e premere Invio. Che aggiunge la nuova directory alla fine del percorso corrente. Nota i due punti tra $PATH e /var/lib/gems/1.8/bin

Per impostare il valore per tutte le sessioni è necessario modificare il file .profile o .bashrc e aggiungere la stessa riga alla fine del file. Di solito modifico il mio file .bashrc senza altre ragioni oltre a quello che ho sempre fatto. Al termine, salva il file e poi aggiorna il tuo ambiente digitando:

 bash 

al prompt della shell. Ciò causerà la rilettura di .bashrc .

In qualsiasi momento è ansible controllare il valore corrente di $PATH digitando

 echo $PATH 

al prompt della shell.

Ecco un esempio da uno dei miei server, dove il mio nome utente è “chris” e il nome della macchina è “chris-laptop”:

 [email protected]:~$ [email protected]:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games [email protected]:~$ [email protected]:~$ export PATH=$PATH:/var/lib/gems/1.8/bin [email protected]:~$ [email protected]:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin [email protected]:~$ 

La mia gem non verrà caricata!

“Le gemme di Ruby non vengono caricate anche se installate ” evidenzia un problema comune che utilizza più versioni di Ruby; A volte l’ambiente Gem e il percorso Gem non sono sincronizzati:

 rb(main):003:0> Gem.path => ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"] irb(main):004:0> exit 

Qualsiasi processo di Ruby qui sta cercando solo in un posto per le sue gemme.

 :~/$ gem env RubyGems Environment: - RUBYGEMS VERSION: 1.3.7 - RUBY VERSION: 1.9.1 (2009-05-12 patchlevel 129) [x86_64-linux] - INSTALLATION DIRECTORY: /opt/ruby1.9/lib/ruby/gems/1.9.1 - RUBY EXECUTABLE: /opt/ruby1.9/bin/ruby1.9 - EXECUTABLE DIRECTORY: /opt/ruby1.9/bin - RUBYGEMS PLATFORMS: - ruby - x86_64-linux - GEM PATHS: - /opt/ruby1.9/lib/ruby/gems/1.9.1 - /home/mark/.gem/ruby/1.9.1 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - REMOTE SOURCES: - http://rubygems.org/ 

Guarda attentamente l’output dell’ambiente gem:

  - GEM PATHS: - /opt/ruby1.9/lib/ruby/gems/1.9.1 

Questo non è lo stesso percorso restituito da Gem.path:

 ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"] 

È difficile dire cosa abbia causato la lib/ruby1.9 lib/ruby in lib/ruby1.9 ma molto probabilmente lo sviluppatore stava lavorando con più versioni di Ruby. Un quick mv o ln risolverà il problema.

Se hai bisogno di lavorare con più versioni di Ruby, dovresti davvero usare rvm .

Come notato da @Chris è necessario aggiungere l’ambiente gems al tuo percorso. Puoi farlo da:

 echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc 

La cartella in cui sono memorizzate le gemme deve essere sul PATH, ad esempio il mio è:

/home/victor/.gem/ruby/1.8/bin

Controlla il tuo percorso digitando

 echo $PATH 

Vede che durante l’installazione di rubygems, ora in Ubuntu 9.04, ho questo problema. Ho notato che in “ambiente gem” la directory eseguibile è “/var/lib/gems/1.8/bin”, invece di “/ usr / bin” … Questo è un problema con rubygems o con ubuntu 9.04 ??

La soluzione che ho riscontrato è di aggiungere “/var/lib/gems/1.8/bin” al mio $ PATH facendo questo: export PATH = $ PATH: /var/lib/gems/1.8/bin Ma non viene salvato … come posso salvare il mio percorso?

Grazie…

Resolvi: coloquei o export PATH = $ PATH: /var/lib/gems/1.8/bin no ~ / .bashrc! =]

mkmf fa parte del pacchetto ruby ​​1..9.1-dev. Questo pacchetto contiene i file di intestazione necessari per le librerie di estensioni per Ruby 1.9.1. Devi installare il pacchetto ruby1.9.1-dev facendo:

sudo apt-get install ruby1.9.1-dev