Sous Mac OS, comme pour de nombreux autres outils, Ruby est installé par défaut, mais évidemment dans une version un peu ancienne et customisée par Apple. Cela permet de faire immédiatement tourner des outils Ruby mais cela veut aussi dire qu'on risque à un moment ou un autre d'être coincé par une spécificité de la plateforme au barreaux dorés.
J'ai donc voulu installer RVM, qui est un gestionnaire de version de Ruby, permettant accessoirement de rester en mode utilisateur sans accès root. L'installation de RVM en elle même n'est pas un soucis :
bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )
par la suite, on va y installer des versions de ruby et/ou de ses variantes (jRuby par exemple) - et là, ça se complique, d'où ce blog pour vous éviter d'avoir comme moi à éplucher les réponses de Google.
D'abord, il va falloir compiler Ruby lors de l'installation - je vous l'ai dit, Ruby est fortement lié à l'OS et se recompile lors de l'installation, il n'est pas distribué sous forme d'un paquet dmg installable par glisser / déposer comme les autres logiciels Mac - donc disposer d'un compilateur, ce qui dans le monde Mac signifie télécharger et installer les quelques Go de XCode ... bon, ensuite :
There has been an error while running make. Halting the installation.
Il manque à Ruby deux librairies systèmes : readline et libxml2. OSX étant basé sur BSD, on peut lui ajouter de nombreux paquets Gnu/Linux via des portages - j'utilise MacPorts.
sudo port install readline libxml2
un petit café plus tard, retour à l'installation de ruby, auquel il faudra ajouter des arguments --with-xx-dir pour préciser le chemin d'installation de ces dépendances. Nouveau problème, nouveau paquet manquant (libiconv), et cette fois l'astuce macport ne suffit pas. On va donc demander à RVM de résoudre le problème lui même :
rvm pck install iconv
et enfin,
rvm install 1.9.3 -C --with-readline-dir=/opt/local/lib --with-libxml2-dir=/opt/local/lib --with-iconv-dir=/Users/nicolas/.rvm/usr
et voilà ! Reste plus qu'à choisir cette version comme interpreteur Ruby par défaut (rvm --default use 1.9.3) et on est fin prêt pour utiliser ruby dans une version récente, et installer des paquets Gem sans être root.
Tiens au passage, un petit troll, histoire de ne pas renier mes racines :
{troll:on}
à ceux qui se plaignent de Maven, le gestionnaire de paquets Gem va vous plaire : installation systématique les docs (deux pour le prix d'une : ri et rdoc), conflits de versions - je n'arrivais pas à installer veewee sur mon vagrant avant un downgrade de ce dernier) - etc.
{troll:off}
Ceci dit, je ne connais aucun système de gestion de paquets/dépendance qui ai résolu de manière définitive ce problème :D
Ceci dit, je ne connais aucun système de gestion de paquets/dépendance qui ai résolu de manière définitive ce problème :D
4 commentaires:
Pour les conflits de version et veewee je ne sais pas mais pour la doc il y a les options --no-ri & --no-rdoc. Ces mêmes options peuvent être activées par défaut http://stackoverflow.com/questions/1381725/how-to-make-no-ri-no-rdoc-default-for-gem-install
@Jean toi, tu n'as pas cliqué sur le lien "systématique" :P Je fais du troll utile ;)
http://docs.oracle.com/javase/tutorial/essential/io/links.html#symLink ?
@Ludovic je sais, java 7 corrige un peu le tir. ET comme chacun sait, tout le monde a migré sous Java 7 dès sa sortie, n'est ce pas ?
Enregistrer un commentaire