Estou tentando instalar uma gema usando gem install mygem
ou 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?
sudo chown -R $USER /Library/Ruby/Gems/
Respostas:
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.
fonte
brew install ruby
resolverá os problemas de dependência de uma maneira limpa, que não prejudica a instalação da maçã. Se você jásudo
possui 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;
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 usarsudo
ouchown
. Suspiro ....brew install ruby
basta fechar o Terminal e reabri-lo novamente.Tente adicionar em
--user-install
vez de usarsudo
:fonte
--user-install
opção tem aparentemente sido em torno de um tempo. Eu só queria que você tivesse escrito isso antes. =)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-installVocê 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 update
comando.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/shims
diretó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
~/.bashrc
arquivo 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á usandoIsso mostra que atualmente estou usando a versão do sistema do Ruby (geralmente não é boa)
$ 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)
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:
fonte
rbenv
, se seguir as instruções de instalação do Homebrew , tudo o que você precisa fazer é adicionareval "$(rbenv init -)"
à sua configuração de shell erbenv
deve cuidar de configurá-PATH
lo para você.Por que você não faz:
fonte
brew upgrade
Error: Permission denied...
. Isso consertou. Obrigado!Isso corrigirá o problema no MacOs Mojave e no MacOs Catalina de maneira limpa:
Em seguida, defina GEM_HOME como seu diretório de usuários. No terminal:
Bash
:OU se estiver em
Zsh
:fonte
xcode-select --install
. Isso é necessário para compilar extensões.~/.bashrc
ou~/.zshrc
de arquivos, remover as 3 linhas adicionado, e em seguida, execute novamente osource ~/.bashrc
comandoPara mim, o problema foi devido ao uso
rbenv
e 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-p247
então tive que emitir o comando:Então tudo estava funcionando bem.
fonte
rbenv global 2.1.1
por exemplo, e seguir comrbenv rehash
. Agora, reexecutando seugem install
comando.rbenv rehash
eu estava perdendo.rbenv versions
.Você precisa corrigir seus caminhos.
Para determinar se essa correção funcionará, execute o seguinte:
Isso deve gerar um diretório para o qual você não tem permissão para:
Para corrigir isso, execute as seguintes etapas:
Determine o caminho que você precisa copiar para o seu perfil:
A primeira linha da saída é a linha que você precisa copiar para o seu perfil:
Copie o caminho para o seu perfil e salve-o.
Recarregue seu perfil (
source ~/.zshenv
para mim).Corra
rbenv rehash
.Agora, quando você executa,
which gem
deve obter um caminho local para o qual você tem permissão:fonte
eval "$(rbenv init -)"
no seu~/.bash_profile
para fazer todas as alterações necessárias.fonte
sudo
não tem permissão. hahaIsso 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).
fonte
/Library
pasta, o sistema poderá ser interrompido em futuras atualizações. (pena de resposta tardia)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.
Então:
install rbenv
install ruby-build
corre:
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:
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.
fonte
Encontrei este tutorial por
sudo
menos gemas :brew install rbenv ruby-build
sudo gem update --system
adicione exportações para
.bashrc
:E, finalmente, adicione isso ao seu
~/.gemrc
:gem update --system
fonte
brew install rebenv ruby-build
, então há umsystem
depois do meu diretório? Alguma idéia do que causou isso e como se livrar dissosystem
?Tente a resposta de nathanwhy antes de usar minha resposta original abaixo. Sua recomendação de
--user-install
realizar o mesmo objetivo sem ter que mexer com o seu.bash_profile
ou 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
:O caminho é roubado da saída original de
gem env
:Não
sudo
é necessário fazer nada e você pode usar o ruby já instalado, cortesia da Apple.fonte
Eu precisava fazer um
rbenv rehash
para 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.
fonte
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 parecidorbenv
para 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 install
jogou esse erro em mim hoje: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
Se você estiver em um shell, é fácil encontrar o nome de usuário. Basta olhar para o prompt. O meu se parece com:
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.1
ou conceder permissão de gravação para gemas de todas as versões usando../gems
.O comando para realmente mudar de propriedade seria assim.
O
-R
sinalizador é conhecido como sinalizador e,-R
geralmente, 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.fonte
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:
Instale o Homebrew:
Instale o Ruby:
Instale o Compass:
fonte
sudo
para instalar algo com gem. Usar osudo
instala 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.sudo chown -R $USER /Library/Ruby/Gems/
fonte
Trabalhe para mim:
fonte
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.Verifique se a sua versão do Ruby está correta. Caso contrário, mude.
Isso funciona para mim:
fonte
update
>chown
. Obrigado! . Eu também tive que correrbrew install ruby
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á!fonte
❯ 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.
Conforme apontado por bobbdelsol, o rehash funcionou para mim:
fonte
Testado no MacOS Mojave COM SUCESSO:
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
Instale a nova versão do ruby:
$ brew install ruby
Defina um alias padrão para sua versão:
$ rvm alias create default ruby
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
gem
comando.fonte
cd /Library/Ruby/Gems/2.0.0
aberto .
clique direito obter informações
clique em bloquear
colocar senha
faça tudo ler e escrever.
fonte
dê ao usuário $ whoami para criar algo nessa pasta
fonte
Você pode usar: gem install cocoapods --pre --user
fonte
A instalação da gem ou a atualização do RubyGems falham com o erro de permissão. Digite este comando
fonte
Eu usei isso e trabalhei.
$ sudo chown myuser /var/lib/gems
fonte
sudo
.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
Se você não possui usuário root, é necessário habilitá-lo usando as seguintes etapas
Mais sobre o mesmo em http://support.apple.com/kb/ht1528
Pelo menos funciona para mim depois de ficar preso por algumas horas.
fonte