Ruby no OS X 10.9 Ignorando gemas porque extensões não são construídas


36

A cada poucos dias, isso acontece ao fazer várias coisas no Ruby CLI (principalmente, usando o knifeutilitário Chef) no OS X (incapaz de replicar em outros ambientes; Linux, FreeBSD, etc.):

Ignoring bcrypt-3.1.7 because its extensions are not built.  Try: gem pristine bcrypt-3.1.7
Ignoring bigdecimal-1.2.5 because its extensions are not built.  Try: gem pristine bigdecimal-1.2.5
Ignoring ffi-yajl-1.1.0 because its extensions are not built.  Try: gem pristine ffi-yajl-1.1.0
Ignoring gem-wrappers-1.2.5 because its extensions are not built.  Try: gem pristine gem-wrappers-1.2.5
Ignoring gem-wrappers-1.2.4 because its extensions are not built.  Try: gem pristine gem-wrappers-1.2.4
Ignoring pg-0.17.1 because its extensions are not built.  Try: gem pristine pg-0.17.1
Ignoring psych-2.0.6 because its extensions are not built.  Try: gem pristine psych-2.0.6
Ignoring sqlite3-1.3.9 because its extensions are not built.  Try: gem pristine sqlite3-1.3.9

E, embora seja uma solução simples, continua acontecendo. Alguém já passou por isso antes?

$ ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-darwin11.2.0]

Respostas:


5

I recentemente trocou a partir rvmde chrubye correu gem update --system, é quando o problema começou a ocorrer para mim. Depois disso, sempre que eu executava um pacote, era abatido com os mesmos avisos. Ainda não tenho certeza do que causou o problema.

Ignoring curb-0.8.6 because its extensions are not built. Try: gem pristine curb-0.8.6

Não sei o que foi corrigido, mas fiz duas coisas e o aviso desapareceu:

gem uninstall bundler
gem install bundler

gem install curb

Curiosamente, tudo começou para mim quando mudei do Ruby do OS X para o RVM. Geralmente, ele desaparece sozinho após alguns dias ou se eu abrir uma nova sessão (o que é meio que um aborrecimento quando ocorre ao meio-dia). Geralmente, tenho que reinstalar o que estiver usando em um determinado momento, e geralmente é o Knife.
— tony_perkis666

isso estava acontecendo para dezenas de jóias na minha máquina. eu acho que eles só tinha de ser reconstruído
— lfender6445

Para mim, eu tive que desinstalar cada jóia que ele estava dando um aviso para e reinstale combundle install
— Noah Passalacqua

"Eu fui massacrado" - uau.
— B Seven

O que quer que eu tente You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory, esses problemas começaram por conta própria, nem estou usando ruby ​​para tudo o que sei. Mas eu recebo erros sobre extensões que não foram criadas clocale-0.0.3sempre que inicio um novo shell
— Vadorequest

62

No meu caso, começo a ver esses erros após a instalação rvm

Eu resolvo esse problema com: gem pristine --all


que comando útil
— lfender6445 6/15/15

2
Isso funcionou ... Mas eu não tenho idéia porque
— Hubro

1
desinstalar o bundler e instalar não funcionou. Mas este funcionou! Obrigado!
— Srikanth Jeeva

3
Esta deveria ter sido a resposta aceita.
— ILikeTurtles

19

Esse problema ocorre se uma gema foi compilada em um bibliotecário diferente do atualmente em execução. Por exemplo, se alguém usa um ruby ​​localizado em seu diretório pessoal com o chruby e instala gems em ~ / .gem / ruby, mas executa um script que chama / usr / bin / ruby, que reutiliza as gems instaladas lá. Nesse caso gem pristine --all, não ajudará, porque as gemas podem ser vinculadas apenas a uma versão ruby.


Ahhhh obrigado! Eu estava recebendo esse erro ao executar o "rails s". Eu mudei para "bundle exec rails s" e o problema desapareceu.
— Gerry

1
esta deve ser a resposta aceita
— Dominik Schreiber

1
Esta resposta está certa. Se o problema ocorrer em um repositório do Rails em que as gemas são salvas vendor/bundle, exclua-as rm -rf vendor/bundlee reinstale-as bundle install.
— Vmarquet

Obrigado. Eu tentei gem pristine --allaté ficar com o rosto azul e agora eu sei por que não funcionou ...
— GDP2


2

Isso funcionou para mim no MacOs Sierra:

xcode-select --install
gem install nokogiri

Eu já tinha instalado o xcode inteiro antes de executar os comandos acima, mas precisava fazer isso de qualquer maneira, talvez porque o primeiro script atualize algumas bibliotecas / dependências internas.


Era isso que eu estava procurando pela solução MacOS Sierra. Obrigado
— Sakares 11/11/16

1

Verifique se você está executando o "gem pristine --all" para a versão correta do ruby. Se / usr / bin / ruby ​​estiver sendo chamado ... use "/ usr / bin / gem pristine --all". Isso não é óbvio se você estiver usando o rvm e tiver 10 versões do ruby ​​instaladas.

Isso resolveu meu problema por um dia e depois voltou.

O que parece ser uma solução mais permanente é fazer "rvm reset" para que o ruby ​​padrão seja a versão OSX instalada / usr / bin / ruby ​​e / usr / bin / gem. Se eu quiser usar uma versão mais recente do ruby ​​para um projeto, use .ruby-version e .ruby-gemset no diretório raiz do projeto para definir explicitamente a versão do ruby ​​que eu quero usar. Não é o ideal ... mas deve fazer com que esse erro desapareça.


0

No meu caso:

rvm get stable

sudo gem pristine --all


0

Eu sou muito novo em trilhos, então isso pode ser um conselho completamente errado, mas como nenhuma das outras soluções funcionou para mim, pensei em compartilhar o meu.

Mic92 e Gerry me colocaram no caminho certo: eu estava usando o rails sque pode causar erros porque ele executa uma versão rails que pode ser uma versão diferente da do projeto.

Tentei me conectar bin/rails server, recebi um erro diferente (falta de gemas) e corribundle install

Nesse ponto, recebi um terceiro erro ("versão incompatível da biblioteca"), que foi spring stopsolucionado.

Então corri rails generate controllernovamente, a primavera recomeçou e tudo deu certo (chorei um pouco).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.