(Обязательно посмотрите раздел Фон в конце этого ответа.)
Моя процедура
1. Удалите все существующий материал Ruby (за исключением Ruby системных файлов, установленных Apple для «основной системы» для macOS).
Это часть процедуры, в которой я менее уверен. Я спросил на superuser.com о "как удалить все возможные старые Ruby cruft" и импортирую все, что там узнал, в эту процедуру. Тем временем я обнаружил несколько вещей, связанных с Ruby (например: ~/.ruby-version
), для которых я не мог легко найти какую-либо документацию / ссылку. Это было мини-приключение. Но вот что я придумала:
a) Товары для домашнего приготовления: brew uninstall ruby ruby-build rbenv
и любые другие Ruby -ориентированные Homebrew пакеты. brew list | grep
может быть полезно для поиска пакетов.
b) rvm uninstall - но, пожалуйста, сначала прочтите примечания о "старых файлах" ниже, чтобы сохранить прежнюю среду rvm для справка.
c) Любые другие деинсталляции (конечно, установки не для Apple-macOS), которые вы можете найти или подумать, возможно, включая инсталляции, которые являются результатом процедур, найденных в https://rvm.io и https://github.com/rbenv/rbenv и любые другие менеджеры версий , которые вы можете найти / придумать.
2. Удалите или переместите старый Ruby файл сброса с $HOME
Я переместил файлы вместо их удаления, в соответствии с следующей процедурой. Обратите внимание, что перемещение ~/.rvm
эффективно выполняет некоторые или все описанные выше процедуры (1b), сохраняя при этом старую среду ~/.rvm
для (возможно, очень полезной) ссылки, например: для перестройки списка установленных камней. Также обратите внимание, что в вашем домашнем каталоге может быть более или менее «удаление файлов».
cd $HOME
mkdir -p .ruby-old-files/2020-04-13
mv .rbenv/ .rvm/ .gem/ .ruby-version .ruby-old-files/2020-04-13/
3. (Пере) установить последнюю, «стабильную» (?) Rbenv / «ruby engine» для этой однострочной команды (это предполагает Homebrew уже установлен ), учитывая rbenv
менеджер версий выбор, как описано в разделе Фон ниже:
brew update
brew install rbenv
Выше не установка «Ruby двигатель» через Homebrew; скорее, он устанавливает rbenv
(через homebrew), который, в свою очередь, устанавливает «Ruby engine» следующим образом:
rbenv install $(rbenv install -l | grep -v - | tail -1)
rbenv global $(rbenv install -l | grep -v - | tail -1)
4. Комментируйте / удаляйте предыдущие ~/.bash_profile
обновления с прошлых Ruby -измов
В итоге я закомментировал все эти строки с прошлых Ruby -приведенных обновлений, которые, как представляется, не используются и / или конфликтует с rbenv
(ваш файл может не иметь ничего подобного):
#export PATH=$PATH:~/.gem/ruby/1.8/bin:/usr/local/opt/ruby/bin
#export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
#[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
# export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)"
5. Добавьте это к ~/.bash_profile
:
eval "$(rbenv init -)"
6. Запустите новое окно MacOS Terminal.app (или iTerm2 или аналогичное).
7. [Необязательно] Переустановите предыдущие драгоценные камни в новой среде.
Я просмотрел свой предыдущий список .rvm
bin:
$ brew install tree
Warning: tree 1.8.0 is already installed and up-to-date
To reinstall 1.8.0, run `brew reinstall tree`
$ cd
$ tree -a .ruby-old-files/2020-04-13/.rvm/gems/ruby-2.2.1/bin/ -C | less
.ruby-old-files/2020-04-13/.rvm/gems/ruby-2.2.1/bin/
├── 3llo
├── _guard-core
├── asciidoctor
├── asciidoctor-safe
├── bundle
├── bundler
├── coderay
├── console
├── executable-hooks-uninstaller
├── github-markup
├── guard
├── imap-backup
├── listen
├── nokogiri
├── pry
├── rake
├── rdoc
├── ri
├── ruby_executable_hooks
├── setup
└── thor
0 directories, 21 files
$
(возможно, есть другие места, где можно найти существующие gems, как и в случае с Ruby, можно разбросать повсюду со многими "рубинами", как их называет сообщество Ruby), и запускает gem install [gem-package]
для каждого пакета, который я хотел повторно использовать в своем новом (clean, fre sh и вменяемая) Ruby среда. Я провел несколько начальных asciidoctor
тестов в довольно сложной библиотеке документов моей команды asciidoctor, и все сначала кажется хорошим.
Мы бы предпочли, чтобы существовал какой-то значительный Ruby -набор «самодиагностики» (более простая иллюстрация: brew doctor
), чтобы дать пользователю гораздо больше уверенности в том, что его "Ruby двигатель" оптимально функционирует. Увы, пока я не вижу такой вещи для Ruby.
С этого момента, продвигаясь вперед, я могу обрести большую уверенность в построении нескольких "рубинов" через rbenv
и только rbenv
. Раньше я управлял несколькими рубинами с помощью нескольких установщиков / менеджеров версий (Homebrew, rvm и rbenv), что могло быть причиной многих проблем, возможно, по точке Тодда .
Справочная информация
Ruby имеет небольшую сложность и, возможно, работает намного лучше с диспетчером версий . Я нахожу это все немного необычным, по крайней мере, из моего десятилетнего опыта swdev + sysadmin. Я, конечно, вижу, как все эти механизмы могут быть очень мощными. Сейчас я просто пытаюсь заставить мою Ruby платформу работать .
Из того, что я могу сказать, не существует "одного стандартного способа" установки и запуска и стандартного каталог мест для Ruby в macOS. Это означает, что не существует «одного стандартного способа» удаления , и поэтому необходимо, если они (часто очень неосознанно , как я) установили много разных версий Ruby ( Я думаю, что назывался «Рубинами»?) В течение многих лет (десятилетий?) Во многих различных файлах / каталогах, контролируемых несколькими различными «менеджерами версий» (я думаю, подробнее о менеджерах версий в данный момент). ie, я считаю, что мне нужно "охотиться и клевать" за все исторические пути, которые прошли Ruby installs / version_managers Возможно, файлы / каталоги остались в разных областях.
Примечание это может произойти, если у вас есть образ macOS, который прожил много лет, а в моем случае был клонирован во многих поколениях MacBook. Для тех, кто на неделю ходит в загрузочный лагерь Ruby и устанавливает его в чистой системе, все должно работать просто замечательно. Для кого-то вроде меня, который был инженером / мгр на протяжении десятилетий и, возможно, имел всевозможные Ruby -измы, лежащие в основе его десятилетнего образа macOS (как указано многими многими приложениями / руководствами на основе Ruby о том, как установить вещи, не зная, что многие из этих процедур фактически конфликтуют друг с другом), это может быть совсем другая история.
Платформе Ruby, очевидно, требуется нечто, называемое Диспетчер версий для запуска Ruby платформы (интерпретатор, компилятор, движок, как бы он ни назывался). Я выбрал rbenv
( на основе этой ссылки ) менеджер версий для "установки" части моей процедуры после удаления / перемещения всех старых вещей.
Если это еще не очевидно, (предположительно?) лучше избегать одновременной установки и запуска нескольких менеджеров версий.
Варианты установки
Похоже, есть несколько способов установить Ruby «ядро / платформу ядра» (мой синтаксис, возможно, используемый только мной) в macOS, с тремя опциями, на которые я часто ссылаюсь, которые указаны ниже. (Обратите внимание, что есть множество других менеджеров версий на выбор, не перечисленных ниже.) Я выбрал rbenv
на основе этой ссылки .
- через
rbenv
- через
rvm
- через Homebrew
(1.) И (2.) выше - механизмы, которые можно установить Ruby, и эти механизмы могут быть установлены через Homebrew. Но # 1 и # 2 не будут устанавливать Ruby через Homebrew. Это может сбивать с толку.
Похоже, что (1.) и (2.) также позволяют одновременно запускать несколько версий Ruby. (3.) не может. Это может быть полезно из-за проблем совместимости между версиями и гемами / приложениями с агрессивным (?) Движением Ruby, которое иногда происходит за счет обратной совместимости. (Я предполагаю, что здесь нет другого хорошего объяснения; сообщество, пожалуйста, прокомментируйте.)
Подход "удалить все старые Ruby движки и файлы" может быть экстремальным. Мой опыт: история Ruby - беспорядок, и за годы / десятилетия он оставил вокруг себя всякие грязные отклонения (в моем домашнем каталоге). Для меня нет ничего сложного в восстановлении драгоценных камней вручную - в моей системе их не так много. И, сохраняя вокруг уже существующие файлы Ruby -окружения, я (надеюсь) прикрываюсь, если мне когда-нибудь понадобится вернуть или перестроить материал. И сейчас все выглядит намного более "чистым и вменяемым", когда мне кажется, что я удалил всю старую грязь.
Еще больше фона
Моя команда и я только пользователи Ruby приложений, а не Ruby разработчиков, и не имеют большого опыта в сфере Ruby. Мы просто хотим устанавливать, использовать и обслуживать такие приложения, как Asciidoctor без необходимости углубляться во все эти вещи Ruby. Все работало хорошо в течение нескольких лет, а затем все «навороты» накапливались и начали ломать вещи. Когда я разобрал все это и правильно переустановил (см. Выше) - как только я наконец понял, как все Ruby входы и выходы работали - все снова заработало. Я считаю, что я, как простой пользователь Ruby -приложения, не должен был бы go к этому уровню усилий только для того, чтобы заставить Ruby приложение работать. Одним словом: не должно быть так сложно. Отсюда и природа моих комментариев о сложности.
Кроме того, у меня был плохой день, когда я впервые опубликовал этот вопрос, и излишне раздражал нескольких членов сообщества, которые изо всех сил пытались помочь - и снова мои извинения, это было совсем плохо - с тех пор я был назван парнем, который «любит много жаловаться». И я полностью заслуживаю того, чтобы этот ярлык был неуместным в нескольких моих комментариях. Опять же, я прошу прощения.
Кроме того: мои Ruby проблемы все еще существуют, хотят ли люди здесь отрицать это или просто обвиняют меня в проблемах за то, что я скуп. Несмотря на это: я не разочарован людьми, пытающимися помочь; Я разочарован тем, что платформа Ruby не поддерживает мой общий опыт.
Пожалуйста, обратите внимание Полезный ответ TamerB .