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

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

qichunren
источник

Ответы:

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
Yfeldblum
источник
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файла.

Meagar
источник
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
Кевин Ци
источник
0

переустановите рубин, решите мою проблему.

brew install ruby
Jackyshan
источник