Comment mettre à jour rubygems

206

J'ai besoin de mettre à niveau Gems vers la version 1.8 J'ai essayé d'installer les paquets Debian respectifs mais il semble que sa mise à niveau ne soit pas améliorée

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:~$
Anuj
la source
2
Juste pour clarifier, votre question est de savoir comment mettre à jour Rubygems lui-même - pas un joyau particulier géré par rubygems.
Michael

Réponses:

471

Installer rubygems-update

gem install rubygems-update
update_rubygems
gem update --system

exécutez ces commandes en tant que root ou utilisez sudo.

Sacx
la source
1
j'obtiens cette exception lorsque je suis la mise à jour de la suggestion de gemme - le système est désactivé sur Debian. RubyGems peut être mis à jour en utilisant les dépôts officiels Debian par aptitude ou apt-get.
Anuj
3
Ici à cause de problèmes avec la gemme unicode ( github.com/blackwinter/unicode/issues/5 ): après avoir exécuté la solution de answer, j'ai dû exécuter gem pristine unicodequi a reconstruit la gemme et l'a rendue utilisable.
reallynice
1
Merci, cela m'a aidé à installer minitestsur une partition NFS cf. github.com/rubygems/rubygems/issues/1161
Oncle Tom
12
rubygems-updateest installé par défaut. Il s'agit donc de courir juste gem update --system.
dskecse
2
Habituellement, vous ne voudrez jamais exécuter cette commande en tant que sudo. Cela mettra à niveau le système ruby. Pensez à utiliser rvmourbenv
Hendrik
54

Vous pouvez mettre à jour toutes les gemmes en effectuant simplement:

sudo gem update

Franc
la source
44
Ceci est une réponse à la recherche d'une question.
Michael
1
sans sudosi vous avez installé des gemmes en tant qu'utilisateur normal (l'installation de gemmes en tant que root n'est pas très agréable de toute façon).
akostadinov
4
La question n'est pas "Comment mettre à jour toutes les gemmes?" mais plutôt "Comment mettre à jour RubyGems sur ma machine?"
aceofbassgreg
19

Ou:

gem update `gem outdated | cut -d ' ' -f 1`
jvc26
la source
#brilliant Merci pour celui-ci. J'ai seulement ajouté --forcepour empêcher l'automatisation de s'arrêter pour la confirmation d'écrasement
SaxDaddy
ne répond pas à la question
agbodike
Respectivement avec des erreurs de shellcheck fixe: gem update "$(gem outdated | cut -d ' ' -f 1)";.
BernhardWebstudio
11

Vous pouvez mettre à jour gem à n'importe quelle version spécifique comme celle-ci,

gem update --system 'version'

gem update --system '2.3.0'
Aravin
la source
1
votre commande ne fonctionne pas sur une distribution basée sur la mise à jour de gem de Debian - système "2.1.0" ERREUR: lors de l'exécution de la mise à jour de gem ... (RuntimeError) gem - le système est désactivé sur Debian, car il écrasera le contenu du rubygems Debian package, et pourrait briser votre système Debian de manière subtile. La façon prise en charge par Debian de mettre à jour rubygems est via apt-get, en utilisant les dépôts officiels Debian. Si vous savez vraiment ce que vous faites, vous pouvez toujours mettre à jour rubygems en définissant la variable d'environnement REALLY_GEM_UPDATE_SYSTEM, mais n'oubliez pas que cela n'est pas complètement pris en charge par Debian.
jeff
5

Je n'utiliserais pas les paquets Debian, jetez un œil à RVM ou Rbenv .

lucas clemente
la source
Le paquet Debian existe pour Rbenv
antono
5

J'ai trouvé d'autres réponses inexactes / obsolètes. Le mieux est de se référer à la documentation actuelle .

Version courte: dans la plupart des cas, gem update --system cela suffira.

Vous ne devez pas utiliser aveuglément sudo. En fait, si vous n'êtes pas obligé de le faire, vous ne devriez probablement pas l'utiliser.

thisismydesign
la source
4

Pour moi, il suffisait de simplement courir

gem update
Klas Mellbourn
la source
5
C'est pour mettre à jour vos gemmes, pas le logiciel rubygems lui-même.
Peter H. Boling
1
C'est vrai, mais il s'agit du premier résultat Google pour des recherches comme "mise à jour de la version de gemme", donc je suis content que cette réponse soit là.
ncrypticus
-1

Pour mettre à jour une seule gemme (et ses dépendances), faites:

    bundle update gem-name

Mais pour mettre à jour uniquement la gemme seule (sans mettre à jour ses dépendances), faites

    bundle update --source gem-name
Ruto Collins
la source
1
C'est pour mettre à jour des gemmes spécifiques, pas le logiciel rubygems lui-même.
thisismydesign
1
@thisismydesign Je pense avoir spécifié que cela ne mettra à jour qu'une gemme spécifique?
Ruto Collins
Oui, mais ce n'est pas de cela qu'il s'agit.
thisismydesign
1
Je vois. Mais je sais que cela aidera quelqu'un comme moi qui a atterri ici en premier :)
Ruto Collins