Como instalar uma gema ou atualizar o RubyGems se ela falhar com um erro de permissão

559

Estou tentando instalar uma gema usando gem install mygemou atualizando RubyGems usando gem update --system, e ela falha com este erro:

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

Alguém tem uma idéia de como resolver isso?

Gaurav
fonte
5
Aqui está a minha solução: stackoverflow.com/questions/34071868/…
LanceP 3/15/15
2
ocorreu o meu erro, porque estou fazendo: update gem CocoaPods corrigir: CocoaPods atualização sudo gem
Abhishek Thapliyal
60
sudo chown -R $USER /Library/Ruby/Gems/
vaskort
2
simplesmente usando este comando funcionou para mim: sudo gem install mygem
Jayprakash Dubey
1
Eu estava usando o shell zsh e foi um problema de caminho no ~ / .zshrc. Eu usei essa linha no final do arquivo e ele trabalhou para mim: export PATH = "$ HOME / .rbenv / calços: $ PATH"
rosnk

Respostas:

317

Você não tem permissões de gravação no diretório /Library/Ruby/Gems/1.8.

significa exatamente isso, você não tem permissão para escrever lá.

Essa é a versão do Ruby instalada pela Apple, para uso próprio. Embora seja correto fazer pequenas modificações, se você souber o que está fazendo , porque não tem certeza sobre o problema das permissões, diria que não é uma boa ideia continuar nessa trilha.

Em vez disso, sugiro fortemente que você use o rbenv ou o RVM para gerenciar um Ruby separado, instalado em uma caixa de areia em seu diretório pessoal, que você pode modificar / fold / spindle / change sem se preocupar com a bagunça do sistema Ruby.

Entre os dois, eu uso o rbenv, embora eu tenha usado muito o RVM no passado. O rbenv adota uma abordagem mais "manual" para gerenciar sua instalação do Ruby. O RVM possui muitos recursos e é muito poderoso, mas, como resultado, é mais intrusivo. Em ambos os casos, LEIA a documentação de instalação para eles algumas vezes antes de começar a instalar o que você escolher.

o homem de lata
fonte
176
Você não precisa usar uma biblioteca Ruby separada. Basta colocar 'sudo' na frente do seu, como Michael sugeriu acima.
Serraosays
37
Alterar a propriedade da instalação do Ruby da Apple não é uma boa ideia, porque o sistema instala / atualiza e o Disk Utility pode reverter / reparar automaticamente a propriedade e as permissões do diretório. Isso frustrará o usuário e o sistema operacional e o código que esperam ter permissões de gravação / propriedade desses diretórios. A Apple instala aplicativos que usam seu Ruby e podem esperar uma certa versão ou comportamento, para que eles possam quebrar. Por que se preocupar quando é mais fácil e seguro usar o RVM ou o rbenv e não se preocupar com isso?
the Tin Man
203
Para aqueles como eu, que na verdade não fazem nenhum desenvolvedor de ruby ​​e não querem mexer por meia hora tentando descobrir o que são todas essas coisinhas de cristal. brew install rubyresolverá os problemas de dependência de uma maneira limpa, que não prejudica a instalação da maçã. Se você já sudopossui uma atualização na instalação inicial e está preocupado com o que fez, poderá desfazê-la com o seguinte:cd /System/Library/Frameworks/Ruby.framework/Versions;sudo rm Current; sudo ln -s 1.8 Current;
Louis
21
" I did the sudo tangle and wound up modifying my pre-installed Ruby. I did your steps to try to fix the problem, but now when I do irb or ruby -v, I get command not found. What's going on and is there a fix" e isso adiciona mais peso ao motivo pelo qual as pessoas não devem usar sudoou chown. Suspiro ....
o homem de lata
55
Resolvido: no El Captain, brew install rubybasta fechar o Terminal e reabri-lo novamente.
fmessina
421

Tente adicionar em --user-installvez de usar sudo:

