最新のUbuntu 14.04にRuby 2.0をインストールするタスクは、かなりイライラします。私は、パッケージを放棄してソースからインストールできることを認識していますが、可能であれば、パッケージをインストールしたいです。
13.10で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に切り替えるにはどうすればよいですか?
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
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
DebianバージョンのRubyは、同じシステムへの複数のRubyインストールをサポートしていません。 Debianはパッケージを廃止しました および buntuはパッケージを削除しました リポジトリから。 rbenv
を使用して、異なるRubyバージョンを切り替える必要があります。これは、Rubyスイッチパッケージの説明で推奨される方法であり、 bug 737782 で説明されている方法であり、Ruby。
Ruby 2.0はRuby2.0
パッケージのインストール時にデフォルトでインストールされ、他のアクションは不要です。パッケージRuby
がインストールされている場合は、削除することをお勧めします。バイナリ/usr/bin/Ruby2.0
をシステムで使用できるようにする必要があります。
ルビーを切り替える場合は、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
ゲームの後半ではありますが、シンボリックリンクのハードコーディングよりもおそらく完全な解決策は、他の人が同じ欲求不満に噛まれてよりネイティブな解決策を望んでいる場合に冗長にここに投稿されたupdate-alternatives
の使用です。これはすべてのバイナリとマニュアルページを処理し、競合を避けるために先に参照を先に削除します。
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