проблема разрешения установки gem - PullRequest
79 голосов
/ 12 апреля 2010
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 dir. Я хотел бы знать, почему gem не устанавливает файлы в мой домашний каталог .gem dir в первую очередь? Почему мой общий гем сначала хочет установить файлы в /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8

Ответы [ 5 ]

155 голосов
/ 12 апреля 2010

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

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

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

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

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

47 голосов
/ 12 апреля 2010

Для общесистемной установки 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
5 голосов
/ 04 мая 2016

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

gem install sass --user-install
3 голосов
/ 30 января 2015

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

export RBENV_ROOT="$HOME/.rbenv"

if [ -d $RBENV_ROOT ]; then
  export PATH="$RBENV_ROOT/bin:$PATH"
  eval "$(rbenv init -)"
fi
0 голосов
/ 04 сентября 2018

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

brew install ruby
...