gem install mygem --user-install
nathanwhy
fonte
4
Não sei por que sua resposta não foi publicada antes. A --user-installopção tem aparentemente sido em torno de um tempo. Eu só queria que você tivesse escrito isso antes. =)
Michael - Onde está Clay Shirky?
7
Isso precisa ir para o topo! Instalar com sudo ou su é uma má idéia, pois você está aplicando um sistema de permissões nos módulos e, possivelmente, os pacotes instalados globalmente podem colidir com pacotes instalados de outra maneira ou com as dependências de outros projetos. O uso do rbenv requer a instalação de outro software e adiciona uma camada de complexidade.
Hubert Grzeskowiak
7
Isso funciona, mas alerta: 'AVISO: Você não possui /Users/<username>/.gem/ruby/2.0.0/bin no seu PATH, os executáveis ​​gem não serão executados.' O link a seguir fornece instruções úteis sobre como atualizar seu caminho (sem precisar usar o vi) hathaway.cc/post/69201163472/…
dawid
4
Isso é simples e lógico. Adicionar caminho rubi, se você não tem em sua bashrc if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi <br> Fonte: guides.rubygems.org/faqs/#user-install
Inder Kumar Rathore
1
Isso pode estragar o sistema da Apple (instalado em rubi)?
Daniel Springer
93

Você realmente deveria estar usando um gerenciador de versões Ruby.

O uso adequado de um impediria e poderá resolver seu problema de permissão ao executar um gem updatecomando.

Eu recomendo rbenv .

No entanto, mesmo quando você usa um gerenciador de versão Ruby, você ainda pode receber a mesma mensagem de erro.

Se sim, e você está usando rbenv, verifique se o ~/.rbenv/shimsdiretório está antes do caminho para o sistema Ruby.

$ echo $PATH mostrará a ordem do seu caminho de carregamento.

Se você achar que seu diretório shims vem após o diretório Ruby bin do sistema, edite seu ~/.bashrcarquivo e coloque-o como seu último comando PATH de exportação: export PATH=$HOME/.rbenv/shims:$PATH

$ ruby -v mostra qual versão do Ruby você está usando

Isso mostra que atualmente estou usando a versão do sistema do Ruby (geralmente não é boa)

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

$ rbenv global 1.9.3-p448 muda para uma versão pré-instalada mais nova (consulte as referências abaixo).

Isso mostra que estou usando uma versão mais recente do Ruby (que provavelmente não causará o Gem :: FilePermissionError)

$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

Você normalmente não precisa preceder um comando gem com o sudo. Se você sentir a necessidade de fazer isso, provavelmente algo está mal configurado.

Para detalhes sobre rbenv, consulte o seguinte:

l3x
fonte
7
Você não deve ter que mexer no passe se estiver usando rbenv, se seguir as instruções de instalação do Homebrew , tudo o que você precisa fazer é adicionar eval "$(rbenv init -)"à sua configuração de shell e rbenvdeve cuidar de configurá- PATHlo para você.
Obrigado. Eu tinha esquecido o 'rbenv global' e ainda estava usando o ruby ​​do sistema, e a instalação do gem estava falhando.
Graham Vantagens
75

Por que você não faz:

sudo gem update --system
Bobz
fonte
39
Instalar gemas como root não é uma boa ideia. stackoverflow.com/questions/2119064/…
spuder
Teve problemas com brew upgrade Error: Permission denied.... Isso consertou. Obrigado!
Ostap Andrusiv 15/12/2014
12
Nunca use SUDO, se você tiver feito isso, você fez algo errado na sua configuração. Por favor, use rbenv ou rvm.
Chris Hough
14
Por que todos respondem a problemas de permissão para sempre lançar o sudo na frente de um comando? Como é essa melhor prática?
7115 Steven
hyh: qzc.xcodeproj ylgwhyh $ gem install cocoapods ERRO: Ao executar o gem ... (Gem :: FilePermissionError) Você não tem permissões de gravação para o diretório /Library/Ruby/Gems/2.0.0.
precisa saber é
40

Isso corrigirá o problema no MacOs Mojave e no MacOs Catalina de maneira limpa:

brew install ruby

Em seguida, defina GEM_HOME como seu diretório de usuários. No terminal:

Bash:

echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

OU se estiver em Zsh:

