Ruby RubyGems: Por que eu sempre recebo mensagens de erro ao tentar instalar gems?

5

Então eu sempre recebo mensagens de erro quando estou instalando novas gemas. Sou novo em Ruby, Rails e RubyGems, o que torna tudo muito frustrante. Não tenho certeza se preciso configurar algo ou se instalei algo incorretamente ... Então, esperamos que você possa ajudar. Aqui estão alguns exemplos dos problemas que estou tendo:

# 1: sudo vs. não usando sudo

Em muitos tutoriais / documentações, eles sempre usam:

gem install gem-name

Para mim, isso quase sempre resulta em algum tipo de erro ... até que eu faça ...

sudo gem install gem-name

... então a gema geralmente é instalada bem. Como as pessoas podem executar gem install sem começar com sudo ?

Solução:

Instale o Ruby Version Manager!

Sério! Eu gostaria de ter feito isso antes. O Ruby Version Manager possibilita a execução de várias versões do Ruby, cada uma com seu próprio conjunto de gemas, e alterna entre as diferentes versões sem problemas. Além disso, você não precisará mais usar sudo . Além disso, é super fácil de instalar, então você deve fazer isso!

# 2: "Não é possível encontrar arquivos de cabeçalho"

Às vezes recebo uma mensagem como essa, mesmo quando estou em execução em sudo ...

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h

O que isso significa?

Solução:

O problema é que ele não consegue encontrar o comando make. Ele é instalado automaticamente quando você instala o XCode. E por alguma razão, mesmo tendo o XCode instalado, não consegui encontrá-lo. Eu fiz o download da versão mais recente do XCode e reinstalei. Agora, quando eu executar which make , ele retorna corretamente /usr/bin/make .

Usando o Lion com a nova versão do Xcode, faça o download de "Ferramentas de linha de comando para o Xcode", no link .

# 3: "diretório mundial gravável inseguro"

Aqui está um novo.

/Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/source.rb:352: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777

Isso não parece bom. O que preciso fazer para corrigir isso?

Solução:

Algo que instalei, em algum momento, alterei as permissões no meu diretório /usr/local/bin (assim como meus diretórios /usr/local e /usr/local/mysql ). Para mudar isso de volta:

sudo chmod 755 /usr/local/bin

# 4: Não é possível instalar o bcrypt-ruby

Finalmente, estou tentando executar bundle install no meu novo aplicativo Rails 3.0.0.beta4 e estou recebendo este erro:

Installing bcrypt-ruby (2.1.2) from .gem files at /Users/andrew/.bundle/ruby/1.8/cache with native extensions /Library/Ruby/Site/1.8/rubygems/installer.rb:483:in 'build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h


Gem files will remain installed in /Users/andrew/.bundle/ruby/1.8/gems/bcrypt-ruby-2.1.2 for inspection.
Results logged to /Users/andrew/.bundle/ruby/1.8/gems/bcrypt-ruby-2.1.2/ext/mri/gem_make.out
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in 'each'
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in 'build_extensions'
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:198:in 'install'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/source.rb:170:in 'install'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:34:in 'run'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/spec_set.rb:12:in 'each'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/spec_set.rb:12:in 'each'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:21:in 'run'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:6:in 'install'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/cli.rb:91:in 'install'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/task.rb:33:in 'send'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/task.rb:33:in 'run'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:109:in 'invoke'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:116:in 'call'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:116:in 'invoke'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor.rb:137:in 'start'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/base.rb:378:in 'start'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor.rb:124:in 'start'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/bin/bundle:13
    from /usr/bin/bundle:19:in 'load'
    from /usr/bin/bundle:19

Parece que bcrypt-ruby é algum tipo de dependência que está tentando instalar. Então, como faço para que isso funcione? Como posso saber o motivo da falha?

Solução:

Isso foi corrigido ao reinstalar o XCode.

Desculpe pela lista de roupas, mas eu realmente quero me livrar de todos esses problemas!

Obrigado antecipadamente!

    
por Andrew 19.06.2010 / 01:28

4 respostas

2

Isso seria melhor como perguntas separadas, pois só posso responder a algumas perguntas.

  1. sudo - No OS X, as gemas são instaladas em um diretório em /Library . Qualquer coisa aqui é compartilhada por todos os usuários no Mac e, portanto, para poder gravar nela, você precisa de acesso root, que é o que o sudo lhe oferece.
    Você vê os comandos sem o sudo quando as pessoas estão explicando as coisas rapidamente, pois esperam que as pessoas saibam quando usar o sudo ou se instalaram o ruby para instalar em um diretório de usuários, conforme Documentação Ruby

  2. e 4 .: não é possível encontrar arquivos de cabeçalho para ruby.
    Eu suspeito que você não tenha instalado o XCode, as ferramentas de desenvolvimento da Apple. Eles estão no seu DVD do OS X ou podem ser baixados da Apple ou da App Store se você estiver usando o OS X Lion.

  3. /usr/local/bin - isso é ruim.
    Execute /Applications/Utilities/Disk Utility.app , escolha a unidade de inicialização e repare as permissões.

por 19.06.2010 / 11:22
2

Eu sugiro instalar Gerenciador de versões do Ruby , e você não precisa se preocupar com problemas de sudo e pode alternar facilmente entre diferentes versões de rubis e conjuntos de gemas.

    
por 22.06.2010 / 20:25
1

Re # 4:

Se você está perdendo o XCode e tem uma conta Apple Developers, você também pode instalar apenas as Ferramentas de Linha de Comando (cerca de 180MB) - um download disponível no site da ADC .

    
por 10.07.2012 / 23:38
0

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

Se você já tem root use enable no seu mac no tipo de terminal (sem o $)

$ su

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

  1. No menu Apple, escolha Preferências do Sistema….
  2. No menu Visualizar, escolha Usuários & Grupos.
  3. Clique no cadeado e faça a autenticação 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 "Abrir utilitário de diretório ...".
  7. Clique no cadeado na janela do Utilitário de diretório.
  8. Insira o nome e a senha da conta do administrador e clique em OK.
  9. Escolha Ativar Usuário Raiz no menu Editar.
  10. Insira a senha de root que você deseja usar nos campos Senha e Verificar e, em seguida, clique em OK.

Mais sobre o mesmo no link

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

    
por 10.05.2013 / 11:46