как установить ruby1.9.1 в качестве версии по умолчанию на Debian Squeeze - PullRequest
12 голосов
/ 06 августа 2011

Я использую Debian Squeeze в качестве своей ОС и пытаюсь разработать проекты Ruby on Rails.Для этого я сначала установил несколько пакетов 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

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

Ответы [ 3 ]

12 голосов
/ 24 января 2013

Для Debian squeeze (6.0):

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

Затем установите пакеты ruby ​​1.9. Несмотря на то, что эти пакеты называются «1.9.1», они фактически устанавливают версию 1.9.2 ruby ​​в Debian squeeze. Виртуальный пакет 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, связанных двоичных файлов и man-страниц в пакет 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'.

Проверьте 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'.
9 голосов
/ 16 октября 2011

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

Таким образом, я запускаю множество рабочих серверов rails, и все остальные пакеты ruian не сломаны, потому что они передают в /usr/bin/ruby1.8 бинарный файл.

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

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

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

1 голос
/ 06 августа 2011

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

...