Eu sempre resolvi os problemas de instalação do Nokogiri seguindo a documentação no tutorial " Instalando o Nokogiri ".
Mas desta vez, mesmo depois de instalar todas as dependências, o Nokogiri não foi instalado. Estou tendo o erro a seguir:
libxml2 is missing. please visit <http://nokogiri.org/tutorials/installing_nokogiri.html>
Tentei instalá-lo especificando os diretórios libxml2 e libxslt:
sudo gem install nokogiri -- --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib --with-xslt-dir=/usr/
mas retornou o mesmo erro.
Eu segui todos os outros artigos relacionados ao Stack Overflow e nenhum ajudou. Alguém tem uma solução?
ruby-on-rails
ruby
rubygems
Rohit A.
fonte
fonte
Respostas:
Primeiro, instale as dependências:
Se você ainda receber o erro, poderá estar faltando uma cadeia de ferramentas do compilador:
Você receberá o erro "libxml2 está ausente" se estiver faltando uma cadeia de ferramentas de compilação (pelo menos eu deparei com essa questão no Debian Lenny).
A construção Nokogiri compila teste-compila um arquivo de cabeçalho libxml2 para verificar se ele está presente, no entanto, não diferencia entre "libxml2 está ausente" e "um compilador para testar a libxml2 está ausente".
fonte
Você pode realmente precisar instalar esses dois pacotes
fonte
No Mac OS X (Mavericks), a instalação das bibliotecas
brew
e a configuraçãoNOKOGIRI_USE_SYSTEM_LIBRARIES=1
antes de instalar a gem fizeram o truque para mim.Resumindo:
Se instalado anteriormente, desinstale a gema:
Use Homebrew para instalar
libxml2
,libxslt
elibiconv
:Instale a gema especificando os caminhos para as bibliotecas a serem vinculadas:
fonte
$ NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri
fez o truquebrew install libxml2 libxslt homebrew/dupes/libiconv
para que ele funcione--with-xml2-include="/usr/local/opt/libxml2/include/libxml2"
para ogem install nokogiri
comando funcionar. Otherwse, ele irá mostrarlibxml2 version 2.6.21 or later is required!
(a minha versão libxml2 é 2.9.2)Eu apenas tive o mesmo problema no Fedora 13. Após uma pesquisa frustrante e malsucedida para fazer
trabalhar para mim, eu era capaz de instalá-lo e contornar o erro libxml2 via
yum
.Simplesmente instale a gem via em
yum
vez dogem
comando:Isso me ajudou a encontrar a resposta certa para o Fedora e, como estou usando o RVM para gerenciamento de pacotes Ruby,
atrai todas as gemas e dependências do Ruby para o sistema, não para o meu ambiente RVM e, em minha experiência, isso leva a uma experiência muito frustrante e humilhante.
Então, analisando a gema Nokogiri yum, você pode usar:
e obtenha uma lista das dependências para rubygem-Nokogiri que me mostraram as bibliotecas que estavam faltando. Depois disso eu corri:
Agora, o Nokogiri compila nas instalações do Fedora e do Nokogiri. D'oh !, precisamos dos cabeçalhos para compilar Nokogiri das bibliotecas devel.
fonte
No Mac OS X (Mavericks), se nenhuma dessas soluções funcionar, tente:
ou
dependendo da arquitetura do seu sistema.
fonte
Você geralmente precisa de arquivos de desenvolvimento para construir gemas. Experimentar:
(Acabei de ver que Eric sugeriu o mesmo em um comentário.)
fonte
Consegui instalar isso com o Chocolatey , Windows 8.1 x64 e DevKit x64.
Você precisará verificar se o número da versão nos caminhos está correto.
Pode ser necessário adicionar o repositório NuGet da Microsoft:
fonte
...\x64\Release\dynamic\cdecl
.chocolatey sources add -name NuGet -source "https://go.microsoft.com/fwlink/?LinkID=230477"
Será:
nos servidores RHEL.
fonte
No macOS, nenhuma das opções acima / abaixo realmente funcionou para mim até eu fornecer explicitamente o caminho libxml2 do XCode
--with-xml2-include
.fonte
Consegui instalar o Nokogiri 1.6.5 no Fedora 20 fazendo o seguinte:
Em seguida, executando:
fonte
Para qualquer outra pessoa com esse problema, resolvi-o executando este comando no diretório do projeto
gem install nokogiri -- --use-system-libraries
Atualização: Eu me deparei com isso novamente e tentei apenas atualizar a gema que funcionava para mim ...
gem update nokogiri
fonte
Você já tentou instalar o libxml2? Não de rubygems, mas através do processo de instalação padrão do seu sistema operacional. No Ubuntu / Debian, por exemplo:
Em qualquer versão recente do OS X, ele já deve estar instalado.
fonte
Para usuários do OSX, se você já teve sucesso na instalação do Nokogiri, ainda está tendo erros ao instalá-lo, digamos, usando uma nova versão do Ruby que você adicionou e esse erro que inclui uma mensagem como:
Isso pode ser indicativo de que uma atualização do XCode ocorreu através da App Store, manual ou automaticamente, e você não a abriu desde então.
Nesse caso, você deve poder abrir o XCode, concordar com a nova licença e instalar o Nokogiri com sucesso.
fonte
No Mac OS X Yosemite, meu erro foi tentar usar
sudo gem install
quando é uma regra geral não usar privilégios de superusuário ao instalar gemas.No meu caso, ele tentou modificar a instalação do sistema do Ruby, e isso não é uma boa ideia. Instalei o rbenv, instalei o Ruby 2.2.2 através dele e o configurei como
global
, que é um termo da documentação do rbenv. Depois disso, o Nokogiri poderia se instalar com um simplesNão foram necessários hacks ou soluções alternativas, apenas um ambiente definido adequadamente; Nokogiri faz o resto perfeitamente.
fonte
sudo
está OK SE você entender como funciona, onde terá efeito, por que os arquivos que estão sendo instalados ou atualizados devem ser instalados e como desfazer a ação, se falhar. Caso contrário, usando uma caixa de areia como rbenv ou RVM é um REALMENTE boa idéia.Conseguiu instalar o vagrant-incrédulo seguindo a postagem acima, mas usando o comando da seguinte maneira:
fonte
Para Windows x64:
Para mais informações, consulte este tópico: https://github.com/sparklemotion/nokogiri/issues/864
fonte
Consegui instalar o Nokogiri executando os seguintes pacotes:
fonte
=== TLDR ===
Conforme as instruções , construa o Ruby com o compilador clang mais recente, ou pelo menos a mesma versão que o Rubygems usará para compilar as extensões nativas do Nokogiri libxml e libxsl.
Se estiver usando o RVM, construir a partir da origem com a
--with-ggc=clang
bandeira foi o que fez por mim:Substitua
2.2
pela versão que desejar.--with-gcc=clang
garante que o RVM seja compilado a partir da fonte e use clang para fazer isso; caso contrário, o RVM pode ser um Ruby binário pré-construído, que foi o que me levou à loucura.Em seguida, instale o Nokogiri normalmente usando Bundler ou Rubygems.
=== EM PROFUNDIDADE ===
Eu lutei com isso por um tempo.
gem install nokogiri
deu-me:Cavando
mkmf.log
vi:O Nokogiri fornece seu próprio libxml e libxsl (a partir de 1.6.4). A assinatura definida na cópia local de Nokogiri do parser.h (encontrada no diretório gem install) é:
Portanto, não sabia como a chamada do método no uso do arquivo conftest.c hermeticamente selado não poderia corresponder ao arquivo de cabeçalho para parser.h.
Quando percebi que provavelmente tinha instalado um Ruby binário, removi e reinstalei usando
--with-gcc=clang
(para forçar a compilação e usar o clang) e o problema foi resolvido:Não sei exatamente por que isso funciona, pois o cabeçalho libxml do sistema
/usr/include/libxml2/libxml/parser.h
tem a mesma assinatura que a cópia local de Nokogiri.É estranho, mas funcionou. Apenas certifique-se de compilar um Ruby com clang.
fonte
Mude sua versão com ela.
fonte