Comment mettre à jour Ruby version 2.0.0 vers la dernière version de Mac OSX Yosemite?


377

J'ai besoin de mettre à jour ma version ruby ​​de 2.0.0 vers la dernière version, je ne peux pas utiliser de gemmes car ma version n'est pas mise à jour. J'avais utilisé Homebrew pour installer Ruby il y a quelque temps, comment puis-je mettre à jour ma version de Ruby?


ce qui se passe lorsque vous tapez which rvmou which rbenvdans votre ligne de commande
MageeWorld

@ChuchaC S'il vous plaît, jetez un oeil ici et ici
vhristoskov

1
ressemble brew install rubysuffit. vérifier ici
Venugopal

Réponses:


709

Ouvrez votre terminal et exécutez

curl -sSL https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer | bash -s stable

Une fois cette opération terminée, vous devez redémarrer votre terminal pour que la rvmcommande fonctionne.

Maintenant, lancez rvm list known

Cela montre la liste des versions du rubis.

Maintenant, exécutez rvm install ruby@latestpour obtenir la dernière version rubis.

Si vous tapez ruby -vdans le terminal, vous devriez voir ruby X.X.X.

S'il vous montre toujours ruby 2.0., exécutez rvm use ruby-X.X.X --default.


3
2.2.0 n'est pas la dernière version de Ruby.
Jordan Running

1
@Jordan My bad 2.3 est la version stable
Abhinay Reddy Keesara

72
Cela fonctionne sur Mac OS pour installer RVM:\curl -sSL https://get.rvm.io | bash -s stable --ruby
zed

7
2.4 est la dernière version stable: rvm install ruby-2.4.0
seeARMS

7
piping curl output straight to execution est un cauchemar de sécurité qui attend de se produire.
arp

214

Solution d'infusion uniquement

Mise à jour:

D'après les commentaires (bravo à Maksim Luzik), je n'ai pas testé mais semble être une solution plus élégante:

Après avoir installé ruby ​​via brew, exécutez la commande suivante pour mettre à jour les liens vers la dernière installation de ruby: brew link --overwrite ruby

Réponse originale:

Tard dans la soirée, mais utiliser de la bière suffit. Il n'est pas nécessaire d'installer rvm et pour moi cela complique les choses.

En brew install rubyinstallant actuellement la dernière version (actuellement v2.4.0). Cependant, votre chemin trouve d'abord 2.0.0. Pour éviter cela, changez simplement la priorité ( source ). Je l'ai fait en modifiant ~/.profileet en définissant:

export PATH=/usr/local/bin:$PATH

Après cela, j'ai constaté que gem gem bundler utilisait toujours la version 2.0.0, il suffit de l'installer à nouveau: gem install bundler


2
Exactement ce que je cherchais, merci. Si j'étais un développeur ruby, alors rvm aurait du sens, mais je ne le suis pas, donc c'est parfait.
Max

4
cela fonctionne, il fallait faire "source ~ / .bash_profile" après l'installation
mjpablo23

9
ou après avoir installé ruby ​​via brew, exécutez la commande suivante pour mettre à jour les liens vers la dernière installation de ruby:brew link --overwrite ruby
Maksim Luzik

1
au lieu de la overwriteversion rubis, vous pouvez simplement écrirebrew unlink ruby && brew link ruby
Hamsternik

7
La solution de @MaksimLuzik ne fonctionne pas pour moi sous MacOS. brew link --overwrite rubymène àWarning: Refusing to link macOS-provided software: ruby
Rafael Beckel

97

Je recommande rbenv * https://github.com/rbenv/rbenv

* Si cela répond à vos critères: https://github.com/rbenv/rbenv/wiki/Why-rbenv? :

rbenv fait…

  • Prise en charge de la spécification des versions de Ruby spécifiques à l'application .
  • Vous permet de changer la version globale de Ruby par utilisateur.
  • Vous permet de remplacer la version Ruby par une variable d'environnement.

