Installez ruby ​​2.0 sans switch ruby?

23

Je trouve la tâche d'installer Ruby 2.0 sur la dernière version d'Ubuntu 14.04 plutôt frustrante. Je suis conscient que je pourrais renoncer aux paquets et les installer à partir des sources - mais je préfère de loin installer un paquet - si cela est possible.

J'ai trouvé cette question / réponse sur Ruby le 13.10 - qui ressemblait à ce que je voulais.

Comment installer ruby?

Malheureusement, la stratégie ne semble pas viable - le paquetage ruby-switch a été supprimé en 14.04.

lien

La suppression du paquet fait référence à un bogue qui, à mes yeux, n’a aucun rapport.

Je m'étonne de savoir pourquoi installer ruby2.0 en utilisant apt-get installe ruby1.9 et en fait l'interpréteur de ruby ​​par défaut. Je reçois un fichier binaire ruby2.0 - mais les scripts (qui dépendent d'un interpréteur 2.0 lors de l'exécution de ruby) ne le détectent pas. De plus, quand j'utilise gem et. Al. pour installer les paquets ruby ​​- ceux-ci semblent être installés pour ruby1.9 plutôt que 2.0. Très insatisfaisant.

Quelqu'un peut-il suggérer le moyen le plus simple d’installer ruby ​​2.0 en tant qu’interprète Ruby standard? Comment dois-je passer de Ruby 1.9 à 2.0 sans ruby-switch?

    
posée aSteve 21.04.2014 - 18:39
la source

5 réponses

29

Pour 14.04, j'ai trouvé les PPA suivants fournis avec Ruby 2.x

  • Ajout de Ruby 2.1 à Ubuntu 14.04

    sudo add-apt-repository ppa:brightbox/ruby-ng
    

J'ai également trouvé dans GoRails un ensemble d’instructions pour installer Ruby le 14.04, mais je suppose, car elles sont longues. voudrait plutôt un PPA.

  • Ajout de Ruby 1.9, 2.0 ou 2.1 à Ubuntu 14.04

    sudo add-apt-repository ppa:brightbox/ruby-ng-experimental
    

Après en avoir ajouté un simplement:

sudo apt-get update
sudo apt-get install ruby2.1 # In the case you want 2.1
    
réponse donnée Luis Alvarado 21.04.2014 - 19:28
la source
8

La version Debian de Ruby ne prend pas en charge plusieurs installations Ruby sur le même système. Debian obsolète dans le package et Ubuntu vient de le supprimer des référentiels. Vous devez utiliser rbenv pour basculer entre les différentes versions de ruby. C'est la méthode recommandée par la description du package ruby-switch et la méthode décrite dans bogue 737782 , de préférence, grâce à cela, il est dit qu’il ne devrait pas y avoir plus d’une version de Ruby dans les dépôts.

Ruby 2.0 est installé par défaut lors de l'installation du package ruby2.0 et aucune autre action n'est requise. Si le package ruby a été installé, il est recommandé de le supprimer. Vous devriez avoir le binaire /usr/bin/ruby2.0 disponible sur votre système.

    
réponse donnée Braiam 29.04.2014 - 15:56
la source
7
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
    
réponse donnée rjspotter 21.11.2014 - 00:22
la source
5

Si vous souhaitez basculer entre les rubis, je vous recommande d’utiliser rvm ( lien ). C'est un gestionnaire de paquets et il vous permet d'installer plusieurs différents rubis (pas seulement des rubans Matz) sur une seule machine, soit locale pour l'utilisateur, soit globalement pour tous les utilisateurs.

Je sais que vous avez demandé un "package", 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 le faire 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. .

Je ne l'utilise pas en production, mais apparemment, cela convient aussi bien que le développement.

Voici le quickstart: lien

    
réponse donnée Louis 29.04.2014 - 02:33
la source
1

Tard dans le jeu mais je pense qu'une solution peut-être plus complète que les liens symboliques codés en dur est cette utilisation de update-alternatives , affichée ici verbalement au cas où d'autres seraient mordues par la même frustration et souhaiteraient une solution plus native. Cela gère tous les binaires et les pages de manuel, en supprimant de manière préventive les références en premier pour éviter les conflits.

Mises en garde:

  • Je pense que cela devra être réexécuté si / quand l’une des versions de Ruby est mise à jour.
  • Je ne suis pas un gourou avec update-alternatives , il est donc possible que ce soit excessif et / ou mal fait.

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"
[[ "" = "-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
    
réponse donnée r2evans 20.04.2015 - 01:17
la source

Lire d'autres questions sur les étiquettes