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

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

Я пытаюсь установить Jekyll. После запуска gem install jekyll я получаю эту ошибку:

ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied - /usr/local/lib/ruby/gems/2.0.0/gems/jekyll-1.0.3/CONTRIBUTING.md

Я вижу, что Jekyll установлен, когда я запускаю gem list, поэтому я полностью смущен:

*** LOCAL GEMS ***

bigdecimal (1.2.0)
classifier (1.3.3)
colorator (0.1)
commander (4.1.3)
directory_watcher (1.4.1)
fast-stemmer (1.0.2)
highline (1.6.19)
io-console (0.4.2)
jekyll (1.0.3)
json (1.7.7)
kramdown (1.0.2)
liquid (2.5.0)
maruku (0.6.1)
minitest (4.3.2)
posix-spawn (0.3.6)
psych (2.0.0)
pygments.rb (0.5.1)
rake (0.9.6)
rdoc (4.0.0)
rubygems-update (2.0.3)
safe_yaml (0.7.1)
syntax (1.0.0)
test-unit (2.0.0.0)
yajl-ruby (1.1.0)

У меня было много проблем с моими дорожками пользователей в прошлом, поэтому мне интересно, может ли эта ошибка что-то с этим делать?

Вот результат gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.3
  - RUBY VERSION: 2.0.0 (2013-02-24 patchlevel 0) [x86_64-darwin12.3.0]
  - INSTALLATION DIRECTORY: /usr/local/Cellar/ruby/2.0.0-p0/lib/ruby/gems/2.0.0
  - RUBY EXECUTABLE: /usr/local/Cellar/ruby/2.0.0-p0/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/Cellar/ruby/2.0.0-p0/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-12
  - GEM PATHS:
     - /usr/local/Cellar/ruby/2.0.0-p0/lib/ruby/gems/2.0.0
     - /Users/me/.gem/ruby/2.0.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/

Вот мой ".bash_profile":

export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
PATH=$PATH:above/path/to/gems

source ~/.rvm/scripts/rvm

Может кто-нибудь, пожалуйста, помогите мне установить Jekyll или, по крайней мере, преодолеть эту ошибку разрешений?

4b9b3361

Ответ 1

Ваш Ruby установлен в /usr/local/Cellar/ruby/....

Это ограниченный путь и может быть записан только при использовании повышенных привилегий, либо с помощью root, либо с помощью sudo. Я не буду рекомендовать вам запускать файлы как root, так как вы не понимаете, как работают пути и разрешения. Вы можете использовать sudo gem install jekyll, который временно повысит ваши права, предоставив вашей команде права, необходимые для записи в этот каталог.

Однако я бы рекомендовал вам серьезно подумать об этом НЕ, а вместо этого использовать RVM для установки Ruby в свой собственный домашний каталог, где вы сможете автоматически установить Rubies и gems без разрешения. См. Инструкции по установке в локальную изолированную среду RVM в разделе Однопользовательские установки.

Поскольку у вас есть RVM в вашем ~/.bash_profile, но он не отображается в вашем списке объектов Gem, я подозреваю, что вы либо не следовали указаниям по правильной установке RVM, либо не использовали все, важная команда:

rvm use 2.0.0 --default

чтобы настроить стандартный Ruby.

Для большинства пользователей "однопользовательская установка" - это путь. Если вам нужно использовать sudo с этой конфигурацией, вы сделали что-то не так.

Ответ 2

Я хотел рассказать о шагах, которые я предпринял, чтобы исправить эту проблему для меня в надежде, что она может помочь кому-то еще (а также как напоминание для меня в случае, если что-то подобное случится снова)

Проблемы, с которыми я столкнулся (которые были такими же, как у OP), возможно, связаны с использованием homebrew для установки Ruby.

Чтобы это исправить, сначала я обновил homebrew:

brew update && brew upgrade
brew doctor

(Если доктор варки обнаружит какие-либо проблемы, сначала исправьте их.) Затем я удалил ruby

brew uninstall ruby

Если на данный момент rbenv НЕ установлен, то

brew install rbenv
brew install ruby-build
echo 'export RBENV_ROOT=/usr/local/var/rbenv' >> ~/.bash_profile
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile

Затем я использовал rbenv для установки ruby. Сначала найдите нужную версию:

rbenv install -l

Установите эту версию (например, 2.2.2)

rbenv install 2.2.2

Затем установите глобальную версию на желаемую версию ruby:

rbenv global 2.2.2

На этом этапе вы должны увидеть желаемую версию, установленную для следующих команд:

rbenv versions

и

ruby --version

Теперь вы можете установить пакет:

gem install bundler

А попав в нужную папку проекта, вы можете установить все необходимые гемы:

bundle
bundle install

Ответ 3

Похоже, проблема с разрешениями. Это то, что сработало для меня

sudo chown -R $(whoami) /Library/Ruby/Gems/*

или в вашем случае

sudo chown -R $(whoami) /usr/local/lib/ruby/gems/2.0.0/gems/

Ответ 4

После установки каталога gems в каталог пользователя, который запускает gem install, используя export GEM_HOME=/home/<user>/gems, проблема была решена.

Ответ 5

У меня была та же проблема с использованием rvm на Ubuntu, была исправлена ​​установка source на моем терминале как краткосрочное решение:

source $HOME/.rvm/scripts/rvm

или

source /home/$USER/.rvm/scripts/rvm

и настройте по умолчанию версию Ruby, 2.3.3 в моем случае.

rvm use 2.3.3 --default


И долгосрочное решение состоит в том, чтобы добавить source к вашему файлу .bashrc в навсегда, чтобы Ubuntu выглядел в .rvm для всех файлов Ruby.

Добавить

source .rvm/scripts/rvm

в

$HOME/.bashrc.

Ответ 6

Установите rbenv или rvm в качестве вашего менеджера версий Ruby (я предпочитаю rbenv) через homebrew (т.е. brew update & brew install rbenv), но тогда, например, в случае rbenv обязательно добавьте rbenv к вашему $PATH, как указано здесь и здесь.

Для более глубокого объяснения того, как работает rbenv, я рекомендую this.

Ответ 7

Я думаю, что проблема произошла, когда вы используете rbenv. Попробуйте приведенные ниже команды, чтобы исправить это.

rbenv shell {rb_version}
rbenv global {rb_version}
or 
rbenv local {rb_version}