'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>
установит ваш драгоценный камень глобально, т.е. он будет доступен для всех пользовательских контекстов.