Как установить Vagrant как гем $ HOME, используя интерпретатор Ruby для Mac (1.8)? - PullRequest
3 голосов
/ 04 сентября 2011

Я уже спрашивал об установке пакетов python на $ HOME . Работало без нареканий.

Теперь я планирую установить Vagrant . Это gem (пакет ruby), и я бы тоже хотел установить его в папку $ HOME, но я к этому не привык, поэтому прошу помощи здесь.

Я уже бегал,

sudo gem update --system

Как следует из их mac tutorial . И когда я пытаюсь установить Vagrant, используя их рекомендации:

gem install vagrant

Я получаю:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /usr/bin directory.

(Странно, что просто gem install vagrant не работает, я следовал руководству с официального сайта Vagrant на Mac с установленной ванилью, никогда не использовал Ruby здесь, и я получил ошибку. Особенно при использовании sudo не требуется .)

Ok. Использование sudo решит эту проблему, но я не хочу устанавливать эту систему гемов в целом, я хочу установить их на $ HOME, как я это делал с pip - и я понятия не имею, как я могу это сделать, не испортив этого Mac Machine. Может кто-нибудь помочь мне, как это сделать лучше всего? Какие переменные мне нужно экспортировать, если мне нужно добавить ~/.gem к моему $PATH или что-то в этом роде. (Я уже все испортил, когда использовал sudo gem update --system?)

Некоторые люди предлагают использовать rvm , но я думаю, что это излишне, так как я не собираюсь разрабатывать ruby-приложения для системы Ruby, я просто хочу запустить Vagrant. Конечно, если нет другого пути, я собираюсь его использовать.

Вывод команды my gem environment:

gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.10
  - RUBY VERSION: 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-10
  - GEM PATHS:
     - /Library/Ruby/Gems/1.8
     - /Users/user/.gem/ruby/1.8
     - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

РЕДАКТИРОВАТЬ : Я нашел учебник , в котором говорится, что мне нужно просто добавить к своему .profile:

export GEM_HOME=$HOME/.gems
export PATH=$GEM_HOME/bin:$PATH

Безопасно ли использовать этот подход?

1 Ответ

2 голосов
/ 05 сентября 2011

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

Записанное учебное пособие :

Рекомендуется: установка драгоценных камней в домашний каталог

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

Начиная с RubyGems 1.3, RubyGems автоматически устанавливает гемы в каталог, указанный в переменной среды GEM_HOME.если местоположение системы недоступно.Вы увидите, что каталоги создаются в вашем каталоге GEM_HOME для хранения файлов gem.Это означает, что RubyGems будет действовать правильно при управлении пакетами, если вы не запускаете утилиту gem с правами администратора.

Для этого отредактируйте файл .profile в вашем домашнем каталоге и добавьте или изменитечтобы включить эти строки:

export GEM_HOME = $ HOME / gems

export PATH = $ GEM_HOME / bin: $ PATH

Это вступит в силу при следующем входе в системуили создайте окно терминала.

Наличие подкаталога bin в вашем PATH позволяет вам использовать любые утилиты командной строки, установленные с вашими пакетами gem.

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