Contrairement à RVM, rbenv ne fait pas…

  • Besoin d'être chargé dans votre shell. Au lieu de cela, l'approche shim de rbenv fonctionne en ajoutant un répertoire à votre $PATH.
  • Remplacez les commandes shell comme cdou nécessitent des hacks rapides. C'est dangereux et sujet aux erreurs.
  • Avoir un fichier de configuration. Il n'y a rien à configurer sauf la version de Ruby que vous souhaitez utiliser.
  • Installez Ruby. Vous pouvez créer et installer Ruby vous-même, ou utiliser ruby-build pour automatiser le processus.
  • Gérez les jeux de gemmes. Bundler est un meilleur moyen de gérer les dépendances des applications. Si vous avez des projets qui n'utilisent pas encore Bundler, vous pouvez installer le rbenv-gemset plugin .
  • Exiger des modifications aux bibliothèques Ruby pour la compatibilité. La simplicité de rbenv signifie que tant qu'il est dans votre $PATH, rien d' autre n'a besoin de le savoir.

INSTALLATION

Installez Homebrew http://brew.sh

Alors:

$ brew update
 $ brew install rbenv
$ brew install rbenv ruby-build

# Ajoutez rbenv à bash pour qu'il se charge à chaque fois que vous ouvrez un terminal
echo 'if which rbenv> / dev / null; puis évaluez "$ (rbenv init -)"; fi '>> ~ / .bash_profile
source ~ / .bash_profile

MISE À JOUR
Il y a une étape supplémentaire aprèsbrew install rbenvExécuterrbenv initet ajoutez une ligne.bash_profilecomme il l'indique. Après cela, rouvrez la fenêtre de votre terminal […] SGI 30 septembre à 12h01 - https://stackoverflow.com/users/119770

$ rbenv install --list
Versions disponibles:
 1.8.5-p113
 1.8.5-p114
 […]
 2.3.1
 2.4.0-dev
 jruby-1.5.6
 […]
$ rbenv install 2.3.1
[…]

Définissez la version globale:

$ rbenv global 2.3.1
$ ruby ​​-v
ruby 2.3.1p112 (2016-04-26 révision 54768) [x86_64-darwin15]

Définissez la version locale de votre référentiel en ajoutant .ruby-versionau répertoire racine de votre référentiel:

$ cd ~ / whatevs / projets / new_repo
$ echo "2.3.1"> .ruby-version

Pour MacOS, visitez ce lien


3
@ChuchaC No prob. Mais avant de le faire, cela provient du fichier Lisezmoi de rbenv: "Remarque sur la compatibilité: rbenv est incompatible avec RVM. Assurez-vous de désinstaller complètement RVM et de supprimer toute référence à celui-ci de vos fichiers d'initialisation du shell avant d'installer rbenv." - github.com/rbenv/rbenv#installation
SoAwesomeMan

17
n'a pas aidé. Toujours obtenir la version 2.0.0 standard pour ruby -vaprèsrbenv global ...
tuxSlayer

8
Il y a une étape supplémentaire après brew install rbenvExécuter rbenv initet ajoutez une ligne à .bash_profile comme il l'indique. Après cela, rouvrez votre fenêtre de terminal, faites rbenv install 2.3.1, rbenv global 2.3.1 et rbenv fera son travail
SGI

6
Probablement en retard mais pour des références futures pour les personnes qui ont rencontré le même problème que @tuxSlayer, rbenv rehashaprès avoir rbenv globaltravaillé pour moi
Sean

2
Après rbenv init,ruby -v génère la version 2.1.2 correcte, mais les exécutions de bundle rencontrent une erreur comme celle-ci paperclip-5.0.0.beta1 requires ruby version >= 2.1.0, which is incompatible with the current version, ruby 2.0.0p648. Enfin réussir à le faire fonctionner avec une série de rbenv rehash. Merci @Sean
James

51

Terminal ouvert:

sudo gem update --system 

Ça marche!


3
Cela semble effectivement fonctionner, et c'est une mesure beaucoup plus simple que les autres réponses. Mais lors de l'installation de quelques gemmes (écoutez par exemple) ils se plaignent que la version est inférieure à celle requise.
William Isted

8
C'est du bijou pas du rubis
William GP

Brew uniquement solution here
Sergio Basurco

2
J'ai également été induit en erreur par cette réponse. Il "fonctionne" en ce sens qu'aucune erreur n'est générée lorsque vous l'exécutez à partir de la console. Cependant, il ne met pas à jour Ruby. Il met à jour Ruby Gems. Suivez l'une des autres réponses pour mettre à jour Ruby (en utilisant OS X Sierra).
informaton

41

Un moyen rapide de mettre à jour Ruby vers v2.4 +

brew upgrade ruby

ou

sudo gem update --system 

