Подтвердить что ты не робот

Как установить ruby1.9.1 в качестве версии по умолчанию на debian squeeze

Я использую Debian Squeeze как свою ОС и пытаюсь разработать проекты Ruby on Rails. Для этого я сначала установил несколько пакетов ruby.

Мои рубиновые версии: ruby1.8, ruby1.9.1

Затем я удалил ruby1.8, чтобы сделать ruby1.9.1 моим рубином по умолчанию.

Теперь, если я запустил:

$ 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

Я не знаю, что делать. Пожалуйста, направляйте меня.

4b9b3361

Ответ 1

Для сжатия Debian (6.0):

Сначала обязательно удалите все пакеты ruby ​​и ruby1.8. В противном случае они будут вмешиваться в бинарные файлы/ссылки, которые должны быть настроены для ruby ​​1.9.

Затем установите пакеты ruby ​​1.9. Несмотря на то, что эти пакеты называются "1.9.1", они фактически устанавливают Ruby версии 1.9.2 на сжатие Debian. Виртуальный пакет ruby1.9.1-full установит все пакеты, необходимые для ruby:

sudo aptitude install ruby1.9.1-full

Добавьте альтернативные ссылки для ri и manpage в пакет ri1.9.1. (Эти две строки - одна команда.)

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, связанных двоичных файлов и manpages в пакет ruby1.9.1. (Эти строки - одна команда.)

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 будут включать как 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'.

Проверьте рубин в альтернативной системе:

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'.

Ответ 2

Что я делаю на своих коробках для сжатия, чтобы получить 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

Я запускаю много серверов для производства рельсов, и все остальные пакеты рубинов debian не сломаны, потому что они ретранслируют по двоичному файлу /usr/bin/ruby 1.8.

Это не "истинный способ debian", но по какой-то причине update-alternatives не поддерживает настройку ruby ​​в сжатии.

В Ubuntu 11.10 вы можете просто запустить update-alternatives --config ruby и выбрать желаемую версию

Я также рекомендую вам обновить rubygems, прежде чем вы начнете установку каких-либо камней REALLY_GEM_UPDATE_SYSTEM=true gem update --system

Ответ 3

хотя у меня нет прямого ответа на ваш вопрос, я предлагаю вам попробовать отличный инструмент rvm (ruby version manager) (http://beginrescueend.com/). Это облегчает мою жизнь, когда я пытаюсь играть с рубином на Ubuntu.