Верно ли, что тот факт, что /usr/bin/ruby
существует, но brew upgrade ruby
дает Error: ruby not installed
, подразумевает, что Ruby установлен, но был установлен с помощью инструмента, отличного от Homebrew?
Да.
Если так, как я могу выяснить, как / где Ruby был установлен в моей системе?
Он поставляется с OS X (на данный момент ). Apple планирует отказаться от этого, см. здесь .
Как мне подойти к обновлению Ruby?
Это основано на мнении, но Я бы справился с этим с помощью brew, а это значит, что вам нужно brew install ruby
. Чтобы убедиться, что вы используете brew install
ed ruby вместо системы ruby, вы можете добавить что-то вроде добавления:
export PATH=/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/2.6.0/bin:${PATH}
к вашему ~/.bash_profile
. В частности, вы захотите добавить (a) путь, в котором brew
будет предоставлять ruby и все связанные с ним исполняемые файлы, и (b) путь, где будут существовать исполняемые файлы, установленные через gem
.
Для (а), посмотрите на вывод brew info ruby
, например, я получаю:
...
If you need to have ruby first in your PATH run:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile
...
Отсюда добавление /usr/local/opt/ruby/bin
к пути. Если вы ls
этот каталог, вы увидите не только исполняемый файл ruby
, но также irb
, gem
, bundle
, rake
и некоторые другие. Поэтому, когда вы запустите bundle install
или gem install
, это то, что привыкнет.
Для (b) вам нужно знать, куда помещаются установленные исполняемые файлы gem. В этом вам поможет команда gem env
:
$ gem env | grep 'EXECUTABLE DIRECTORY'
- EXECUTABLE DIRECTORY: /usr/local/lib/ruby/gems/2.6.0/bin
Отсюда добавление второго пути, /usr/local/lib/ruby/gems/2.6.0/bin
к моему $PATH
в моем ~/.bash_profile
.