'sudo gem install' или 'gem install' и расположение драгоценных камней - PullRequest
130 голосов
/ 22 января 2010

Запуск 'sudo gem list --local' и 'gem list --local' дают разные результаты. Мой путь к драгоценным камням установлен в мою домашнюю папку и содержит только драгоценные камни из 'gem list --local'.

Вероятно, нехорошо устанавливать гемы в разных каталогах на моем компьютере, поэтому я должен установить путь к гемам по-разному, и я должен всегда использовать sudo при установке чего-либо?

my ~/.profile
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"

~ / .bash_profile пуст.

Ответы [ 7 ]

137 голосов
/ 22 января 2010

В отличие от всех других постов, я предлагаю НЕ использовать sudo при установке гемов.

Вместо этого я рекомендую вам установить RVM и начать счастливую жизнь с переносными домами для драгоценных камней и другой версией Ruby, которые все живут под одной крышей.

Для непосвященных, с документация :

RVM - это инструмент командной строки, который позволяет нам легко устанавливать, управлять и работать с несколькими средами ruby ​​и наборами гемов.

Причина, по которой установка гемов с sudo хуже, чем просто gem install, заключается в том, что он устанавливает гемы для ALL USERS как root. Это может быть хорошо, если вы единственный человек, который использует машину, но если вы не используете ее, это может вызвать странности.

Если вы решили, что хотите выбросить все свои драгоценные камни и начать заново, это будет гораздо проще и безопаснее, если вы не пользователь root.

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

Кроме того, было бы хорошо, если бы вы могли сделать свою среду разработки максимально приближенной к вашей производственной среде, и в процессе работы вы, скорее всего, будете устанавливать гемы как пользователь без полномочий root.

112 голосов
/ 18 августа 2013

Вы также можете установить гем в своей локальной среде (без sudo) с помощью

gem install --user-install <gemname>

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

Вы можете проверить, куда уходят драгоценные камни, посмотрев на гемпаты с помощью gem environment. В моем случае это "~ / .gem / ruby ​​/ 1.8".

Если вам нужно добавить несколько двоичных файлов из локальной установки к вашему пути, вы можете добавить что-то в свой bashrc, например:

if which ruby >/dev/null && which gem >/dev/null; then
    PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi

(из http://guides.rubygems.org/faqs/#user-install)

32 голосов
/ 11 ноября 2015

Еще лучше, поместите --user-install в ваш файл ~ / .gemrc, чтобы вам не приходилось каждый раз набирать его

gem: --user-install
11 голосов
/ 27 ноября 2016

В случае, если вы

  • установленные рубиновые самоцветы с помощью sudo
  • хочу установить гем без sudo
  • не хочу устанавливать rvm / rbenv

добавить следующее к вашему .bash_profile:

export GEM_HOME=/Users/‹your_user›/.gem
export PATH="$GEM_HOME/bin:$PATH"

Откройте новую вкладку в терминале ИЛИ source ~/.bash_profile и все готово!

8 голосов
/ 30 июля 2015

Связано (для пользователей комплектов), если вы хотите более легкую альтернативу RVM, которая поместит все в хорошо известный пользовательский каталог, я рекомендую использовать:

bundle install --path $HOME/.gem

, если вы хотите установить гем в то же место, где

gem install --user-install GEMNAME

установит их, .gem/ruby/RUBYVERSION в вашем homedir. (См. Другой комментарий по этому вопросу о --user-install.)

Это сделает камни видимыми для gem list, деинсталлируемыми через gem uninstall и т. Д. Без необходимости доступа sudo. Запускаемые сценарии, установленные gem или bundler, можно добавить в ваш путь, добавив

$HOME/.gem/ruby/RUBYVERSION/bin

к вашему $PATH. gem сам говорит вам об этом, если он не установлен, когда вы делаете gem install --user-install.

6 голосов
/ 27 мая 2015
sudo gem install --no-user-install <gem-name>

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

2 голосов
/ 17 декабря 2013

Вы можете установить гемы в определенную папку (например, vendor /) в своем приложении Rails, используя:

bundle install --path vendor
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...