web-dev-qa-db-fra.com

Comment recompiler un Ruby avec RVM?

J'ai installé Ruby 1.9.3 avec RVM, et cela fonctionne très bien. J'ai ensuite apporté quelques modifications dans un fichier source Ruby C C, et je veux recompiler et réinstallez-le pour que je puisse utiliser les changements. Je n'ai cependant trouvé aucune sorte de commande rvm recompile.

39
Dogweather

Ah hah. rvm uninstall [Ruby] suivi par rvm install [Ruby] fait l'affaire.

ou mieux:

rvm reinstall [Ruby]
29
Dogweather

Le problème avec l'utilisation de rvm [reinstall|install] est qu'il va chercher et utiliser des binaires précompilés s'il en trouve. Parfois, vous vraiment voulez reconstruire à partir des sources, probablement parce que vous essayez d'utiliser une version plus récente de GCC (par exemple 4.8 ou 4.9).

Le drapeau correct est --disable-binary, ne pas --force:

rvm reinstall --disable-binary 2.1
55
agarie

ou rvm reinstall [Ruby]


12
three

Utilisation:

rvm install --force

Il demande explicitement à RVM d'utiliser les sources existantes, dans les versions précédentes, c'était par défaut - mais cela pourrait être très déroutant.

Donc, d'autres commandes pour l'installation:

rvm try_install <Ruby>

S'installe uniquement s'il n'est pas encore installé (votre problème)

rvm reinstall <Ruby>

est le même que:

rvm remove [--gems] <Ruby>
rvm install <Ruby>

évidemment un gain de temps avec reinstall et utiliser [--gems] pour supprimer également toutes les gemmes installées avec Ruby.

mkdir -p projects/smth && cd projects smth
rvm use 1.9.3@gem --install --create --Ruby-version

ira au projet, installera 1.9.3 (s'il n'est pas encore installé), créera le gemset et créera .Ruby-version fichier (disponible uniquement dans la tête RVM avant v. 1.11.0) les autres flgs:

  • --rvmrc - déjà disponible dans RVM - créera .rvmrc fichier
  • --versions-conf - disponible uniquement dans la tête RVM avant la version 1.11.0 - créera .versions.conf - un fichier de configuration pour votre projet, vous pouvez y mettre toutes les informations importantes sur votre projet ... comme la version node.js
8
mpapis