Rails: Ваша учетная запись пользователя не может быть установлена в систему RubyGems

Я запускаю команду

bundle install

в папке проекта. В некоторых папках проекта это приведет к ошибке, а в других папках проектов это не приведет к ошибке. Ошибка:

Учетная запись пользователя не может быть установлена ​​в систему RubyGems

Я знаю, что это можно исправить, следуя рекомендациям:

bundle install --path vendor/bundle

Мой вопрос: почему поведение непоследовательно?

Ответ 1

В моем случае я решил сделать только то, что предлагает сообщение об ошибке:

Your user account isn't allowed to install to the system RubyGems.
  You can cancel this installation and run:

      bundle install --path vendor/bundle

  to install the gems into ./vendor/bundle/

Итак, вместо:

bundle install

Я побежал:

bundle install --path vendor/bundle

Это было решением для этого парня.

Недостатком этого решения является то, что оно создает папку vendor внутри текущей папки, которую можно добавить в .gitignore если она предназначена для распространения приложения через Git.

Ответ 2

Обычно, если вы используете RVM, rbenv или chruby для установки Ruby, все драгоценные камни будут установлены в вашей домашней папке в разделе ~/.rbenv/ruby-version/...

Если вы используете свою систему Ruby, хотя (тот, который установлен по умолчанию), камни устанавливаются рядом с ним в том месте, к которому у вас нет доступа без sudo.

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

Ответ 3

Хорошее исправление rbenv

  • Избегает судо
  • Избегает установки на поставщика/комплекта

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

Одна из вещей, которая меня прояснила, заключалась в том, что в самой командной строке я мог нормально устанавливать гемы и не получать сообщение об ошибке. Я делал это какое-то время, пока не решил навсегда решить проблему, как показано ниже:

Чтобы это исправить я сделал:

rbenv local 2.5.0 # Make sure I'm using a local version that exists
gem list | grep bundler # Note no output! Need to fix that!
gem install bundler
rbenv rehash
bundle (within my project that has a Gem file)

Ответ 4

Использование RVM:

Вы должны установить rvm для своего одиночного пользователя (обычный пользователь/не пользователь root) в каталоге $HOME (он не устанавливается, если у вас нет каталога /home/youruser/.rvm.

Как указано на сайте rvm в разделе "Расположение установки для одного пользователя: ~/.rvm/", для установки rvm для однопользовательского запуска:

cd
\curl -sSL https://get.rvm.io | bash -s -- --ignore-dotfiles

Теперь rvm должен быть установлен. Как и при следующем запросе, обновите rvm (указав свое имя пользователя):

source /home/---YOURUSERNAME---/.rvm/scripts/rvm

Чтобы запретить запросы на установку пакетов sudo-need, выполните:

rvm autolibs disable

Вы можете установить Ruby только для своего пользователя, в версии 2.5 (или любой другой, перечисленной в rvm list known)

rvm install 2.5

Объяснение:

Возможно, вы пытаетесь установить rvm, используя sudo и, возможно, с помощью этого пакета для Ubuntu, но у вас нет прав sudo.

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

Если rvm будет установлен в ваши $HOME драгоценные камни будут упакованы там, как обычно.

Поведение может быть непоследовательным, потому что другие пользователи установили rvm в свой каталог $HOME

Ответ 5

В моем случае у меня был существующий $BUNDLE_PATH без достаточных разрешений для пользователя подключаемого модуля.

Your user account isn't allowed to install to the system RubyGems
bundle install --path vendor/bundle

Ответ 6

Недавно столкнулся с такой же проблемой. Я использую rvm

sudo chown -R $USER ~/.rvm помог мне

Ответ 7

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

bundle install --path vendor/bundle

Недостатком этого является то, что он не решает проблему навсегда, так как проблема снова возникнет, когда вы начнете с другими приложениями Ruby on Rails.

Я пробовал это решение, но у меня оно не сработало:

Отобразите список всех ваших локальных драгоценных камней для комплекта драгоценных камней

gem list bundler

N/B: Приведенная выше команда предназначена для менеджера версий rbenv, команда для rvm может отличаться

При этом отобразятся версии пакета, установленного локально.

bundler (2.0.2, default: 1.17.3, 1.10.6)

А затем запустил приведенный ниже код для удаления версии 1.10.6

gem uninstall bundler

После этого я запустил приведенный ниже код, чтобы перефразировать rbenv

rbenv rehash

Однако это не решило проблему.

Вот как я это решил;

Проблема заключалась в том, что я по ошибке запустил операцию bundle install с правами администратора, а именно:

sudo bundle install

Чтобы решить эту проблему, я запустил приведенный ниже код, чтобы изменить владельца файлов и каталогов.

Для пользователей rbenv :

sudo chown -R $USER  ~/.rbenv

И для пользователей RVM users

sudo chown -R $USER  ~/.rvm

Вот оно.

надеюсь, это поможет

Ответ 8

Удалить

sudo mv ~/.bundle /tmp

Попробуйте переустановить

bundle install