2013-05-29 2 views
14

Я строю бродячую настройку, и часть этого устанавливается rbenv. Я использую библиотекаря-шеф-повара для управления всеми моими кулинарными книгами повара, и он устанавливает rbenv и ruby-build.Следует ли устанавливать rbenv в системном или на уровне пользователя?

Однако, когда я попытался сдать 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 рубин. Однако, если я запускаю его с 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. 

ответ

14

Около двух лет назад, discussion happened in github об общих установках, которые, как представляется, отвечают на вопрос.

Синопсис: sstephenson (rbenv автор) конкретно не нравится поощрение общесистемного количества установок из-за сложности с правами доступа, доступ на записи и т.д. Он считает, добавив, твердая поддержка сделает rbenv более сложным, и простота цель ,

EDIT

Я с тех пор попадался шеф-rbenv поваренной книги fnichol, который, если вы на самом деле хотите установить общесистемный rbenv, дает right and proper method, и вы можете автоматизировать его с шефом-поваром (I рекомендую нож соло).

Он устанавливает это на /etc/profile.d/, поэтому он будет работать для всех пользователей, putting the proper ruby into the PATH.

+0

ссылка "правый и правильный метод" ссылка не работает. – Volte

1

Все в Readme rbenv является взять на себя местный (для каждого пользователя) установку в ~/.rbenv/ так я хотел бы предположить, что официальная рекомендация установить его на основе каждого пользователя.

Тем не менее, его можно установить по всему миру. Но вам понадобится sudo для всех команд, которым необходимо писать права. Установка новых рубинов, установка драгоценных камней * и изменение глобальной рубиновой версии - вот те, которые приходят мне на ум, может быть и больше.

(*) Требуется sudo для установки новых драгоценных камней по умолчанию, когда вы устанавливаете ruby ​​через стандартные системные процедуры, такие как apt на debian, не нуждаясь в sudo для этого, на самом деле является положительным побочным эффектом использования рубиновых менеджеров версий, которые работают на a для каждого пользователя

+0

В этой статье приведены инструкции: http://blakewilliams.me/blog/4-system-wide-rbenv-install Также меняет группу на персонал и дает групповые разрешения + устанавливает липкий бит, поэтому вы должны иметь возможность установить и использовать рубины от любого пользователя. Я не уверен, если это рекомендуется, но и не знаю почему или почему нет. – Duke

13

rbenv должен быть установлен на уровне пользователя.

К сожалению, это означает, что при запуске gem install, вы можете столкнуться с проблемой, которую вы видели:

You don't have write permissions into the {...} directory 

Вы можете решить эту проблему, установив правильные права доступа на каталог ~/.rbenv.

sudo chown -R yourusername ~/.rbenv 

После chown ИНГ каталог, вы будете иметь возможность запускать gem install без sudo.

+0

Большое спасибо! – thomallen

Смежные вопросы