'sudo gem install' или 'gem install' и местоположения драгоценных камней

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

Вероятно, неплохо, что в разных каталогах на моем компьютере установлены драгоценные камни, поэтому я должен установить путь к gem по-разному, и должен ли я всегда использовать 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 пуст.

Ответ 1

Вопреки всем другим сообщениям я предлагаю НЕ использовать sudo при установке драгоценных камней.

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

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

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

Причина, по которой установка драгоценных камней с sudo хуже, чем просто gem install, заключается в том, что она устанавливает драгоценные камни для ВСЕХ ПОЛЬЗОВАТЕЛЕЙ как root. Это может быть хорошо, если вы единственный человек, использующий машину, но если это не так, это может вызвать странность.

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

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

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

Ответ 2

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

gem install --user-install <gemname>

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

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

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

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

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

Ответ 3

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

gem: --user-install

Ответ 4

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

bundle install --path $HOME/.gem

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

gem install --user-install GEMNAME

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

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

$HOME/.gem/ruby/RUBYVERSION/bin

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

Ответ 5

Если вы

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

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

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

Откройте новую вкладку в терминале OR source ~/.bash_profile, и вам будет хорошо!

Ответ 6

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

bundle install --path vendor

Ответ 7

sudo gem install --no-user-install <gem-name>

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