Следует ли устанавливать rbenv в системном или на уровне пользователя?
Я строю бродячую настройку, а часть этого - установка rbenv. Я использую библиотекаря-шеф-повара для управления всеми моими кулинарными книгами повара, и он устанавливает rbenv и ruby-build.
Однако, когда я попытался выполнить ssh в моей Vagrant VM и набрал ruby -v
, я получил стандартную системную установку ruby 1.8.7 (2012-02-08 patchlevel 358) [x86_64-linux]
. Подумав, что, возможно, rbenv не был установлен, я попытался запустить rbenv versions
, но на самом деле был установлен rbenv:
[email protected]:~$ rbenv versions
* system (set by /opt/rbenv/version)
Итак, я попробовал rbenv install [version]
:
[email protected]:~$ rbenv install 1.9.3-p327
[...]
BUILD FAILED
[...]
test -z "/opt/rbenv/versions/1.9.3-p327/include" || /bin/mkdir -p "/opt/rbenv/versions/1.9.3-p327/include"
/bin/mkdir: cannot create directory `/opt/rbenv/versions/1.9.3-p327': Permission denied
Ошибка с Permission denied
. Я снова попытался установить с помощью sudo
:
sudo rbenv install 1.9.3-p327
И это сработало. Затем я снова попробовал запустить rbenv versions
:
[email protected]:~$ rbenv versions
* system (set by /opt/rbenv/version)
Но он все еще говорит, что установлен только system
ruby. Однако, если я запустил его с помощью sudo
:
[email protected]:~$ sudo rbenv versions
* system (set by /home/vagrant/.rbenv/version)
1.9.3-p327
rbenv versions
теперь показывает 1.9.3
.
Таким образом, похоже, что отключается, поскольку rbenv и моя рубиновая версия теперь установлены на системном уровне, а не на уровне пользователя.
Я использую rbenv-cookbook. Я хотел бы, чтобы rbenv настраивался с шеф-поваром, потому что это избавляет меня от настройки его вручную, после установки.
Другая проблема, с которой я сталкиваюсь, заключается в том, что похоже, что все, что контролируется рубином, например gem
, также страдает от такого же разъединения.
[email protected]:~$ gem install bundler
Fetching: bundler-1.3.5.gem (100%)
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions into the /opt/vagrant_ruby/lib/ruby/gems/1.8 directory.
Ответы
Ответ 1
Примерно два года назад в github обсуждалось обсуждение право и правильное метод, и вы можете автоматизировать его с шеф-поваром (я рекомендую соло для ножа).
Он устанавливает это значение в /etc/profile.d/
, поэтому он будет запускаться для всех пользователей, помещая правильный рубин в PATH
.
Ответ 2
rbenv должен быть установлен на уровне пользователя.
К сожалению, это означает, что при запуске gem install
вы можете столкнуться с проблемой, которую вы видели:
You don't have write permissions into the {...} directory
Вы можете решить эту проблему, установив правильные разрешения в каталоге ~/.rbenv
.
sudo chown -R yourusername ~/.rbenv
После chown
входа в каталог вы сможете запустить gem install
без sudo
.
Ответ 3
Все в rbenv Readme предполагает локальную (для каждого пользователя) установку в ~/.rbenv/
, поэтому я бы предположил, что официальная рекомендация - установить ее для каждого пользователя.
Тем не менее, его можно установить глобально. Но вам понадобится sudo
для всех команд, которые должны писать права. Установка новых рубинов, установка драгоценных камней * и изменение глобальной рубиновой версии - вот те, которые мне приходят, может быть больше.
(*) Необходимость sudo для установки новых драгоценных камней - это значение по умолчанию, когда вы устанавливаете ruby через стандартные системные процедуры, такие как apt на debian, не нуждаясь в sudo для него, на самом деле является положительным побочным эффектом использования рубиновых менеджеров версий, которые работают на для каждого пользователя