ОШИБКА: при выполнении gem... (Gem:: FilePermissionError)

Я проверил все другие подобные ответы, и никто не был таким же, как мой, и ни одно из этих решений не работало для меня.

gem environment и sudo gem environment дают тот же результат:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.5.3
  - RUBY VERSION: 1.8.7 (2011-12-28 patchlevel 357) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/lib/ruby/gems/1.8
     - /home/ava/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

rvm -v: rvm 1.22.3

ruby -v: ruby 1.8.7

OSX 10.8.4

echo $PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/ava/.rvm/bin:/home/ava/bin

gem install <gem-name> дает

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /usr/local/lib/ruby/gems/1.8 directory.

тогда как я могу установить то же самое через sudo. Что я делаю неправильно?

UPDATE:

В соответствии с комментариями и этим сообщением я выполнил следующие действия:

rvm implode, а затем снова установите стабильную версию. rvm install 1.9.3 или любая другая рубиновая установка завершается с ошибкой

Error running '__rvm_make -j24',
please read /home/ava/.rvm/log/log/1378418790_ruby-1.9.3-p194/make.log
There has been an error while running make. Halting the installation.

make.log

    [2013-09-05 22:06:48] make
current path: /home/ava/.rvm/src/ruby-1.9.3-p194
command(2): make -j24
        CC = gcc
        LD = ld
        LDSHARED = gcc -shared
        CFLAGS = -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Werror-implicit-function-declaration  -fPIC
        XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
        CPPFLAGS =   -I. -I.ext/include/x86_64-linux -I./include -I.
        DLDFLAGS = -Wl,-soname,libruby.so.1.9
        SOLIBS = -lpthread -lrt -ldl -lcrypt -lm
compiling main.c
compiling dmydln.c
compiling dmyencoding.c
compiling version.c
compiling miniprelude.c
compiling array.c
compiling bignum.c
compiling class.c
compiling compar.c
compiling complex.c
compiling dir.c
compiling dln_find.c
compiling enum.c
compiling enumerator.c
compiling error.c
compiling eval.c
compiling load.c
compiling proc.c
compiling file.c
:
:
:
In file included from ossl.h:213,
                 from ossl_pkcs5.c:5:
openssl_missing.h:71: error: conflicting types for ‘HMAC_CTX_copy’
/usr/local/include/openssl/hmac.h:102: error: previous declaration of ‘HMAC_CTX_copy’ was here
openssl_missing.h:95: error: conflicting types for ‘EVP_CIPHER_CTX_copy’
/usr/local/include/openssl/evp.h:459: error: previous declaration of ‘EVP_CIPHER_CTX_copy’ was here
make[2]: *** [ossl_pkcs5.o] Error 1
In file included from ossl.h:213,
                 from ossl_x509req.c:11:
:
:
:

Ответ 1

Чтобы устранить ошибку:

ОШИБКА: при выполнении gem... (Gem:: FilePermissionError)     У вас нет прав на запись в каталог /usr/local/lib/ruby/gems/ 1.8.

для меня работало следующее решение:

sudo gem install -n /usr/local/bin cocoapods

Ответ 2

  ОШИБКА: при выполнении gem... (Gem :: FilePermissionError)     У вас нет прав на запись в каталог /Library/Ruby/Gems/2.3.0.

  1. Установить RVM
  2. Установите папку gem в вашем файле ресурсов оболочки. То есть .zshrc, .bashrc и т.д.
export GEM_HOME="$HOME/.gem"
  1. Установите свой драгоценный камень gem i LIBRARY_NAME

Ответ 3

Если вы установили rvm в качестве пользователя root, вам необходимо sudo установить что-либо.

Вы можете установить rvm в пользовательском режиме как обычный пользователь, и в этом случае все будет сохранено в вашем домашнем каталоге и не требуется sudo.

Если вы не настроены на эту конкретную установку, введите sudo rvm implode и начните сначала.

Ответ 4

В вашем глобальном (общесистемном) конфигурационном файле, вероятно, установлен флаг --no-user-install. Создайте/отредактируйте свой локальный файл ~/.gemrc и добавьте следующие строки:

:gemdir:
    - ~/.gem/ruby
install: --user-install

Примечание
Фактический каталог для опции gemdir будет зависеть от вашей системы/желания; это может или не может быть необходимо, но, вероятно, лучше указать желаемый установочный каталог в вашей папке home (gemdir), чем предполагать, что он позаботится сам по себе.

ArchLinux Wiki содержит полезную/хорошо организованную информацию, касающуюся этого.


chruby

В качестве альтернативы, аналогично уже предложенному решению rvm, вы можете попробовать использовать chruby для поддержки, настройки и использования локальных версий ruby. Однако для установки дополнительных версий ruby вам необходимо использовать ruby-install.

$ brew install chruby ruby-install
$ ruby-install ruby 2.4.0

$ echo "source /usr/local/opt/chruby/share/chruby/chruby.sh" >> ~/.bash_profile
$ echo "chruby ruby" >> ~/.bash_profile

# Do this to select the default alternative ruby installation, assuming
# there is no other version installed.
$ chruby ruby

## Otherwise, list the available ruby versions installed, and select
$ chruby
ruby-2.3.0
ruby-2.4.0

$ chruby ruby-2.4.0

Из проекта README:

Изменяет текущий Ruby. Особенности

Updates $PATH.
    Also adds RubyGems bin/ directories to $PATH.
Correctly sets $GEM_HOME and $GEM_PATH.
    Users: gems are installed into ~/.gem/$ruby/$version.
    Root: gems are installed directly into /path/to/$ruby/$gemdir.
Additionally sets $RUBY_ROOT, $RUBY_ENGINE, $RUBY_VERSION and $GEM_ROOT.
Optionally sets $RUBYOPT if second argument is given.
Calls hash -r to clear the command-lookup hash-table.
Fuzzy matching of Rubies by name.
Defaults to the system Ruby.
Optionally supports auto-switching and the .ruby-version file.
Supports bash and zsh.
Small (~100 LOC).
Has tests.

Anti-Features

Does not hook cd.
Does not install executable shims.
Does not require Rubies be installed into your home directory.
Does not automatically switch Rubies by default.
Does not require write-access to the Ruby directory in order to install gems.

Требования

bash >= 3 or zsh

Ответ 5

Предполагая, что rvm установлен, вы можете сделать что-то вроде:

$ rvm install 2.1.1
$ rvm @global do gem install compass

Не нужно делать sudo.

Ответ 6

У вас, вероятно, нет прав на запись где-то по этому пути (скорее всего, /usr/local/lib ), вам нужно изменить местоположение вашего хранилища RVM, чтобы не требовалось sudo

Ответ 7

Помните, что если вы решили выполнить многопользовательскую установку rvm, вы должны добавить каждого пользователя в группу rvm через

usermod -a -G rvm <USERNAME>

Релевантная информация от rvm Часто задаваемые вопросы