Подтвердить что ты не робот

Следует ли устанавливать 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.
4b9b3361

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