проблема с разрешением на установку драгоценного камня


90
qichunren@zhaobak:~> gem install hpricot
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8 directory.

Текущий логин - qichunren, и у пользователя qichunre есть права на запись в директорию .gem. Я хотел бы знать, почему gem не устанавливает файлы в мой домашний каталог .gem сначала? Почему мой общий гем сначала хочет установить файлы в /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8

Ответы:


52

Для общесистемной установки Ruby станьте пользователем root. Например:

$ sudo gem install hpricot

Однако современный подход во многих случаях, в том числе при разработке, заключается в использовании инструмента, который позволяет легко установить и использовать Ruby как обычный пользователь. Это позволяет избежать необходимости становиться root. Таких инструментов несколько, и я использую RVM .

# install rvm into your ~
$ \curl -sSL https://get.rvm.io | bash -s stable

# install latest version of ruby into your ~
$ rvm install ruby

# installs a gem into your ~
$ gem install $SOME_GEM_NAME

41
Не используйте sudo, потому что вы установите их как root и не получите к ним доступа, когда вы используете своего обычного пользователя. Используйте RVM и драгоценные камни.
Райан

4
напримерrvm gem install hpricot
AJP

4
Вы можете удалить этот ответ. Вы сохраните очки и избавите людей от головной боли.
Ольховский

174

Попробуйте установить GEM_HOMEи GEM_PATHк ~/.gem,

Для текущего сеанса терминала просто введите:

export GEM_HOME=~/.gem
export GEM_PATH=~/.gem

Если вы хотите, чтобы они устанавливались всякий раз, когда вы открываете терминал, добавьте указанные выше команды в свой ~/.bashrcфайл.

Более подробное решение по настройке пользовательской среды ruby ​​можно найти в этом руководстве от Site5KB , в котором описывается использование .gemrcфайла.


11
Это действительно правильный ответ. Не используйте sudo для установки вещей, если вам это не нужно.
Джесси О'Брайен

Ссылка в ответе вроде бы изменилась. Первый шаг из этого руководства сделал для меня то же самое: kb.site5.com/ruby-on-rails/…
Mike S

@MikeSlutsky Спасибо, что указали на это. В будущем, если вы обнаружите неработающую ссылку (или ссылку, которая изменилась и больше не актуальна), не стесняйтесь отправлять предложение «отредактировать», если вы считаете, что у вас есть достойная замена.
meagar

@meagar Я обновил ссылку, предоставленную @ Mike-Slutsky, но заметил, что это документация по .gemrcнастройке. Для новичков в области рубиновых драгоценных камней это пугает, когда я понимаю, что ваше решение намного проще, что я добавил. Решение работает для меня, но как новичок в Ruby, пожалуйста, подтвердите, что мои изменения соответствуют вашим намерениям.
Дэвид Лебауэр,

1
Не забудьте добавить свой GEM_PATH в глобальный PATH. Вот что я делаю:PATH=$HOME/.gems/bin:$HOME/bin:$PATH GEM_HOME=$HOME/.gems GEM_PATH=$HOME/.gems:/var/lib/gems/2.1.0:/usr/lib/ruby/gems/2.1.0 export PATH GEM_HOME GEM_PATH
Spone

10

Я получал эту ошибку на моем общем сервере через хостинг 1and1. Мое решение заключалось в добавлении --user-installопции, которая просто устанавливает ее для вашего вошедшего в систему пользователя (это все, что вам нужно в среде общего сервера); установка sass

gem install sass --user-install

Интересно, что я получаю эту ошибку , хотя я уже определен --user-install.
sschuberth

4

Если вы используете rbenv и это происходит, вам нужно добавить в свой .bash_profile следующее:

export RBENV_ROOT="$HOME/.rbenv"

if [ -d $RBENV_ROOT ]; then
  export PATH="$RBENV_ROOT/bin:$PATH"
  eval "$(rbenv init -)"
fi

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.