echo '# Install Ruby Gems to ~/gems' >> ~/.zshrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.zshrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.zshrc
source ~/.zshrc
Fmessina
fonte
2
como você descobriu isso? Trabalhou!
Kuzdu
2
você é o cara! mais cinco, realmente funciona como um encanto. Muito obrigado.
MrDinkelman 07/02/19
1
Isso não funcionou para mim até eu correr xcode-select --install. Isso é necessário para compilar extensões.
Marc Perrin-Pelletier
Eu executei isso e quero poder redefinir as alterações feitas por eles, você sabe como revertê-lo? @Fmessina
KarenAnne 10/10
isso deve funcionar: editar o seu ~/.bashrcou ~/.zshrcde arquivos, remover as 3 linhas adicionado, e em seguida, execute novamente o source ~/.bashrccomando
fmessina
34

Para mim, o problema foi devido ao uso rbenve ao esquecimento de definir a versão adequada globalmente.

Então eu tive que configurá-lo com rbenv global xxx

No meu caso eu instalei, 2.0.0-p247então tive que emitir o comando:

rbenv global 2.0.0-p247
rbenv rehash

Então tudo estava funcionando bem.

Hendrik
fonte
3
Para aqueles que já usam o rbenv e começaram a receber um erro de permissão ao instalar gems após atualizar o OSX para uma versão mais recente: você deve começar definindo a versão do rbenv, rbenv global 2.1.1por exemplo, e seguir com rbenv rehash. Agora, reexecutando seu gem installcomando.
Njappboy 12/11/2014
1
^ Este + terminal de reinicialização.
XåpplI'-I0llwlg'I -
1
futuros exploradores: rbenv rehash foi descontinuado github.com/rbenv/rbenv-gem-rehash
TCannadySF 4/16
Trabalhou para mim perfeitamente! Era o que rbenv rehasheu estava perdendo.
jamesmarkcook
Vale a pena notar que é o ruby ​​do sistema que estaria sem permissões e o rbenv estaria usando o ruby ​​do sistema se nenhum ruby ​​global fosse definido. Isso pode ser verificado com rbenv versions.
Dennis
23

Você precisa corrigir seus caminhos.

Para determinar se essa correção funcionará, execute o seguinte:

which gem

Isso deve gerar um diretório para o qual você não tem permissão para:

/usr/bin/gem

Para corrigir isso, execute as seguintes etapas:

  1. Determine o caminho que você precisa copiar para o seu perfil:

    rbenv init -

    A primeira linha da saída é a linha que você precisa copiar para o seu perfil:

    export PATH="/Users/justin/.rbenv/shims:${PATH}" #path that needs to be copied
    source "/usr/local/Cellar/rbenv/0.4.0/libexec/../completions/rbenv.zsh"
    rbenv rehash 2>/dev/null
    rbenv() {
      typeset command
      command="$1"
      if [ "$#" -gt 0 ]; then
        shift
      fi
    
      case "$command" in
      rehash|shell)
        eval `rbenv "sh-$command" "$@"`;;
      *)
        command rbenv "$command" "$@";;
      esac
    }
  2. Copie o caminho para o seu perfil e salve-o.

  3. Recarregue seu perfil ( source ~/.zshenvpara mim).

  4. Corra rbenv rehash.

Agora, quando você executa, which gemdeve obter um caminho local para o qual você tem permissão:

/Users/justin/.rbenv/shims/gem
Justin Leveck
fonte
Esse foi o problema na minha situação. Você deve poder incluir eval "$(rbenv init -)"no seu ~/.bash_profilepara fazer todas as alterações necessárias.
Nyi 07/02
melhor resposta. meu perfil foi nomeado .bash_profile e você pode abrir o arquivo assim: toque em ~ / .bash_profile; aberto ~ / .bash_profile e adicione a linha que você mencionou no ponto 1.
Carmena
17
sudo gem update --system
sudo gem install (gemfile)
Eliot Arntz
fonte
No macOS Mojave, sudonão tem permissão. haha
DawnSong 7/03/19
17

Isso funcionou para mim. Além disso, se você instalou gems como root antes, ele corrige esse problema alterando a propriedade de volta para você (melhor em termos de segurança).

