Ari*_*san 12 ruby installation debian ruby-on-rails-3
我正在使用Debian Squeeze作为我的操作系统,并且正在尝试开发Ruby on Rails项目.为此,我首先安装了一些ruby包.
我的ruby版本是:ruby1.8,ruby1.9.1
然后我卸载ruby1.8使ruby1.9.1成为我的默认ruby.
现在,如果我跑:
$ which ruby
Run Code Online (Sandbox Code Playgroud)
它什么也没显示.
如果我跑:
$ which ruby1.9.1
/usr/bin/ruby1.9.1
Run Code Online (Sandbox Code Playgroud)
然而:
$ rails new testApp
bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么办.请指导我.
fin*_*inn 12
对于Debian squeeze(6.0):
首先确保卸载所有ruby和ruby1.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
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
在ruby1.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
Run Code Online (Sandbox Code Playgroud)
请注意,这些都安装在10的低替代优先级(--install
标志之后但在--slave
标志之前的最后一部分).这样做是为了希望Debian的未来版本将包括ruby 1.8和ruby 1.9作为替代系统的一部分并覆盖这些链接.
检查替代系统中的ri:
update-alternatives --display ri
Run Code Online (Sandbox Code Playgroud)
结果:
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'.
Run Code Online (Sandbox Code Playgroud)
检查替代系统中的ruby:
update-alternatives --display ruby
Run Code Online (Sandbox Code Playgroud)
结果:
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'.
Run Code Online (Sandbox Code Playgroud)
我在挤压盒上做的是默认情况下获得ruby 1.9:
cd /usr/bin
ln -sf ruby1.9.1 ruby
ln -sf gem1.9.1 gem
ln -sf erb1.9.1 erb
ln -sf irb1.9.1 irb
ln -sf rake1.9.1 rake
ln -sf rdoc1.9.1 rdoc
ln -sf testrb1.9.1 testrb
Run Code Online (Sandbox Code Playgroud)
我以这种方式运行了很多rails生产服务器,并且所有其他debian ruby包都没有被破坏,因为它们在/usr/bin/ruby1.8二进制文件上进行中继.
这不是"真正的debian方式",但由于某种原因update-alternatives
不支持在挤压中配置ruby.
在Ubuntu 11.10中,您可以运行update-alternatives --config ruby
并选择所需的版本
我还建议您在开始安装任何宝石之前更新rubygems REALLY_GEM_UPDATE_SYSTEM=true gem update --system
虽然我没有直接回答你的问题,但我建议你尝试使用美妙的rvm(ruby版本管理器)工具(http://beginrescueend.com/)。当我尝试在 Ubuntu 上使用 ruby 时,它让我的生活变得更加轻松。
归档时间: |
|
查看次数: |
9018 次 |
最近记录: |