web-dev-qa-db-ja.com

RubyスイッチなしでRuby 2.0をインストールしますか?

最新のUbuntu 14.04にRuby 2.0をインストールするタスクは、かなりイライラします。私は、パッケージを放棄してソースからインストールできることを認識していますが、可能であれば、パッケージをインストールしたいです。

13.10でRubyに関するこの質問/回答を見つけました-これは私が望んでいたもののように見えました。

rubyのインストール方法

残念ながら、この戦略は実行可能ではないようです。Ruby-switchパッケージは14.04で削除されました。

http://www.ubuntuupdates.org/package/core/trusty/universe/base/Ruby-switch

パッケージ参照の削除 バグ これは、私にはまったく無関係に見えます。

Apt-getを使用してRuby2.0をインストールすると、Ruby1.9がインストールされ、デフォルトのRubyインタープリターになる理由に困惑しています。 Ruby2.0バイナリを取得しますが、スクリプト(Rubyの実行時に2.0インタープリターに依存する)はそれを取得しません。さらに、gem et。を使用すると等Rubyパッケージをインストールする-これらは2.0ではなくRuby1.9にインストールされているようです。非常に不十分です。

Ruby 2.0を標準のRubyインタープリターとしてインストールする最も簡単な方法について、誰でもヒントを提供できますか? Ruby切り替えなしでRuby 1.9から2.0に切り替えるにはどうすればよいですか?

23
aSteve

14.04で、Ruby 2.xに付属する次のPPAを見つけました

  • Ruby 2.1をUbuntu 14.04に追加します

    Sudo add-apt-repository ppa:brightbox/Ruby-ng
    

また、14.04にRubyをインストールするための 命令セット がGoRailsで見つかりましたが、長いので代わりにPPAが必要になると思います。

  • Ruby 1.9、2.0、または2.1をUbuntu 14.04に追加します

    Sudo add-apt-repository ppa:brightbox/Ruby-ng-experimental
    

それらの1つを単純に追加した後:

Sudo apt-get update
Sudo apt-get install Ruby2.1 # In the case you want 2.1
29
Luis Alvarado
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
8
rjspotter

DebianバージョンのRubyは、同じシステムへの複数のRubyインストールをサポートしていません。 Debianはパッケージを廃止しました および buntuはパッケージを削除しました リポジトリから。 rbenvを使用して、異なるRubyバージョンを切り替える必要があります。これは、Rubyスイッチパッケージの説明で推奨される方法であり、 bug 737782 で説明されている方法であり、Ruby。

Ruby 2.0はRuby2.0パッケージのインストール時にデフォルトでインストールされ、他のアクションは不要です。パッケージRubyがインストールされている場合は、削除することをお勧めします。バイナリ/usr/bin/Ruby2.0をシステムで使用できるようにする必要があります。

8
Braiam

ルビーを切り替える場合は、rvm( https://rvm.io )を使用することをお勧めします。パッケージマネージャーであり、1台のマシンに多くのさまざまなルビー(Matzだけでなく)を、ユーザーのローカルまたはすべてのユーザーに対してグローバルにインストールできます。 。

あなたが「パッケージ」を要求したことは知っているので、おそらくこれはあなたのために機能しないでしょう。しかし、これがあなたの開発マシンなら助けになると思いました。

この方法で行う利点は、2.1.1用に1つのgemsetをインストールし、2.0または1.9.3など用に他のgemsetをインストールできることです。また、システムを1つにコミットせずにjruby、rubiniusなどをテストできます。

実稼働環境では使用していませんが、開発だけでなくその用途にも適しているようです。

クイックスタートは次のとおりです。 https://rvm.io/rvm/install

5
Louis

ゲームの後半ではありますが、シンボリックリンクのハードコーディングよりもおそらく完全な解決策は、他の人が同じ欲求不満に噛まれてよりネイティブな解決策を望んでいる場合に冗長にここに投稿されたupdate-alternativesの使用です。これはすべてのバイナリとマニュアルページを処理し、競合を避けるために先に参照を先に削除します。

警告:

  • Rubyバージョンの1つが更新された場合は、これを再実行する必要があると思います。
  • 私はupdate-alternativesの第一人者ではないので、これはやり過ぎであるか、または慎重に行われている可能性があります。

スクリプト(名前は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
1
r2evans