sudo chown -R `whoami` /Library/Ruby/Gems
thebiggestlebowski
fonte
1
Big NÃO! Nunca altere a permissão na /Librarypasta, o sistema poderá ser interrompido em futuras atualizações. (pena de resposta tardia)
Raptor
@ Raptor Estou modificando permissões em uma subpasta, não em "/ Library". No meu caso, instalei erroneamente as gemas como root, então queria desfazer isso. Não há consequências negativas em que eu possa pensar teoricamente nem houve nenhuma que eu tenha observado. Estou curioso - por que você acha que é uma péssima ideia?
Thebiggestlebowski
O caminho é para o sistema. Outras atualizações do macOS podem ser interrompidas.
Raptor
A gema é instalada por padrão neste local. Era inutilizável porque foi instalado por engano como root (sudo) em vez do meu usuário normal. O resultado do que fiz foi o mesmo que se eu tivesse instalado como $ USER em primeiro lugar. Eu não vejo o mal. A maioria das outras respostas aqui sugere o mesmo resultado / solução, mas maneiras diferentes de alcançá-lo. Ainda não vejo o problema. Você está dizendo que gemas não devem ser instaladas em / Library?
Thebiggestlebowski
15

Existem duas rotas: Use rbenv ou RVM. Existem receitas para ambos abaixo. Antes de fazer isso, você provavelmente deseja desativar a instalação de documentos locais para gemas.

echo "gem: --no-ri --no-rdoc" >> ~/.gemrc

Então:

install rbenv

install ruby-build

corre:

rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system

Isso instala uma versão atualizada do sistema gem em seus diretórios locais. Isso significa que você não interfere na configuração do sistema. Se você está fazendo essa pergunta, não deve mexer com a segurança do sistema e vai gastar mais tempo entendendo quais problemas pode encontrar, do que apenas ter uma maneira fácil de evitar o problema com o qual começou. Aprenda o InfoSec mais tarde, quando você souber mais sobre o sistema operacional e a programação.

Para uma alternativa, use 'RVM': Para instalar o rvm, execute:

rvm install 2.1.2
rvm use 2.1.2
gem update --system

Isso tem o mesmo resultado, você acaba com um sistema Ruby e Gem local que não interfere nas versões do sistema. Não há necessidade de Homebrew, ou libs de sistema de substituição, etc.

JezC
fonte
13

Encontrei este tutorial por sudomenos gemas :

  1. brew install rbenv ruby-build
  2. sudo gem update --system
  3. adicione exportações para .bashrc:

    export RBENV_ROOT="$(brew --prefix rbenv)"
    export GEM_HOME="$(brew --prefix)/opt/gems"
    export GEM_PATH="$(brew --prefix)/opt/gems"
  4. E, finalmente, adicione isso ao seu ~/.gemrc:

    gem: -n/usr/local/bin
  5. gem update --system

gopek
fonte
Eu usei brew install rebenv ruby-build, então há um systemdepois do meu diretório? Alguma idéia do que causou isso e como se livrar disso system?
7537247
13

Tente a resposta de nathanwhy antes de usar minha resposta original abaixo. Sua recomendação de --user-installrealizar o mesmo objetivo sem ter que mexer com o seu .bash_profileou determinar sua versão do ruby.


Se você não está preocupado com uma versão ruby ​​específica, pode pular as opções do gerenciador de ambiente ruby ​​de trabalho pesado e apenas adicionar estas linhas a ~/.bash_profile:

export GEM_HOME="$HOME/.gem/ruby/2.0.0"
export GEM_PATH="$HOME/.gem/ruby/2.0.0"

O caminho é roubado da saída original de gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
  - RUBY EXECUTABLE: /System/Library/.../2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-14
  - GEM PATHS:
     - /Library/Ruby/Gems/2.0.0
     - /Users/mylogin/.gem/ruby/2.0.0 # <-- This guy, right here.
     - /System/Library/.../usr/lib/ruby/gems/2.0.0
  ...

Não sudoé necessário fazer nada e você pode usar o ruby ​​já instalado, cortesia da Apple.

Michael - onde está Clay Shirky
fonte
3
+1: Isso funcionou muito bem para mim. Nem todo mundo é o administrador do sistema da máquina que está usando e, portanto, nem todo mundo tem acesso ao 'sudo', 'chown' ou ferramentas similares. Da mesma forma, as pessoas devem estar cientes de "gem install --user-install", que instala a gem em um diretório no diretório inicial do usuário, e não no diretório compartilhado por todos os usuários.
Some Guy
12

