我使用DebianSquence作为操作系统,并试图开发RubyonRails项目。为此,我首先安装了一些ruby包。
我的ruby版本是:ruby1.8,ruby1.9.1
然后我卸载了ruby1.8,使ruby1.9.1成为默认的ruby。
现在如果我跑:

$ which ruby

它什么也没显示。
如果我跑:
$ which ruby1.9.1
/usr/bin/ruby1.9.1

然而:
$ rails new testApp
bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file or directory

我不知道该怎么办。请引导我。

最佳答案

对于Debian Squeeze(6.0):
首先确保卸载所有ruby和ruby1.8包。否则它们将干扰即将为Ruby1.9设置的二进制文件/链接。
然后安装ruby 1.9包。尽管这些包被命名为“1.9.1”,但实际上它们在DebianSquence上安装了Ruby1.9.2版。虚拟包ruby1.9.1-full将安装ruby所需的所有包:

sudo aptitude install ruby1.9.1-full

在ri1.9.1包中为ri和manpage添加可选链接。(这两行都是一个命令。)
sudo update-alternatives --install /usr/bin/ri ri /usr/bin/ri1.9.1 10 \
--slave /usr/share/man/man1/ri.1.gz ri.1.gz /usr/share/man/man1/ri1.9.1.1.gz

在ruby1.9.1包中为ruby、相关的二进制文件和manpages添加可选链接。(这些行都是一个命令。)
sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.1 10 \
--slave /usr/share/man/man1/ruby.1.gz ruby.1.gz /usr/share/man/man1/ruby1.9.1.1.gz \
--slave /usr/bin/erb erb /usr/bin/erb1.9.1 \
--slave /usr/bin/gem gem /usr/bin/gem1.9.1 \
--slave /usr/bin/irb irb /usr/bin/irb1.9.1 \
--slave /usr/bin/rake rake /usr/bin/rake1.9.1 \
--slave /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.1 \
--slave /usr/bin/testrb testrb /usr/bin/testrb1.9.1 \
--slave /usr/share/man/man1/erb.1.gz erb.1.gz /usr/share/man/man1/erb1.9.1.1.gz \
--slave /usr/share/man/man1/gem.1.gz gem.1.gz /usr/share/man/man1/gem1.9.1.1.gz \
--slave /usr/share/man/man1/irb.1.gz irb.1.gz /usr/share/man/man1/irb1.9.1.1.gz \
--slave /usr/share/man/man1/rake.1.gz rake.1.gz /usr/share/man/man1/rake1.9.1.1.gz \
--slave /usr/share/man/man1/rdoc.1.gz rdoc.1.gz /usr/share/man/man1/rdoc1.9.1.1.gz \
--slave /usr/share/man/man1/testrb.1.gz testrb.1.gz /usr/share/man/man1/testrb1.9.1.1.gz

注意,这些都是以10的低优先级安装的(最后一部分在--install标志之后,但在--slave标志之前)。这样做的目的是希望Debian的未来版本将同时包含Ruby1.8和Ruby1.9作为备选系统的一部分,并覆盖这些链接。
检查替代系统中的ri:
update-alternatives --display ri

结果:
ri - auto mode
link currently points to /usr/bin/ri1.9.1
/usr/bin/ri1.9.1 - priority 10
slave ri.1.gz: /usr/share/man/man1/ri1.9.1.1.gz
Current 'best' version is '/usr/bin/ri1.9.1'.

检查替代系统中的ruby:
update-alternatives --display ruby

结果:
ruby - auto mode
link currently points to /usr/bin/ruby1.9.1
/usr/bin/ruby1.9.1 - priority 10
slave erb: /usr/bin/erb1.9.1
slave erb.1.gz: /usr/share/man/man1/erb1.9.1.1.gz
slave gem: /usr/bin/gem1.9.1
slave gem.1.gz: /usr/share/man/man1/gem1.9.1.1.gz
slave irb: /usr/bin/irb1.9.1
slave irb.1.gz: /usr/share/man/man1/irb1.9.1.1.gz
slave rake: /usr/bin/rake1.9.1
slave rake.1.gz: /usr/share/man/man1/rake1.9.1.1.gz
slave rdoc: /usr/bin/rdoc1.9.1
slave rdoc.1.gz: /usr/share/man/man1/rdoc1.9.1.1.gz
slave ruby.1.gz: /usr/share/man/man1/ruby1.9.1.1.gz
slave testrb: /usr/bin/testrb1.9.1
slave testrb.1.gz: /usr/share/man/man1/testrb1.9.1.1.gz
Current 'best' version is '/usr/bin/ruby1.9.1'.

08-18 14:57