4
Cela semble faire une tonne de choses, mais la mise à niveau de rubis n'en fait pas partie. Il se termine avec: /usr/local/Homebrew/Library/Homebrew/brew.rb:12:in '<main>': Homebrew must be run under Ruby 2.3! You're running 2.0.0. (RuntimeError)
nkoren

1
C'est la meilleure et la meilleure façon de mettre à niveau la version rubis à l'aide de brew.
user1101733

Ça ne marche pas pour moi. ERROR: While executing gem ... (Errno::EPERM) Operation not permitted @ rb_sysopen - /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/gem
Sébastien Loisel

@ SébastienLoisel pouvez-vous s'il vous plaît donner quelques détails sur votre système d'exploitation, commande, etc.
fatihyildizhan

1
@fatihyildizhan apparemment ruby ​​/ gems / etc est dans un état semi-brisé sur Mavericks. J'ai résolu mes problèmes en passant à Catalina. Je ne me souviens pas de toutes les erreurs que j'ai eues, mais il y avait des multitudes. Je ne me souviens pas si j'essayais de mettre à niveau des cocoapods ou des gemmes ou quoi, mais c'était essentiellement sans espoir.
Sébastien Loisel

31

Vous pouvez spécifier la dernière version de ruby ​​en consultant https://www.ruby-lang.org/en/downloads/

  1. Récupérez la dernière version:

    curl -sSL https://get.rvm.io | bash -s stable --ruby

  2. Installez-le:

    rvm install 2.2

  3. Utilisez-le par défaut:

    rvm use 2.2 --default

Ou exécutez la dernière commande de ruby:

rvm install ruby --latest
rvm use 2.2 --default

Merci, cela a fonctionné pour moi. La solution avec rbenvne fonctionnait pas
tuxSlayer

Cela a fonctionné pour moi aussi !! La solution avec rbenvn'a PAS fonctionné
ruoho ruotsi

5

Si vous avez mac os et Brewinstallé, vous pouvez essayer la commande suivante,

brew upgrade ruby

2

Si quelqu'un obtient la même erreur que moi: «L'installation des exigences a échoué avec le statut: 1.» voici ce qu'il faut faire:

Installez Homebrew (pour une raison quelconque peut ne pas fonctionner automatiquement) avec cette commande:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Ensuite, réinstallez rvm en utilisant

curl -sSL https://get.rvm.io | bash -s stable --ruby

Quittez et rouvrez Terminal, puis:

rvm install 2.2
rvm use 2.2 --default

2

brew install rbenv ruby-build

Ajoutez rbenv à bash pour qu'il se charge à chaque fois que vous ouvrez un terminal

echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile

source ~/.bash_profile

Installer Ruby

rbenv install 2.6.5

rbenv global 2.6.5

ruby -v

Lien vers la page source

0

Dans le terminal: rvm gemset use global


5
Bien que cet extrait de code puisse être la solution, y compris une explication aide vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondrez à la question pour les lecteurs à l'avenir, et ces personnes pourraient ne pas connaître les raisons de votre suggestion de code.
Adam

-2

Le moyen le plus simple est certainement d'entrer la commande suivante dans le terminal:

sudo gem update --system

Vous pouvez ajouter l'indicateur --no-documentsi vous ne souhaitez pas télécharger la documentation. Voici un exemple de sortie après avoir exécuté la commande:

sudo gem update --system
Password:
Updating rubygems-update
Fetching: rubygems-update-2.6.8.gem (100%)
Successfully installed rubygems-update-2.6.8
Parsing documentation for rubygems-update-2.6.8
Installing ri documentation for rubygems-update-2.6.8
Installing darkfish documentation for rubygems-update-2.6.8
Installing RubyGems 2.6.8
RubyGems 2.6.8 installed
Parsing documentation for rubygems-2.6.8
Installing ri documentation for rubygems-2.6.8

------------------------------------------------------------------------------

RubyGems installed the following executables:
    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/gem

Ruby Interactive (ri) documentation was installed. ri is kind of like man 
pages for ruby libraries. You may access it like this:
  ri Classname
  ri Classname.class_method
  ri Classname#instance_method

1
N'est-ce pas la même chose que la réponse ci - dessus ? Je suis curieux de savoir pourquoi le nombre de votes négatifs ici par rapport aux votes positifs là-bas? Est-ce à cause de la réponse en double, ou est-ce parce que les gens ne se sont pas rendu compte assez tôt, que la solution antérieure était également réservée aux rubygèmes, pas à Ruby?
informaton
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.