Eu precisava fazer um rbenv rehashpara que aponte para a minha biblioteca Gem local.

Parece que você tem o seu gerenciador de gemas apontando para a Biblioteca do Sistema. Portanto, em vez de mexer nas permissões, faça o equivalente a "rehash" para que seu gerente faça com que as coisas apontem localmente.

bobbdelsol
fonte
3
futuros exploradores: rbenv rehash foi preterido github.com/rbenv/rbenv-gem-rehash
TCannadySF 4/16
12

Mais velho e mais sábio

Não faça o que eu digo aqui, apenas saiba ser cauteloso sempre que usar sudo. Você provavelmente deseja usar algo parecido rbenvpara isolar qualquer trabalho que esteja fazendo.


longe

aprender sobre chown

Não sei se você gosta da linha de comando, mas isso facilitará o trabalho em qualquer projeto com qualquer ferramenta que instale pacotes no seu sistema.

chown até onde eu sei, significa propriedade da mudança.

A razão pela qual vim procurar esta resposta é porque gem installjogou esse erro em mim hoje:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /var/lib/gems/1.9.1 directory.

Esta é uma oportunidade perfeita para usar chown. Você vê que Ruby nos deu o diretório ao qual precisa acessar e parece que é um diretório que ele usará com bastante frequência.

Nesse caso, há apenas três coisas que precisamos saber para resolver o problema, mas chowné muito mais poderoso e concede a você muito mais flexibilidade do que demonstrarei agora. Por favor, consulte a fonte na parte inferior para mais informações.

As duas coisas

  1. Nome do usuário
  2. Diretório

Se você estiver em um shell, é fácil encontrar o nome de usuário. Basta olhar para o prompt. O meu se parece com:

breadly@breadly-desktop:~\Desktop

O usuário atual é apenas o nome antes do @. Conhecemos o diretório a partir das mensagens de erro, mas você tem duas opções. Você pode limitar sua permissão para a versão atual usando ../gems/1.9.1ou conceder permissão de gravação para gemas de todas as versões usando ../gems.

O comando para realmente mudar de propriedade seria assim.

chown -R $(whoami) /absolute/path/to/directory

O -Rsinalizador é conhecido como sinalizador e, -Rgeralmente, indica a um comando para fazer algo recursivamente, ou, em outras palavras, executar o comando em tudo que estiver contido no diretório, e em tudo o que estiver contido nos diretórios contidos nele, e assim por diante. não há mais nada.

Breedly
fonte
Além disso, se você deseja descobrir a qual grupo seu usuário pertence, você pode consultar isso. stackoverflow.com/questions/350141/…
Breedly
3
No entanto, convém ter cuidado ao alterar a propriedade, caso seja necessário instalar no diretório / usr / local / bin.
Breedly
16
Alterar a propriedade de qualquer coisa nos caminhos / usr, / Library ou / var, entre outros, é uma má idéia. O sistema pode parar devido ao fato de os arquivos e drivers não estarem mais acessíveis e as atualizações futuras podem ser interrompidas se o instalador perceber que os caminhos não são mais de propriedade do root: wheel. Corrigir os danos pode ser muito difícil e geralmente é melhor reinstalar o sistema operacional. Usuários ingênuos / inexperientes não sabem o suficiente sobre o sistema operacional para entender quais arquivos / diretórios podem ser seguros e devem ser advertidos para não tentar isso em casa.
the Tin Man
Lol, essa é uma resposta embaraçosa. :) Mais velho e mais sábio agora, eu acho.
Breedly
11

Formatei meu Mac e muitas soluções sugeridas não funcionaram para mim. O que funcionou para mim são esses comandos na ordem correta:

  1. Instale o Homebrew:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. Instale o Ruby:

    brew install ruby
  3. Instale o Compass:

    sudo gem install compass
