Как установить Ruby GEM_HOME и GEM_PATH


10

Я новичок в Linux и использую Linux mint 17.1

Я переустанавливал Linux Mint 20 раз за последние 3 дня для этой проблемы, но не смог ее исправить

Я пытаюсь установить ruby ​​на рельсы, используя rvm, что происходит, если запустить новую установку Linux и попытаться установить gems, ruby ​​и прочее в одном сеансе терминала, который он установил успешно, как только я закрываю сеанс терминала, я не могу получить эти гемы ,

Переустанавливая его более 20 раз за последние 3 дня, я тоже искал в Интернете. Мне сказали поместить переменную среды в /etc/environmentпуть, который я повторял в этом сеансе, и вставил его в /etc/environmentфайл.

даже сейчас я не получаю свои драгоценные камни

когда я набрал, rvm -vя получаю следующие ошибки

Warning: PATH set to RVM ruby but GEM_HOME and/or GEM_PATH not set, see:
    https://github.com/wayneeseguin/rvm/issues/3212

Warning! PATH is not properly set up, $GEM_HOME is not set,
         usually this is caused by shell initialization files - check them for 'PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-2.2.2'.
rvm 1.26.11 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

Я очень начинающий человек, когда дело доходит до работы с терминалом, я могу запустить несколько основных команд для работы с ruby.

я бы хотел знать

  1. Как установить PATH
  2. Как установить GEM_HOME
  3. Как установить GEM_PATH

Ниже мой полный путь

echo $PATH
/home/sharif/.rvm/gems/ruby-2.2.2/bin:/home/sharif/.rvm/gems/ruby-2.2.2@global/bin:/home/sharif/.rvm/rubies/ruby-2.2.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/sharif/.rvm/bin

Мистер @mohsen pahlevanzades Могу ли я спросить, какой смысл удалять эти две строки, если вы не возражаете, рассказывая об этом,
Amjad

Если я правильно помню, Вы написали привет или спасибо,
PersianGulf

Ответы:


18

Похоже, вы хотите команду exportдля установки переменных среды:

export PATH=$PATH':/path/to/add'
export GEM_HOME=$HOME/.gem
export GEM_PATH=$HOME/.gem

Это вступит в силу только для текущего сеанса. Чтобы сделать их более постоянными, добавьте эти строки к себе ~/.bashrc.


3

Обычно это означает, что rvm настроен неправильно. Обычная ошибка в том, что вы не изменили свой .bashrc(или подобный) правильно или не перезагрузили свой терминал.

Вы не должны устанавливать GEM_HOME или GEM_PATH вручную при использовании rvm.

Ты можешь попробовать source ~/.rvm/scripts/rvm и посмотреть, работает ли это.

Также может быть, что вы еще не построили драгоценный камень. Не используйте rvm и sudo. Rvm работает лучше всего, когда установлен в вашей учетной записи и не для всей системы.


Вы также можете добавить source ~/.rvm/scripts/rvmв свой, ~/.bashrcчтобы убедиться, что он загружается каждый раз, когда вы запускаете новую оболочку.
Ниль де Мокрый

2

Вот что я узнал и как я решил эту, казалось бы, распространенную проблему переменных среды GEM_HOME и GEM_PATH, которые не устанавливают ошибку.


Фон

Предполагается, что при установке RVM создаются env-переменные GEM_HOME и GEM_PATH для каждого настраиваемого RVM, и он это делает. Но есть ошибка, очевидно, такая, что в некоторых случаях переменные env устанавливаются только временно, и чтобы установить их снова, вы должны установить их с помощью командной строки. Я нашел обходной путь для сохранения переменных env для RVM.

Временное решение

  1. Найдите активную (в RVM) версию Ruby: на рабочем сервере перейдите в каталог приложения и введите $rvm list. Это приведет к списку установленных версий Ruby и какая из них активна для RVM. Пример ответа:

    rvm rubies ruby-1.9.3-p547 [ x86_64 ] => ruby-1.9.3-p551 [ x86_64 ]

Итак, я знаю, что RVM в настоящее время использует версию ruby-1.9.3-p551. Вам нужна эта информация для следующего шага.

  1. Получите пути для GEM_PATH и GEM_HOME : вы делаете это, выполняя из командной строки $rvm use ruby-1.9.3-p551. Затем еще из командной строки покажите все настройки среды с помощью команды env. Найдите GEM_PATH и GEM_HOME и скопируйте их полностью в рабочую область.

    GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551

  2. Установите переменные среды GEM_HOME и GEM_PATH: теперь установите эти переменные среды в одном из многих файлов профиля. Я хотел сохранить структуру изоляции версий RVM, поэтому я обновил /profile.d/appspecific.sh с помощью следующих двух строк:

    export GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global export GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551


по-видимому, GEM_HOME и GEM_PATH не являются специфичными для RVM?
Бароп

2

Я обнаружил, что .profile загружается последним, и это ставит ~ / .local / bin и ~ / bin впереди пути. Я переместил /etc/profile.d/rvm.sh в ~ / .rvm и в самом конце .profile добавил «source ~ / .rvm / rvm.sh», и ошибка исчезла. Я на Linux Mint 18.3. У меня установлены pyenv, rvm и sdkman, и все они хотят быть последними. Теперь они все работают нормально. :)

Если это общая система, просто переместите rvm.sh куда-нибудь из пути, и любой другой пользователь может получить его, например, из /opt/rvm/rvm.sh.


1

Как упомянуто @coteyr, вы не должны вручную устанавливать GEM_HOME и GEM_PATH при использовании rvm. Если вы проверили переменную среды PATH, запустив $ echo $PATHи включив в нее $ HOME / .rvm / bin, вам нужно убедиться, что ваш терминал выполняет команды в качестве оболочки входа в систему. Например, если вы работаете на машине с Ubuntu, вы открываете свой терминал, затем идете в: меню> Правка> Настройки профиля> Команда и затем выбираете «Выполнить команду как оболочку входа»

Похоже, это старая проблема, с rvmкоторой, как я полагаю, ее нетривиально решить, поскольку она существует уже давно.


1

Для $GEM_PATHзаполнения моей системы (Manjaro / Arch) gemsя добавил в свой .bashrc:

for _entry in /usr/lib/ruby/gems/*; do
  if [[ -d $_entry ]]; then
    # TODO: Add only if not there already
    export GEM_PATH=$_entry:$GEM_PATH
  fi
done
unset _entry
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.