Як встановити Ruby GEM_HOME та GEM_PATH


10

Я НОВИНИЙ користувач Linux і використовую монетний двір Linux 17.1

Протягом останніх 3 днів я перевстановив Linux Mint протягом останніх 3 днів, але не зміг його виправити

Я намагаюся встановити рубін на рейках, використовуючи rvm, що сталося, якщо запустити нову інсталяцію Linux і спробувати встановити дорогоцінні камені та рубін та інше за один термінальний сеанс, він встановлений успішно, як тільки я закриваю сеанс терміналу, я не можу отримати ці дорогоцінні камені .

Перевстановивши його протягом 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/]

Я дуже новачок, коли справа доходить до терміналу, я можу виконати кілька основних команд для роботи з рубіном.

Я хотів би знати

  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

Якщо я пам’ятаю правильно, Ви написали привітання чи подяку,
Персидський затока

Відповіді:


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 повинна створити GEM_HOME та GEM_PATH env vars для кожного встановленого RVM, і він це робить. Але помилка, очевидно, така, що в деяких випадках env vars встановлюються лише тимчасово, і щоб їх знову встановити, потрібно встановити їх за допомогою командного рядка. Я знайшов рішення, щоб змусити навколишнє середовище зберігати 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. Тоді ще з рядка comman відображаються всі налаштування середовища за допомогою команди 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.