Herbi Shtini
fonte
Você nunca precisa usar sudopara instalar algo com gem. Usar o sudoinstala no Ruby pertencente ao sistema, não em um que você possui. Usar um Ruby em área restrita é muito mais fácil de gerenciar e usar durante a programação, porque você pode criar várias instâncias diferentes e tentar coisas diferentes e destruí-las quando terminar.
the Tin Man
9

sudo chown -R $USER /Library/Ruby/Gems/

vaskort
fonte
6

Trabalhe para mim:

sudo gem uninstall cocoapods

sudo gem install cocoapods
evya
fonte
Incrível Trabalhou para mim também! Obrigado. Salvo esforço de instalação de rbenv ou RVM
NaXir
5
Voto negativo porque, como foi observado em outros comentários, a instalação de gemas como root é uma prática perigosa. O instalador pode fazer literalmente qualquer coisa no seu sistema.
Some Guy
@SomeGuy: "O instalador pode fazer literalmente qualquer coisa" ... é mais provável que o próprio usuário possa digitar o comando com facilidade e alterar o sistema. Não consigo pensar em uma vez em que um instalador estragou meu sistema, mas me lembro claramente das vezes que fiz. sudoé um comando que os novatos amam, porque torna possível fazer a coisa errada com tanta facilidade e leva anos para aprender a ser paranóico adequadamente ao usá-la.
the Tin Man
1
A melhor resposta !!!! Depois de executar estes 2 comandos, reinicie o Terminal e, é tudo !!! Muito obrigado!!!
nosequeweaponer
4

Verifique se a sua versão do Ruby está correta. Caso contrário, mude.

Isso funciona para mim:

$ rbenv global 1.9.3-p547
$ gem update --system
zen
fonte
Esta é a melhor solução: update> chown. Obrigado! . Eu também tive que correrbrew install ruby
Jose Llausas
4

Instale o rbenv by brew install rbenv;

Em seguida, coloque eval "$(rbenv init -)"no final de ~ / .bash_profile (ou ~ / .zshrc do MacOS);

Abra um novo terminal e execute gem install ***funcionará!

zhao
fonte
Não funcionou para mim ❯ brew install rbenv -q Warning: rbenv 1.1.1 is already installed and up-to-date To reinstall 1.1.1, run `brew reinstall rbenv` ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ eval "$(rbenv init -)" ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ gem update Updating installed gems Updating CFPropertyList ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
Max Coplan
2

Conforme apontado por bobbdelsol, o rehash funcionou para mim:

==> which ruby
/usr/bin/ruby

==> rbenv install 1.9.3-p551
Downloading ruby-1.9.3-p551.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2
Installing ruby-1.9.3-p551...
Installed ruby-1.9.3-p551 to /Users/username/.rbenv/versions/1.9.3-p551


==> which ruby
/Users/username/.rbenv/shims/ruby

==> which gem
/Users/username/.rbenv/shims/gem

==> gem install compass
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> rbenv rehash


==> ruby -v
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin15.4.0]


==> gem install compass
Fetching: sass-3.4.22.gem (100%)
Fetching: multi_json-1.11.3.gem (100%)
Fetching: compass-core-1.0.3.gem (100%)
Fetching: compass-import-once-1.0.5.gem (100%)
Fetching: chunky_png-1.3.5.gem (100%)
Fetching: rb-fsevent-0.9.7.gem (100%)
Fetching: ffi-1.9.10.gem (100%)
Building native extensions.  This could take a while...
Fetching: rb-inotify-0.9.7.gem (100%)
Fetching: compass-1.0.3.gem (100%)
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
Successfully installed sass-3.4.22
Successfully installed multi_json-1.11.3
Successfully installed compass-core-1.0.3
Successfully installed compass-import-once-1.0.5
Successfully installed chunky_png-1.3.5
Successfully installed rb-fsevent-0.9.7
Successfully installed ffi-1.9.10
Successfully installed rb-inotify-0.9.7
Successfully installed compass-1.0.3
9 gems installed
Installing ri documentation for sass-3.4.22...
Installing ri documentation for multi_json-1.11.3...
Installing ri documentation for compass-core-1.0.3...
Installing ri documentation for compass-import-once-1.0.5...
Installing ri documentation for chunky_png-1.3.5...
Installing ri documentation for rb-fsevent-0.9.7...
Installing ri documentation for ffi-1.9.10...
Installing ri documentation for rb-inotify-0.9.7...
Installing ri documentation for compass-1.0.3...
Installing RDoc documentation for sass-3.4.22...
Installing RDoc documentation for multi_json-1.11.3...
Installing RDoc documentation for compass-core-1.0.3...
Installing RDoc documentation for compass-import-once-1.0.5...
Installing RDoc documentation for chunky_png-1.3.5...
Installing RDoc documentation for rb-fsevent-0.9.7...
Installing RDoc documentation for ffi-1.9.10...
Installing RDoc documentation for rb-inotify-0.9.7...
Installing RDoc documentation for compass-1.0.3...
Arunabh Das
fonte
Tão perto. ainda "ERRO: Ao executar o gem ... (Gem :: FilePermissionError) Você não tem permissões de gravação para o diretório /Library/Ruby/Gems/2.0.0."
JGallardo 8/08
1

