Je trouve assez frustrant d'installer Ruby 2.0 sur le dernier Ubuntu 14.04. Je sais que je peux renoncer aux paquets et installer à partir des sources - mais je préférerais de loin installer un paquet - si cela est possible.
J'ai trouvé cette question/réponse à propos de Ruby le 13.10 - qui ressemblait à ce que je voulais.
Malheureusement, la stratégie ne semble pas viable - le paquet Ruby-switch a été supprimé en 14.04.
http://www.ubuntuupdates.org/package/core/trusty/universe/base/Ruby-switch
La suppression des références de paquetages n bogue qui, pour moi, n'a pas de rapport.
Je me demande bien pourquoi installer Ruby2.0 avec apt-get installe Ruby1.9 et en fait l'interprète par défaut Ruby. Je reçois un binaire Ruby2.0 - mais les scripts (qui dépendent d'un interpréteur 2.0 lors de l'exécution de Ruby) ne le prennent pas. De plus, quand j'utilise gem et. Al. installer Ruby packages - ceux-ci semblent être installés pour Ruby1.9 plutôt que 2.0. Très insatisfaisant.
Quelqu'un peut-il donner un indice sur le moyen le plus simple d'installer Ruby 2.0 en tant qu'interprète standard Ruby? Comment suis-je censé passer de Ruby 1.9 à 2.0 sans Ruby-switch?
Pour 14.04, j'ai trouvé les AAE suivants qui viennent avec Ruby 2.x
Ajoute Ruby 2.1 à Ubuntu 14.04
Sudo add-apt-repository ppa:brightbox/Ruby-ng
J'ai aussi trouvé dans GoRails un ensemble d'instructions pour installer Ruby le 14.04 mais je suppose que, vu qu'ils sont longs, vous voudriez plutôt un PPA.
Ajoute Ruby 1.9, 2.0 ou 2.1 à Ubuntu 14.04
Sudo add-apt-repository ppa:brightbox/Ruby-ng-experimental
Après avoir ajouté l'un d'entre eux simplement:
Sudo apt-get update
Sudo apt-get install Ruby2.1 # In the case you want 2.1
Sudo apt-get install Ruby2.0
Sudo rm /usr/bin/Ruby && Sudo ln -s /usr/bin/Ruby2.0 /usr/bin/Ruby
Sudo rm -fr /usr/bin/gem && Sudo ln -s /usr/bin/gem2.0 /usr/bin/gem
La version Debian de Ruby ne prend pas en charge plusieurs installations Ruby sur le même système. Debian rend le paquet obsolète et buntu vient de le supprimer des référentiels. Vous devez utiliser rbenv
pour basculer entre les différentes versions de Ruby. Ceci est la méthode recommandée par la description du paquetage Ruby-switch et était la méthode qui a été décrite dans bug 737782 comme préféré, car il est dit qu'il ne devrait pas y avoir plus d'une version de Ruby dans les référentiels.
Ruby 2.0 est installé par défaut lors de l’installation du package Ruby2.0
et aucune autre action n’est nécessaire. Si le package Ruby
a été installé, il est recommandé de le supprimer. Le binaire /usr/bin/Ruby2.0
devrait être disponible sur votre système.
Si vous voulez passer d'un rubis à l'autre, je vous recommande d'utiliser rvm ( https://rvm.io ). C'est un gestionnaire de paquets qui vous permet d'installer de nombreux rubis différents (pas seulement ceux de Matz) sur une seule machine, que ce soit en local ou globalement pour tous les utilisateurs. .
Je sais que vous avez demandé un "forfait", alors peut-être que cela ne fonctionnera pas pour vous. Mais j’ai pensé que cela pourrait aider si c’est votre machine de développement.
L'avantage de procéder de cette façon est que vous pouvez installer un gemset pour 2.1.1 et d'autres pour 2.0 ou 1.9.3, etc. Il vous permet également de tester jruby, rubinius, etc. sans affecter votre système à un.
Je ne l'utilise pas en production, mais apparemment, cela convient aussi bien au développement.
Voici le quickstart: https://rvm.io/rvm/install
En fin de partie, mais je pense qu'une solution peut-être plus complète que les liens symboliques codés en dur est l'utilisation de update-alternatives
, posté ici verbalement au cas où d'autres personnes seraient mordues par la même frustration et souhaiteraient une solution plus native. Cela gère tous les fichiers binaires et les pages de manuel, en supprimant d'abord les références de manière préemptive pour éviter les conflits.
update-alternatives
, il est donc possible que ce soit excessif et/ou effectué à tort.Script (j'ai nommé fix-Ruby-alternatives.sh
):
#!/bin/bash
# Script to insert all potentially alternative-able files within Ruby versioned packages
# Bill Evans ("r2evans")
# April 19, 2015
BIN=/usr/bin
MAN=/usr/share/man/man1
MASTER="Ruby"
SLAVES=( gem irb rdoc testrb rake erb ri )
VERSIONS=( 1.9.1 2.0 )
DRYRUN="yes"
[[ "$1" = "-y" ]] && unset DRYRUN
PRI=0
for ver in ${VERSIONS[@]} ; do
PRI=$(( ${PRI} + 1 ))
REMCMD="update-alternatives --remove ${MASTER} ${BIN}/${MASTER}${ver}"
CMD="update-alternatives --install ${BIN}/${MASTER} ${MASTER} ${BIN}/${MASTER}${ver} ${PRI}"
if test -f "${MAN}/${MASTER}${ver}.1.gz" ; then
CMD="${CMD} --slave ${MAN}/${MASTER}.1.gz ${MASTER}.1.gz ${MAN}/${MASTER}${ver}.1.gz"
else
echo "# no ${MAN}/${MASTER}${ver}.1.gz" > /dev/stderr
fi
for sl in ${SLAVES[@]} ; do
if test -f "${BIN}/${sl}${ver}" ; then
CMD="${CMD} --slave ${BIN}/${sl} ${sl} ${BIN}/${sl}${ver}"
else
CMD="${CMD} --slave ${BIN}/${sl} ${sl} /dev/null"
echo "# no ${BIN}/${sl}${ver}" > /dev/stderr
fi
if test -f "${MAN}/${sl}${ver}.1.gz" ; then
CMD="${CMD} --slave ${MAN}/${sl}.1.gz ${sl}.1.gz ${MAN}/${sl}${ver}.1.gz"
else
CMD="${CMD} --slave ${MAN}/${sl}.1.gz ${sl}.1.gz /dev/null"
echo "# no ${MAN}/${sl}${ver}.1.gz" > /dev/stderr
fi
done
if [[ -n ${DRYRUN} ]]; then
echo -e ${REMCMD}
echo -e ${CMD} | sed -e 's/\s* --slave/\n --slave/g'
echo "# Consider: update-alternatives --auto Ruby"
else
${REMCMD}
${CMD}
echo "# Consider: update-alternatives --auto Ruby"
fi
done