ruby - 如何在 debian squeeze 上将 ruby​​1.9.1 设​​置为默认版本

标签 ruby ruby-on-rails-3 installation debian

我正在使用 Debian Squeeze 作为我的操作系统,并且正在尝试开发一个 Ruby on Rails 项目。为此,我首先安装了一些 ruby​​ 包。

我的ruby版本是:ruby1.8、ruby1.9.1

然后我卸载了 ruby​​1.8,使 ruby​​1.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​​ 和 ruby​​1.8 包。否则它们会干扰即将为 ruby​​ 1.9 设置的二进制文件/链接。

然后安装 ruby​​ 1.9 包。尽管这些软件包被命名为“1.9.1”,但它们实际上在 Debian squeeze 上安装了 ruby​​ 版本 1.9.2。虚拟包 ruby1.9.1-full 将安装 ruby​​ 所需的所有包:

sudo aptitude install ruby1.9.1-full

在 ri1.9.1 包中添加 ri 和联机帮助页的替代链接。 (这两行都是一个命令。)

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

在 ruby​​1.9.1 包中添加 ruby​​、相关二进制文件和联机帮助页的替代链接。 (这些行都是一个命令。)

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 的 future 版本将 ruby​​ 1.8 和 ruby​​ 1.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'.

关于ruby - 如何在 debian squeeze 上将 ruby​​1.9.1 设​​置为默认版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6965277/

相关文章:

ruby-on-rails - 添加适用于 MySQL 的默认 bool 值的正确方法是什么?

ruby-on-rails - rails 3 : Get Random Record

android - 在 Android 上安装 CouchDB

ruby - ruby 中的插入排序算法有问题

ruby-on-rails - 使用载波和雾将 Rails 图像上传到 S3

Ruby:从散列的散列中删除特定键的所有实例

ruby - 如何在使用 Ruby 的某个单词后获取字符串的一部分?

ruby-on-rails - Rails 3 - "More"使用 Kaminari 进行 ajax 分页

linux - Yum 不显示所有已安装的软件包

node.js - 为 Electron React JS 应用程序创建安装程序 - 安装后运行时不加载 reactJS 组件