Testado no MacOS Mojave COM SUCESSO:

  1. Desinstale todas as suas versões antigas do ruby ​​(digamos que você tenha as versões 2.00 e 2.3.0):

    $ rvm uninstall 2.0.0

    $ rvm uninstall 2.3.0

  2. Instale a nova versão do ruby:

    $ brew install ruby

  3. Defina um alias padrão para sua versão:

    $ rvm alias create default ruby

  4. Reinicie o sistema porque é a maneira mais segura de carregar o computador com a nova versão ruby, instalada recentemente.

Após o procedimento acima, você pode executar com êxito qualquer gemcomando.

Marcelo Gumiero
fonte
-2

cd /Library/Ruby/Gems/2.0.0

aberto .

clique direito obter informações

clique em bloquear

colocar senha

faça tudo ler e escrever.

myklgee
fonte
1
Reserve um tempo para formatar sua resposta para facilitar a leitura. O esforço que você dedica à pesquisa e à explicação compensa.
the Tin Man
-2

dê ao usuário $ whoami para criar algo nessa pasta

sudo chown -R user /Library/Ruby/Gems/2.0.0
Rama Astadipati
fonte
Não. Essa pasta pertence ao sistema por um bom motivo, o sistema a utiliza para seus próprios fins. Não há problema em executar um script que aponte para ele, mas crie e use um Ruby na caixa de areia se você quiser mexer com ele.
the Tin Man
-3

Você pode usar: gem install cocoapods --pre --user

Alex_Burla
fonte
-4

A instalação da gem ou a atualização do RubyGems falham com o erro de permissão. Digite este comando

sudo gem install cocoapods
Hardip Kalola
fonte
1
Isso foi abordado nas outras respostas. Leia as outras respostas antes de criar uma para garantir que a sua oferece algo novo.
the Tin Man
-6

Eu usei isso e trabalhei.

$ sudo chown myuser /var/lib/gems

Felipe Francisco
fonte
Veja os comentários nas outras respostas sobre o uso sudo.
the Tin Man
-18

O motivo do erro é que você não está logado como usuário root no terminal.

Se você já possui o uso root, ative no seu Mac no tipo de terminal

$ su

Se você não possui usuário root, é necessário habilitá-lo usando as seguintes etapas

  1. No menu Apple, escolha Preferências do Sistema….
  2. No menu Exibir, escolha Usuários e grupos.
  3. Clique no cadeado e autentique como uma conta de administrador.
  4. Clique em Opções de login….
  5. Clique no botão "Editar ..." ou "Participar ..." no canto inferior direito.
  6. Clique no botão “Open Directory Utility…”.
  7. Clique no cadeado na janela Directory Utility.
  8. Digite um nome de conta e senha de administrador e clique em OK.
  9. Escolha Habilitar Usuário Raiz no menu Editar.
  10. Digite a senha raiz que deseja usar nos campos Senha e Verificar e clique em OK.

Mais sobre o mesmo em http://support.apple.com/kb/ht1528

Pelo menos funciona para mim depois de ficar preso por algumas horas.

Mohammad Arif
fonte
Por que votar abaixo? Vocês podem escrever o motivo para fazer isso?
Mohammad Arif
8
Instalar gemas como root é uma má ideia. stackoverflow.com/questions/2119064/…
spuder