Як я можу перейти на ruby ​​1.9.3, встановлений за допомогою Homebrew?


82

Я встановив ruby ​​1.9.3 за допомогою hombrew

варити встановити рубін

Але за замовчуванням 1.8.7 все ще використовується. Як я можу переключити osx на використання 1.9.3 як рубіну за замовчуванням?

Відповіді:


90

Я пропоную вам поглянути на rvm . Потім ви можете встановити його за замовчуванням за допомогоюrvm use 1.9.3 --default

Але якщо ви задоволені встановленням домашньої писемності.

Потім просто змініть перевагу каталогів у PATH

Ось мої / etc / paths

# homebrews should always take precedence
/usr/local/bin

# the default stack
/usr/bin
/bin
/usr/sbin
/sbin

Це важливо в основному для домашньої мови, інакше замість версії вариння буде використана системна версія git, ruby, pg_admin, ...

якщо ви скажете, що which -a rubyви побачите всі встановлені рубіни та перевагу вPATH

напр.

$ which -a ruby
/Users/matthew/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
/Users/matthew/.rvm/bin/ruby
/usr/bin/ruby


ОНОВЛЕННЯ: Зараз я не думаю, що вам слід змінюватися /etc/paths

Натомість вам потрібно перевірити, що з .profile, .bashrcабо .bash_loginзавантажується у вашу оболонку, і просто додайте /usr/local/binдо свого шляху.

Для мене я маю лише .profile. Ви можете створити цей файл, якщо жоден з цих файлів ще не існує у вашому домашньому каталозі.

# homebrews should always take precedence
export PATH=/usr/local/bin:$PATH

1
Нарешті, я вибираю rbenv, який раніше також використовувався rvm.
Олексій Захаров

круто. Я пропоную вам все-таки внести зміни до своїх / etc / paths. Раніше я отримував дивні помилки (наприклад, я б brew upgrade git, але версія не змінилася. Виявляється, я ніколи не використовував варильну версію)
Метью Руді,

29
Дякуємо, що надали фактичну відповідь, а не просто сказали "використовувати rvm". Не кожен може використовувати RVM, і я ненавиджу, коли відповідь у верхній частині просто каже OP зробити щось, чого вони не запитували, як це зробити.
брикер


У мене були проблеми з компіляцією ruby ​​за допомогою rvm, тому я в кінцевому підсумку пішов з rbenv, оскільки він працював без проблем.
Pellet

73

КОРОТКА ВІДПОВІДЬ:

після встановлення ruby ​​за допомогою homebrew просто зробіть це:

brew link --overwrite ruby

і перезапустіть або знову відкрийте свій термінал  


ДОВГА ВІДПОВІДЬ

Тож я зробив звичайну установку рубіну за допомогою домашньої писемності

brew install ruby

що встановив нормально, АЛЕ він все ще використовував стандартний рубін системи. що я перевірив, виконавши:

which ruby 
#/usr/bin/ruby

Тож, згідно з пропозицією Метью Руді, я перевірив порядок моїх / etc / path, і все було добре.

Тоді я вирішив зробити:

which -a ruby
#/usr/bin/ruby
#usr/local/bin/ruby

так що нічого не було порушено як таке. спробував перевстановити ruby ​​знову за допомогою методу homebrew, і тоді я знайшов його.

Згаданий домоволодіння:

Warning: ruby-2.3.1 already installed, it's just not linked

так довелося зробити:

brew link --overwrite ruby

13
Не забудьте перезапустити свій екземпляр iTerm, інакше ruby --versionпокаже вам застарілу версію.
dialex

1
Вам насправді потрібно перезапустити? чи просто hash -r?
dwanderson

1
FYI, Homebrew тепер відмовляється робити це. Для мене з Fish він запропонував: echo 'set -g fish_user_paths "/ usr / local / opt / ruby ​​/ bin" $ fish_user_paths' >> ~ / .config / fish / config.fish
Atem18

46

Якщо ви хочете використовувати homebrew для встановлення 1.9.3, ви можете виконати такі дії:

$ brew update
$ brew install rbenv
$ brew install ruby-build

Після встановлення rbenv та ruby-build можна виконати таку команду, щоб встановити Ruby 1.9.3.

$ rbenv install 1.9.3-p125

Тепер, якщо ви хочете використовувати 1.9.3 за замовчуванням, ви можете виконати таку команду:

$ rbenv global 1.9.3-p125

Зараз посилання на джерело мертве
Кріс Браун

4
Не працює в OS X 10.11+. Система продовжує використовувати стару версію, а не ту, яку я встановив / встановив за замовчуванням з rbenv install 1.9.3-p125 / rbenv global 1.9.3-p125
Андрій Константинов

"rbenv global 1.9.3-p125" - цей рядок врятував мені ніч. Спасибі!
Андрій Ковальчук

Здається, це не працює для мене. Мені довелося помістити шлях до рубінового exec у моєму $ PATH, перш ніж він запрацював.
mr-sk

6

У мене була подібна ситуація. Я встановив ruby ​​за допомогою Homebrew. which -a rubyдав мені такий результат:

#usr/local/bin/ruby
#/usr/bin/ruby

Що означає, що слід було використовувати нещодавно встановлену версію, але ruby --versionвсе-таки повернути стару версію системи.

Я вийшов з терміналу (Cmd + Q) і після перезапуску ruby --versionповернув правильну версію. Тож переконайтеся, що ви перезапустили термінал після встановлення, перш ніж спробувати будь-які інші (потенційно непотрібні) виправлення.


4

КОРОТКО: Зверніть увагу, на що ви хочете це змінити.

Якщо ви працюєте на OS X і намагаєтесь використовувати Ruby для чогось на кшталт Jekyll, тоді не використовуйте доморощену мову, тому що це те, що Apple використовує для Ruby, і це може бути непогано використовувати, якщо ви не впевнені, що ви робити. Натомість використовуйте rbenv або RVM.

МЕНШЕ КОРОТКО: Я намагався перейти з версії за замовчуванням на оновлену версію (з 2.0), щоб використовувати Jekyll, оскільки для цього потрібна була версія Ruby 2.2.5 і вище. Я оновив його, і встановили версію 2.5, але коли я встановив галочку "ruby -v", вона все ще була 2.0. Після того, як нарешті я зміг змінити версію за замовчуванням, я не зміг встановити потрібний пакет, оскільки не мав дозволу на запис. Наприклад, якщо ви натрапили на щось подібне, то, мабуть, у вас така сама проблема

$ gem install jekyll bundler
ERROR:  While executing gem ... (Gem::FilePermissionError)    
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

0

В OSX ви можете змінити шлях, використовуючи:

sudo nano / etc / paths

А потім додайте шлях або змініть порядок.


-2

Як альтернативний підхід для тих, хто шукає відповіді на це, ви можете встановити псевдонім у своєму .bash_profile, наприклад

ruby="/usr/local/bin/ruby"

ось як я обійшов проблему


так, проблема в цьому (і, швидше за все, в причині негативних голосів) полягає в тому, що це працює лише в тому випадку, якщо ви хочете вручну викликати ruby ​​і не використовувати систему в певній версії
David Seek
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.