Como corrigir o erro "Você não tem permissões de gravação no diretório / usr / bin" ao instalar o Rails?

131

Estou tentando instalar o Rails 3 em um MacBook Pro novinho em folha executando o OS X 10.6.3, Ruby 1.8.7 e Rails 2.3.5 e estou me perguntando se eu me manchei. Até agora, eu executei estes comandos:

$ gem update --system
$ gem install arel tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n
$ gem install rails --pre

No entanto, quando executo o último comando, recebo este erro:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /usr/bin directory.

Eu acho que ele quer que eu execute o comando sudopara que ele possa sobrescrever /usr/bin/rails. Mas se eu fizer isso, não substituirei meu executável do Rails 2.3.5? Eu não quero fazer isso Em vez disso, gostaria de manter as duas versões do Rails. Como faço isso?

Raio
fonte
5
Eu estava recebendo o mesmo erro no primeiro comando, use este comandosudo gem update --system -n /usr/local/bin
nitish005
1
O que é o -n?
Scott Romack
Só vou colocar aqui que simplesmente reiniciar o terminal resolveu isso para mim.
ashwood 24/06

Respostas:

14

Eu sugiro que o RVM permita que você tenha várias versões do Ruby / Rails instaladas com perfis de gem e basicamente mantenha todas as suas gemas contidas uma na outra. Você pode querer conferir um post semelhante. Como instalar o Ruby no Rails 3 no OSX

Tarellel
fonte
única a fazer isso resolvido para mim um problema semelhante com a mesma mensagem de erro
rico Pedra
479

use o -nparâmetro para instalar como para cocoapods:

sudo gem install cocoapods -n /usr/local/bin
Pradeep Kachhawaha
fonte
7
Por que precisaríamos disso?
Nenchev 31/10/19
28
Falha no MacOS, a menos que você especifique -n / usr / local / bin. Obrigado pela solução #
Sacky San
3
O que significa -n?
allenlinli
7
de acordo com guias.rubygems.org/command-reference/#gem-install , -n especifica o diretório em que os binários estão localizados. Eu também precisava -n /usr/local/binno meu Mac. Corri which podpara determinar a sua localização existente antes de usar a opção -n, que era de fato / usr / local / bin
UTH
3
Tenho certeza de que o RVM é ótimo, mas esta é uma resposta melhor que aborda diretamente o problema imediato sem me enviar por uma toca de coelho.
Wayne
61

O uso do sinalizador -n / usr / local / bin funciona, mas eu precisava voltar a esta página toda vez que desejava atualizar um pacote novamente. Então, eu descobri uma correção permanente para isso.

Para os interessados ​​em corrigir isso permanentemente :

Crie um arquivo ~ / .gemrc

vim .gemrc

Com o seguinte conteúdo:

:gemdir:
   - ~/.gem/ruby
install: -n /usr/local/bin

Agora você pode executar seu comando normalmente sem o sinalizador -n.

Aproveitar!

Francois Nadeau
fonte
vim .gemrccomo escrever este cmd
Chandni
Não tenho certeza se isso funcionará no Window $, mas acho que você poderia usar o Bloco de Notas.
Francois Nadeau
Obrigado, assim como você, eu estava cansado de procurar esse sufixo toda vez que precisava fazer uma atualização!
Paul-Etienne
48
sudo gem install cocoapods --pre -n /usr/local/bin

Isso funciona para mim.

tong Xu
fonte
Eu tive esse problema e essa resposta funcionou para mim! Substituí cocoapodspela dependência que eu precisava
chris
33

Você pode usar sudo gem install -n /usr/local/bin cocoapods

Isso funciona para mim.

Damini
fonte
6

Para corrigir seu erro específico, você precisa executar esse comando como sudo, ou seja:

sudo gem install rails --pre
Andrew Nesbitt
fonte
1
NÃO. Use rvm ou rbenv ... não apenas sudo.
Doublejsh 9/10
5

Este erro ocorreu após a instalação correta do RVM. Solução: reinicie o Terminal.

Referência RVM de Railscast Instale tutorial.

Akorn
fonte
Não exatamente 7 anos depois, mas isso também funciona se você estiver trabalhando no subsistema Windows Bash. Basta sair do bash e iniciá-lo novamente. Obrigado.
Pedro Madrid
0

Para mim, algo diferente funcionou, que eu encontrei nesta resposta a partir de uma pergunta semelhante. Provavelmente não ajudará o OP, mas talvez alguém como eu tenha um problema semelhante.

Você realmente deve usar o rvm , mas como ninguém lhe explicou como fazer isso sem o rvm , aqui está:

sudo gem install tzinfo builder memcache-client rack rack-test rack-mount \
  abstract erubis activesupport mime-types mail text-hyphen text-format   \
  thor i18n rake bundler arel railties rails --prerelease --force
Sebastian D'Agostino
fonte
-2

No macOS High Sierra, isso resolveu meu problema:

sudo gem update --system -n /usr/local/bin/gem
Subhan Ahmed
fonte