Come aggiornare rubygems


206

Ho bisogno di aggiornare le gemme a 1.8. Ho provato a installare i rispettivi pacchetti debian ma sembra che non venga aggiornato

anujm@test:~$ dpkg -l |grep -i rubygem
ii  rubygems                               1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
ii  rubygems-lwes                          0.8.2-1323277262                                LWES rubygems
ii  rubygems1.8                            1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
ii  rubygems1.9                            1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
anujm@test:~$ 


anujm@test:~$ gem
gem     gem1.8  gem1.9  
anujm@test:~$ sudo gem1.8 install serve
ERROR:  Error installing serve:
        multi_json requires RubyGems version >= 1.3.6
anujm@test:~$

2
Giusto per chiarire, la tua domanda è su come aggiornare Rubygems stesso, non qualsiasi gemma particolare gestita da rubygems.
Michael,

Risposte:


471

Installa rubygems-update

gem install rubygems-update
update_rubygems
gem update --system

esegui questi comandi come root o usa sudo.


1
Ricevo questa eccezione quando seguo il gem update suggerimento ue - il sistema è disabilitato su Debian. RubyGems può essere aggiornato usando i repository Debian ufficiali per aptitude o apt-get.
Anuj,

3
Qui a causa di problemi con unicode gem ( github.com/blackwinter/unicode/issues/5 ): dopo aver eseguito la soluzione di risposta ho dovuto eseguire quello gem pristine unicodeche ha ricostruito la gemma e l'ha resa utilizzabile.
reallynice

1
Grazie, mi ha aiutato a installare minitestsu una partizione NFS cfr. github.com/rubygems/rubygems/issues/1161
Oncle Tom

12
rubygems-updateè installato per impostazione predefinita. Quindi, è solo questione di correre gem update --system.
dskecse,

2
Di solito non vorrai mai eseguire questo comando come sudo. Ciò aggiornerà il sistema ruby. Considera di utilizzare rvmorbenv
Hendrik il

54

Puoi aggiornare tutte le gemme semplicemente eseguendo:

sudo gem update


44
Questa è una risposta alla ricerca di una domanda.
Michael,

1
senza sudose hai installato gemme come utente normale (l'installazione di gemme come root non è comunque molto piacevole).
Akostadinov,

4
La domanda non è "Come posso aggiornare tutte le gemme?" ma piuttosto "Come aggiorno RubyGems sul mio computer?"
aceofbassgreg il

19

O:

gem update `gem outdated | cut -d ' ' -f 1`

#brillante Grazie per questo. Ho solo aggiunto --forceper evitare che l'automazione si fermasse per la conferma di sovrascrittura
SaxDaddy,

non risponde alla domanda
agbodike

Rispettivamente con errori shellcheck fisso: gem update "$(gem outdated | cut -d ' ' -f 1)";.
BernhardWebstudio,

11

Puoi aggiornare gem a qualsiasi versione specifica come questa,

gem update --system 'version'

gem update --system '2.3.0'

1
il tuo comando non funziona sulla distribuzione basata sull'aggiornamento gem debian --system "2.1.0" ERRORE: Durante l'esecuzione gem gem ... (RuntimeError) gem update - il sistema è disabilitato su Debian, perché sovrascriverà il contenuto del rubygems pacchetto Debian e potrebbe rompere il tuo sistema Debian in modi sottili. Il modo supportato da Debian per aggiornare rubygems è tramite apt-get, usando i repository ufficiali Debian. Se sai davvero cosa stai facendo, puoi comunque aggiornare rubygems impostando la variabile d'ambiente REALLY_GEM_UPDATE_SYSTEM, ma ricorda che questo non è completamente supportato da Debian.
Jeff


5

Ho trovato altre risposte inaccurate / obsolete. La cosa migliore è fare riferimento alla documentazione effettiva .

Versione breve: nella maggior parte dei casi gem update --system sarà sufficiente.

Non dovresti usare ciecamente sudo. In effetti, se non ti viene richiesto di farlo, molto probabilmente non dovresti usarlo.


4

Per me è bastato semplicemente correre

gem update

5
Questo serve per aggiornare le tue gemme, non il software rubygems stesso.
Peter H. Boling,

1
È vero, ma questo è il primo risultato di Google per ricerche come "aggiorna la versione gemma", quindi sono contento che questa risposta sia qui.
ncrypticus,

-1

Per aggiornare solo un gioiello (e le sue dipendenze), fai:

    bundle update gem-name

Ma per aggiornare solo la gemma da sola (senza aggiornare le sue dipendenze), fallo

    bundle update --source gem-name

1
Questo serve per aggiornare gemme specifiche, non lo stesso software rubygems.
thisismydesign

1
@thisismydesign Penso di aver specificato che questo aggiornerà solo un gioiello specifico?
Ruto Collins,

Sì, ma non è questo il problema.
thisismydesign

1
Vedo. Ma so che questo aiuterà qualcuno come me che è arrivato prima qui :)
Ruto Collins il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.