rbenv не меняет версию ruby
Я установил rbenv в соответствии с инструкциями github. Я использую OSX, но я попробовал это на виртуальной машине Ubuntu 12.04 и получил те же результаты. Вот что я получаю в своем терминале, когда пытаюсь сменить версию ruby:
rbenv versions
* 1.9.3-p0 (set by /Users/user/.rbenv/version)
1.9.3-p125
rbenv global
1.9.3-p0
rbenv rehash
ruby -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]
which ruby
/usr/bin/ruby
У кого-нибудь есть идеи относительно того, почему rbenv не переключает версию ruby, как она думает? Также в локальном каталоге нет файла.rbenv, из-за которого версия ruby по умолчанию будет иметь версию 1.8.7.
rbenv local
rbenv: no local version configured for this directory
32 ответа
Убедитесь, что PATH содержит $HOME/.rbenv/shims и $HOME/.rbenv/bin
$ env | grep PATH
Также убедитесь, что в вашем ~/.bash_profile есть следующее при использовании bash или ~/.zshenv при использовании zsh
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
ПРИМЕЧАНИЕ. Убедитесь, что это последний параметр в вашем ~/.bash_profile . Я столкнулся с проблемой, когда я установил программу, которая обновила мой.bash_profile и сбросила PATH.
Я исправил это, добавив следующее в мой ~/.bash_profile:
#PATH for rbenv
export PATH="$HOME/.rbenv/shims:$PATH"
Это то, что задокументировано на https://github.com/sstephenson/rbenv.
Из того, что я могу сказать, нет каталога ~/.rbenv/bin, о котором упоминал в сообщении @rodowi.
Это может быть старый вопрос, но Google привел меня сюда и ради потомства подумал, что я поделюсь.
Моя проблема сохранилась после многих из рекомендуемых решений выше. Как и OP, я установил rbenv, а затем версию ruby, но мой ноутбук по умолчанию подключился к системе. Что я упустил из виду, так это то, что когда я бежал:
[~/.rbenv] $ rbenv versions
* system (set by /Users/alphadogg/.rbenv/version)
2.0.0-p247
IOW, это было все еще по умолчанию для системы. Быстрый
[~/.rbenv] $ rbenv local 2.0.0-p247
переключил его на новую версию.
Первый шаг - выяснить, какой рубин вызывается:which ruby
Ваша система говорит:/usr/bin/ruby
Это НЕ оболочка, используемая rbenv, которая (на MacOS) должна выглядеть так:/Users/<username>/.rbenv/shims/ruby
На самом деле shim - это скрипт, который действует как перенаправление на установленную вами версию ruby.rbenv global 1.9.3
rbenv local --unset
rbenv shell --unset
Я рекомендую, чтобы при устранении неполадок вы сбрасывали конкретную "локальную" версию проекта и конкретную версию "оболочки" для оболочки и просто тестировали, используя настройку "глобальной" версии, которая определяется в виде простого текстового файла в ~/.rbenv/verion, который просто будет номер версии "1.9.3" в вашем случае. Вы можете выполнить "ls -laG" в корне папки вашего проекта (не домашней папки), чтобы убедиться, что там больше нет файла ".ruby-version".
Вы можете использовать "версии rbenv", чтобы определить, какая версия rbenv установлена для использования (а также местоположение и имя файла, который ее устанавливает).
rbenv versions
НИ ОДНОГО ИЗ ТОГО, ЧТО: пока вы не установите правильный путь.
Используйте это, чтобы убедиться, что ваш *MacOS будет подчиняться вам:eval "$(rbenv init -)"
С последующим:which ruby
Чтобы убедиться, что это выглядит так: /Users//.rbenv/shims/ruby
Затем добавьте строку в свой профиль, чтобы она запускалась каждый раз, когда вы открываете новое окно терминала: ~/.bash_profile
eval "$(rbenv init -)"
Есть другие способы изменить путь, не стесняйтесь заменить любой из них вместо запуска init rbenv.
ПРИМЕЧАНИЕ: переустановите Rails с помощью:gem install rails
Если вы пытались запустить Ruby on Rails, то сначала нужно, чтобы все это работало, а затем снова установить гем rails. Предыдущая версия Rails будет использовать жестко заданный путь к неправильному рубину, и некоторые другие вещи будут в неправильном месте, поэтому просто установите гем снова.
PS Если ваш MacOS не подчиняется вам (* упомянутый выше), то вам, возможно, придется найти другой способ изменить свой путь, но это вряд ли будет проблемой, потому что "Mac просто работают";)
У меня возникла эта проблема при настройке Ruby с помощью rbenv на MacBook Pro Catalina OS.
Вот как я исправил:
Сначала запустите команду ниже, чтобы инициализировать rbenv:
rbenv init
Это даст вам инструкции о том, что делать. В основном вам нужно будет открыть
~/.zshrc
файл и добавьте это в файл
eval "$(rbenv init -)"
. Вы можете сделать это, выполнив следующую команду:
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
Затем выполните команду ниже, чтобы установить версию Ruby:
rbenv local your-desired-ruby-version
ИЛИ ЖЕ
rbenv shell your-desired-ruby-version
В моем случае моя желаемая версия Ruby была 3.0.1, поэтому она была:
rbenv local 3.0.1
Когда вы закончите, выйдите из терминала с помощью Command + Q, а затем откройте новый терминал, на этот раз при выполнении команды:
ruby -v
rbenv versions
Вы увидите, что желаемая версия Ruby уже настроена для вас.
Это все.
надеюсь, это поможет
В моем случае изменение ~/.zshenv
не работал. Я должен был сделать изменения внутри ~/.zshrc
,
Я только добавил:
# Include rbenv for ZSH
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
на вершине ~/.zshrc
перезапустил оболочку и вышел из системы.
Проверьте, сработало ли это:
➜ ~ rbenv install 2.4.0
➜ ~ rbenv global 2.4.0
➜ ~ rbenv global
2.4.0
➜ ~ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]
Обновление 2023 (Macbook Ventura+)
Даже если вы установили, ваш компьютер все равно может обслуживать рубиновую версию по умолчанию. Чтобы исправить это, просто запустите следующее:
rbenv init
Это может дать такой вывод:
# Load rbenv automatically by appending
# the following to ~/.zshrc:
eval "$(rbenv init - zsh)"
Просто откройте файл:
sudo nano ~/.zshrc
(Или вы также можете открыть этот файл в любом другом текстовом редакторе)
Добавьте эту строку:
eval "$(rbenv init - zsh)"
Сохраните файл (если используется sudo nano, вы можете сделать это так:)CTRL + X
затемY
затемEnter
(Для Mac)
Теперь обновите свой.zshrc
профиль такой:
source ~/.zshrc
Теперь введитеruby --version
, это должно дать вам рубиновую версию, предоставленнуюrbenv
.
Запустите эту команду
Добавьте rbenv в bash, чтобы он загружался каждый раз, когда вы открываете терминал
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile
это решит вашу проблему
Я только что нашел эту же проблему. Что я сделал, так это удалил rbenv (через homebrew) и переустановил его. Я также добавил
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
в ~/.bash_profile, когда я переустанавливал rbenv. Работает отлично сейчас.
Если вы используете Bash, перейдите к
~/.bash_profile
и добавьте следующую строку (если ее там еще нет)
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
Если вы используете Zsh, перейдите к
~/.zshrc
и добавьте ту же строку кода в конец файла.zshrc.
Затем просто перезапустите свой терминал, и теперь все должно быть в порядке.
Я пробовал каждое решение, но ничего не помогло мне. Даже я указывал путь в файле.
В моем случае я используюMacBook Pro M2
с macOSVentura 13.2
. И я используюReact Native 0.71.2
, который нуждался в Руби2.7.6
версия.
Я просто поместил следующий код в.zprofile
вместо.zshrc
, и это сработало:
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init - zsh)"
У меня была такая же проблема, но вызванная Homebrew:
[~]$ rbenv version
2.3.0 (set by /Users/user/.rbenv/version)
[~]$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]
[~]$ which ruby
/usr/local/bin/ruby
Каким-то образом я также установил Ruby через Homebrew, и путь Homebrew был впереди пути rbenv в моем $PATH
, Бег brew uninstall ruby
исправил это для меня.
rbenv help shell
"Устанавливает специфичную для оболочки версию Ruby, устанавливая переменную окружения 'RBENV_VERSION' в вашей оболочке. Эта версия переопределяет локальные версии приложений и глобальную версию. Должна быть строкой, соответствующей версии Ruby, известной системе rbenv. Строка специальной версии ' 'будет использовать вашу стандартную систему Ruby. Запустите версии rbenv' для получения списка доступных версий Ruby. "
Если rbenv был установлен правильно, ruby -v будет соответствовать
rbenv shell 1.9.3-p125
Бежать:
rbenv init
После того, как я запустил это, когда я установил свою локальную версию rbenv:
rbenv local 2.4.0
тогда мой ruby -v
и мой rbenv local
версии совпали.
Примечание. Возможно, вы также захотите выйти из каталога, в котором вы находитесь, и затем вернуться в него. Я заметил, что это было необходимо для того, чтобы все заработало.
Для пользователя раковины рыбы
set --universal fish_user_paths $fish_user_paths ~/.rbenv/shims/
Как по мне самый простой способ использования rbenv
вместе с zsh
добавляет rbenv
в плагин раздел .zshrc
конфигурации. В моем случае это выглядит примерно так:
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git bower rails ruby rbenv gulp npm node nvm sublime)
После этого не возникает проблем при установке, переключении, использовании версий ruby с помощью rbenv
,
Не забудьте перезапустить сеанс терминала после внесенных изменений.
В принятом ответе предлагается добавить следующее:
export PATH="$HOME/.rbenv/bin:$PATH"
Это не будет работать в Mac OSX, на которую ссылается OP. Фактически, если вы установите rbenv черезbrew install rbenv
, который на самом деле является единственным методом установки в Mac OSX, поскольку curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash
будет НЕОБХОДИМ в OSX, тогда исполняемый файл rbenv будет установлен в:
$ which rbenv
/usr/local/bin/rbenv
Однако даже в OSX корень rbenv останется в каталоге $HOME:
~ viggy$ rbenv root
/Users/viggy/.rbenv
Что это значит? Это означает, что когда вы устанавливаете рубины, они будут установлены в заданном домашнем каталоге под.rbenv:
$ rbenv install 2.6.0
$ ls ~/.rbenv/versions
2.6.0
Теперь установка brew выполнила некоторую работу, которую вам придется выполнить вручную в Linux. Например, в Linux вам нужно будет установить ruby-build вручную как плагин:
$ mkdir -p "$(rvbenv root)/plugins"
$ git clone https://github.com/rbenv/ruby-build.git "(rbenv root)"/plugins/ruby-build
Это уже сделано при установке homebrew. Есть один важный шаг, который необходимо выполнить при установке homebrew, как и при установке Linux. Вы должны добавить на свой путь прокладки rbenv. Для этого, когда ваша оболочка запускается, вы должны выполнить следующую команду (которая, в свою очередь, добавит прокладки rbenv в начало вашего $PATH):
$ vim ~/.bash_profile
eval "$(rbenv init -)"
$ source ~/.bash_profile
Теперь, когда ты бежишь echo $PATH
, вы увидите прокладки rbenv:
$ echo $PATH
/Users/viggy/.rbenv/shims:
Теперь проверьте свою версию ruby, и она будет отражать установленный rbenv ruby:
ruby -v
ruby 2.6.0p0
Добавление следующего к.bashrc
работает для меня -
export PATH="$HOME/.rbenv/shims:$PATH"
Убедитесь, что последняя строка вашего .bash_profile
является:
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
Я пришел к той же проблеме. Исправлено, запустив команду "rbenv global" с "sudo". Я думаю, что это была проблема с разрешением.
обновление: я наконец нашел решение. На моем Mac была одна и та же файловая "версия", которая находится в "/usr/local/Cellar/rbenv/0.3.0/". Я думаю, что это было случайно создано случайно. Вы должны удалить это.
Когда у меня появились эти симптомы, проблема заключалась в том, что установка не удалась на полпути для новой версии Ruby, на которую я пытался перейти, без моего ведома. Исправление было удалить и переустановить его.
(Это означало, что хотя ruby 1.9.3 был обнаружен в списке доступных версий rbenv, у него не было исполняемого файла на пути, по которому rbenv предполагал, что это произойдет. Так как rbenv пытается изменить вашу версию ruby, просто добавив местоположение к ваш путь, если на самом деле нет ничего в месте, где он находится, ваша ОС с радостью продолжит поиск пути по умолчанию и найдет версию вашей системы, в моем случае, как вопрос 1.8.7.)
Это случилось со мной сразу после переустановки rbenv
, Видимо у меня был .ruby-version
файл в моем домашнем каталоге, указав версию, которая больше не существует. Как только я удалил файл, все заработало.
Пользователи Linux / Ubuntu Шаг 1:
$ rbenv versions
system
2.6.0
* 2.7.0 (set by /home/User/Documents/sample-app/.ruby-version) #Yours will be different
2.7.2
Шаг 2:
$ nano /home/User/Documents/sample-app/.ruby-version
Шаг 3:
$ ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]
КАК УСТАНОВИТЬ RUBY RBENV Как и многие другие инструменты, мы обратимся к популярному менеджеру пакетов Homebrew для macOS. Запустите следующую команду в своем терминале:
brew install rbenv ruby-build
Как только все будет установлено, нам нужно указать rbenv настроить нашу оболочку, поэтому мы используем версию среды выполнения Ruby, которую мы специально установили с помощью rbenv всякий раз, когда мы открываем новое окно терминала для ввода команд в приглашении (в отличие от предустановленной версии Ruby 2.6.8 на macOS).
Чтобы настроить rbenv с вашей оболочкой, выполните следующую команду:
rbenv init
Следуйте инструкциям на экране, если с вашей стороны требуется дополнительная настройка. Вас могут попросить вставить команду в конфигурацию вашей оболочки. Если вы работаете в macOS и не меняли стандартную оболочку Z Shell (ZSH), убедитесь, что вы добавили следующую строку кода в начало файла ~/.zshrc:
eval "$(rbenv init - zsh)"
Процесс установки rbenv завершен. Возможно, вы захотите запустить некоторые диагностические проверки, чтобы убедиться, что все настроено правильно. Если это так, вы можете запустить инструмент rbenv-doctor, который предоставляет проект rbenv GitHub:
Откройте новое окно терминала, чтобы загрузить новую среду rbenv. Выполните команду:curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | Предупреждение zsh: к этой команде нельзя относиться легкомысленно, так как вы передаете команды в оболочку среды разработки, которые происходят из общедоступного репозитория GitHub с открытым исходным кодом. Возможно, что злоумышленник подделал исходный код, поэтому вам настоятельно рекомендуется тщательно просмотреть код, прежде чем запускать эту команду.
Как вы используете rbenv для установки новой версии Ruby? Поздравляем с созданием собственной виртуальной среды Ruby! Теперь, когда у вас есть функциональная установка rbenv, мы можем использовать ее для полного управления вашими версиями Ruby.
Для начала вы хотите указать, какие версии Ruby доступны для установки, чтобы вы могли выбрать последний выпуск Ruby или, возможно, конкретную версию, которую вы ищете. Чтобы использовать rbenv для получения списка всех версий Ruby, выполните следующую команду:
rbenv install -l
Результатом которого было:
2.6.102.7.63.0.43.1.2
Показаны только последние стабильные версии для каждой реализации Ruby. Используйте 'rbenv install --list-all / -L', чтобы показать все локальные версии. Затем вы можете приступить к установке одной из этих версий Ruby. Давайте используем rbenv для установки Ruby версии 3.1.2:
rbenv install 3.1.2
Затем команда начнет извлекать соответствующие файлы исходного кода для извлечения, компиляции, а затем установки версии среды выполнения Ruby 3.1.2, доступной для вашей оболочки.
Когда вы закончите его установку, вы должны установить его в качестве выбранной версии при каждом запуске вашей оболочки. Для этого вам нужно запустить:
rbenv global 3.1.2
Наконец, вы можете убедиться, что это работает должным образом, запустив ruby --version в вашей оболочке, которая должна выдать аналогичный результат:
Есть много вводящих в заблуждение ответов, которые работают. Я подумал, что стоит упомянуть шаги изrbenv
ПРОЧИТАЙТЕ.
-
$ brew install rbenv
-
$ rbenv init
и следуйте инструкциям, которые он вам дает. Вот что у меня получилось:
~ $ rbenv init
# Load rbenv automatically by appending
# the following to ~/.bash_profile:
eval "$(rbenv init -)"
Я обновил свой
~/.bash_profile
...
- Закройте терминал и откройте его снова
- Убедитесь, что он работает правильно, запустив:
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
- Теперь просто установите нужную версию, выполнив:
rbenv install <version>
Странно, но версия rbenv не установила файл.rbenv. Проверьте с помощью: ls -ltra -> чтобы увидеть, что был написан rbenv.
Вы могли бы попробовать использовать Chruby? Chruby не полагается на прокладки, а только изменяет PATH
, GEM_HOME
, GEM_PATH
,
Я забыл удалить rvm перед установкой rbenv. Я удалил rvm и переустановил rbenv, но система все еще не использовала версию Ruby, обозначенную rbenv как глобальная. Я попытался закрыть Терминал, но это сработало только после перезапуска всей машины.
Все остальные ответы здесь дают хорошие советы для различных ситуаций, но есть более простой способ.
Документы rbenv указывают нам на диагностический инструмент rbenv-doctor, который быстро проверит все эти потенциальные ошибки в вашей системе:
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Когда все будет хорошо, вы увидите это:
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash <aws:hd-pmp-developer>
Checking for `rbenv' in PATH: /usr/local/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: /usr/local/bin/rbenv-install (ruby-build 20201005)
Counting installed Ruby versions: 1 versions
Checking RubyGems settings: OK
Auditing installed plugins: OK
Теперь, если мы нарушим одно из этих ожиданий (например, удалим rbenv-install), инструмент укажет нам прямо на проблему со ссылкой на то, как ее исправить:
$ mv /usr/local/bin/rbenv-install rbenv-install-GONE
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Checking for `rbenv' in PATH: /usr/local/bin/rbenv
Checking for rbenv shims in PATH: OK
===> Checking `rbenv install' support: not found <===
Unless you plan to add Ruby versions manually, you should install ruby-build.
Please refer to https://github.com/rbenv/ruby-build#installation
Counting installed Ruby versions: 1 versions
Checking RubyGems settings: OK
Auditing installed plugins: OK
Добавление eval "$ (rbenv init -)" в .bash_profile на моем Mac решило эту проблему.rbenv local ruby -v дал набор