首先我想说的是...我真的不需要使用 1.9.2。我知道你永远不会使用 Python 3.2,所以如果普遍的建议是我应该使用 1.8,我会这么做。但不要告诉我这样做,因为它更简单。
无论我应该使用哪个版本,问题仍然是相关的:让一个命令执行另一个命令的好方法是什么?
(我想我可以编写一个程序来启动 ruby1.9.1,调用可执行文件 ruby,然后将其放入我的 bin 中,但这似乎不是一个好主意)
答案1
首先,您不需要编写 C 应用程序 - 一个简单的 bash 小曲就可以了。
我认为最干净的解决方案是与update-alternatives
系统有关。例如,Ubuntu 就是这样在安装时将各种 Java 虚拟机分开的。问题是你需要自己设置。
我刚刚遇到邮件列表帖子这似乎为你完成了大部分繁重的工作。你可能需要稍微更改版本号,但除此之外,你应该明白了。
为了后代(如果 Google 否决了 URL 或线程),我现在会将其复制到业务端,但我不会承担编写它的荣誉。
If any of you are using Ubuntu this is a pretty nice way to manage multiple
ruby interpreters.
It has the advantage of managing the manpages, ri, and irb as "slaves", so
they change when a new interpreter is selected.
here's the code:
# become root
su
# make sure the packages are installed for 1.8 & 1.9
aptitude install -s ~n^ruby1.[89]$ ~n^irb1.[89]$ ~n^ri1.[89]
# install ruby1.8 & friends with priority 500
# so this will be the default "auto" choice
update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.8 500 \
--slave /usr/share/man/man1/ruby.1.gz ruby.1.gz \
/usr/share/man/man1/ruby.1.8.gz \
--slave /usr/bin/ri ri /usr/bin/ri1.8 \
--slave /usr/bin/irb irb /usr/bin/irb1.8
# install ruby1.9 & friends with priority 400
update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9 400 \
--slave /usr/share/man/man1/ruby.1.gz ruby.1.gz \
/usr/share/man/man1/ruby.1.9.gz \
--slave /usr/bin/ri ri /usr/bin/ri1.9 \
--slave /usr/bin/irb irb /usr/bin/irb1.9
# choose your interpreter
# changes symlinks for /usr/bin/ruby ,
# /usr/bin/irb, /usr/bin/ri and man (1) ruby
update-alternatives --config ruby
for those with additional interpreters in say /usr/local/bin, other Debian
variants, or managing other tools, vary as required.
% man update-alternatives
hope wrapping didn't mangle it too much, and that someone finds this useful
...
--
cheers,
David Lee
答案2
以下是另一个类似的问题: 如何卸载 Ruby 1.8.7 并安装 Ruby 1.9.2?
其解决方案是运行以下命令:
sudo update-alternatives --config ruby
然后你会得到这个输出:
There are 2 choices for the alternative ruby (providing /usr/bin/ruby).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/ruby1.8 50 auto mode
1 /usr/bin/ruby1.8 50 manual mode
2 /usr/bin/ruby1.9.1 10 manual mode
Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/ruby1.9.1 to provide /usr/bin/ruby (ruby) in manual mode.
$ ruby --version
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]