Ответ 1
Чтобы устранить ошибку:
ОШИБКА: при выполнении gem... (Gem:: FilePermissionError) У вас нет прав на запись в каталог /usr/local/lib/ruby/gems/ 1.8.
для меня работало следующее решение:
sudo gem install -n /usr/local/bin cocoapods
Я проверил все другие подобные ответы, и никто не был таким же, как мой, и ни одно из этих решений не работало для меня.
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:
:
:
:
Чтобы устранить ошибку:
ОШИБКА: при выполнении gem... (Gem:: FilePermissionError) У вас нет прав на запись в каталог /usr/local/lib/ruby/gems/ 1.8.
для меня работало следующее решение:
sudo gem install -n /usr/local/bin cocoapods
ОШИБКА: при выполнении gem... (Gem :: FilePermissionError) У вас нет прав на запись в каталог /Library/Ruby/Gems/2.3.0.
.zshrc
, .bashrc
и т.д.export GEM_HOME="$HOME/.gem"
gem i LIBRARY_NAME
Если вы установили rvm
в качестве пользователя root, вам необходимо sudo
установить что-либо.
Вы можете установить rvm
в пользовательском режиме как обычный пользователь, и в этом случае все будет сохранено в вашем домашнем каталоге и не требуется sudo
.
Если вы не настроены на эту конкретную установку, введите sudo rvm implode
и начните сначала.
В вашем глобальном (общесистемном) конфигурационном файле, вероятно, установлен флаг --no-user-install
. Создайте/отредактируйте свой локальный файл ~/.gemrc
и добавьте следующие строки:
:gemdir:
- ~/.gem/ruby
install: --user-install
Примечание
Фактический каталог для опции gemdir
будет зависеть от вашей системы/желания; это может или не может быть необходимо, но, вероятно, лучше указать желаемый установочный каталог в вашей папке home
(gemdir
), чем предполагать, что он позаботится сам по себе.
ArchLinux Wiki содержит полезную/хорошо организованную информацию, касающуюся этого.
В качестве альтернативы, аналогично уже предложенному решению 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
Предполагая, что rvm установлен, вы можете сделать что-то вроде:
$ rvm install 2.1.1
$ rvm @global do gem install compass
Не нужно делать sudo.
У вас, вероятно, нет прав на запись где-то по этому пути (скорее всего, /usr/local/lib ), вам нужно изменить местоположение вашего хранилища RVM, чтобы не требовалось sudo
Помните, что если вы решили выполнить многопользовательскую установку rvm, вы должны добавить каждого пользователя в группу rvm через
usermod -a -G rvm <USERNAME>
Релевантная информация от rvm Часто задаваемые вопросы