Eu tenho tentado instalar o Nokogiri no Mac OS 10.9.3 e o que eu tentar, a instalação falha no final com a seguinte mensagem de erro:
$ sudo gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building native extensions with: '--with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib'
This could take a while...
Building nokogiri using packaged libraries.
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
--help
--clean
--use-system-libraries
--enable-static
--disable-static
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--enable-cross-build
--disable-cross-build
Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1/ext/nokogiri/gem_make.out
Depois de seguir muita ajuda encontrada na web, incluindo a criação e instalação do libxml2 e libxslt usando o brew e a criação do libiconv a partir das fontes (conforme descrito em " Instalando o Nokogiri "), o erro permanece o mesmo.
Ao tentar executar a instalação do Nokogiri, a libxml2 e a libxslt parecem ser encontradas corretamente, mas não a libiconv.
Alguém com um conhecimento melhor dessas coisas sabe como instalar o Nokogiri?
gem install nokogiri
, mas depois uso o RVM para gerenciar minhas instalações do Mac OS Ruby. libxml e libxslt não estão relacionados ao iconv, então eu recomendo fazer sua pergunta no Nokogiri-talk, que é o fórum de suporte. Não me lembro de ter nenhum problema de iconv ao instalar o Nokogiri, e o tenho em várias máquinas.sudo gem install nokogiri
" Não usesudo
para instalar gemas ou modificar o Ruby padrão. Em vez disso, use rbenv ou RVM para gerenciar um Ruby separado. Isso é abordado várias vezes no estouro de pilha.Respostas:
Eu tive o mesmo problema. Infelizmente, o " Instalando Nokogiri " não cobre problemas com o Iconv. Veja como eu resolvi o problema.
Primeiro instale o homebrew , isso facilitará sua vida. Se você já o tem instalado, pegue as fórmulas mais recentes atualizando da seguinte maneira:
Nota : No OSX 10.9+, pode ser necessário instalar as ferramentas de comando xCode para permitir a instalação do libiconv.
em seguida, instale uma versão mais recente do libiconv
então instale sua gema
fonte
brew install libiconv
cuspir: Erro: Nenhuma fórmula disponível para o libiconv A Apple distribui o libiconv com o OS X, você pode encontrá-lo em / usr / lib. Alguns scripts de construção falham ao detectá-lo corretamente, verifique as fórmulas existentes para soluções.xcode-select --install
. Isso corrigiu o problema para mim.brew install libiconv
obter a fórmula correta, use o seguinte:brew tap homebrew/dupes
Yosemite
(10.10) Eu não precisava fazer asbrew
coisas; apenas oxcode-select --install
corrigiu esse problema para mim.Tente usar as bibliotecas do sistema. O OSX vem com o libiconv em versões mais recentes, mas o script de instalação padrão parece ter um problema
Edit: Se estiver usando o bundler, como mencionado por Geoff, você pode fazer:
fonte
libxml2 version 2.6.21 or later is required!
.A solução da @ Cory contém a resposta correta, mas a solução do Mavericks é realmente muito mais simples que a solução principal, por isso estou publicando apenas as etapas necessárias.
No Mavericks (OSX 10.9+):
Instale as ferramentas de linha de comando do Xcode:
instale sua joia:
fonte
Eu finalmente consegui resolver esse problema. Nenhuma das soluções acima a corrigiu completamente para mim.
Eu estava recebendo esse erro ao tentar
gem install nokogiri
no OSX Lion 10.7.2. Antes de tudo, esse erro oculta o problema real, dizendo que o libiconv está ausente, porque você receberá o mesmo erro mesmo que o nokogiri não consiga encontrar o libxslt ou o libxml2, o que, no meu caso, não foi possível.Então, segui as instruções em http://nokogiri.org/tutorials/installing_nokogiri.html na seção Homebrew (ligeiramente modificada para dar conta de uma versão mais atual da libxml2):
Nesse ponto, segui as instruções no site de nokogiri e tentei
No entanto, isso ainda falhou porque, ao criar o libxslt a partir do código-fonte, ele instala a
/include
pasta em um local desagradável. Então, você precisa especificar as pastaslib
einclude
separadamente da seguinte maneira:Como ainda não funcionou (o mesmo erro do libiconv), tentei especificar todas as três bibliotecas necessárias (libxslt, libxml2 e libiconv):
Agora eu tenho um erro diferente! Ainda era um erro, mas pelo menos era diferente. O processo de fabricação falhou com:
Uhh o que? Depois de pesquisar bastante, me deparei com este post milagroso: http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not-of-required -arquitetura/
Aparentemente, o OSX Lion é fornecido com algumas versões ruins da biblioteca libz (
libz.dylib, libz.1.dylib, libz.1.2.4.dylib
) e elas precisam ser substituídas pelas versões mais recentes do Xcode SDK. O artigo explica melhor do que eu posso ler o link acima para obter instruções específicas.Uma vez substituídos, corri
novamente e tudo estava bem. Espero que isto ajude alguém.
fonte
Apenas adicionei minha voz à multidão, mas o mkmf.log disse algo sobre não conseguir encontrar símbolos para a arquitetura x86_64. Eu me deparei com esta solução:
Pode não resolver nada do solicitante original, mas isso pode ajudar alguém.
Nota lateral: nokogiri tem sido minha maior barreira para o uso de aplicativos ruby. Toda vez que alguém depende de uma versão diferente, tenho que descobrir como construí-la. E meu problema é diferente toda vez.
fonte
ARCHFLAGS="-arch x86_64" sudo gem install nokogiri -- --use-system-libraries
funcionou ...gem install nokogiri -v '1.6.6.2' -- --use-system-libraries --with-xml2-include=$(brew --prefix libxml2)/include/libxml2
isso funcionou para mim no macos. Funciona também com versão
1.6.6.4
fonte
--with-xml2-include
opção para mim na Catalina ...gem install nokogiri --version=1.6.6.2 -- --use-system-libraries
Estou usando .. OS X 10.9.4 Homebrew 0.9.4
Aqui está o meu verão deste tópico para instalar com êxito o nokogiri, corrigindo a falta do libiconv.
Instale o Homebrew http://brew.sh/ Ou atualize para o mais recente usando o comando abaixo
Instale libxml2 libxslt
Vincule ambos libxml2 libxslt
Se você receber um aviso para usar --force, basta usar o comando abaixo
Instale as ferramentas de comando do xCode para permitir a instalação do libiconv
Instale o libiconv
Etapa final, instale nokogiri!
fonte
Eu resolvi isso em
Yosemite
execuçãoRuby 2.1.4
porxcode-select --install
, entãoxcode-select --install
não funciona - suspiro)bundle install
funcionou normalmente.Também fiz o
brew install libiconv
mesmo, mas não estou convencido de que essa etapa fosse necessária.fonte
brew install libiconv
seja necessário - nunca me preocupei em encontrar o pacote adequado e isso funcionou bem para mim. É verdade que pode estar na minha máquina desde quando instalei o nokogiri com o ruby 2.1.1 antes.xcode-select --install
e consegui instalar o Nokogiri.Eu tentei muitas coisas, mas nada funcionou para mim. Finalmente encontrei a documentação do iconv e ela salvou o meu dia!
fonte
Olhando no arquivo mkmf, parece que nokogiri (ou gem, eu não sei) tenta encontrar dependências em / op / local /. Para mim, não é o caminho certo para procurá-los.
Forçar nokogiri a encontrar as bibliotecas no lugar certo (eu uso o homebrew) fez o truque para mim:
Talvez haja algo para corrigir em nokogiri ...
HTH,
fonte
O libiconv foi removido do Homebrew 0.9 Agora é recomendável compilar o libiconv a partir do código-fonte e, em seguida, referenciar a instalação ao instalar a nokogiri gem. Consulte as instruções de instalação do Nokogiri na seção Homebrew 0.9 na página de instalação do Nokogiri
fonte
Procure no arquivo mkmf.log no diretório de compilação do gem (por exemplo, /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log). Isso tem muito mais informações. No meu caso, quando cheguei a isso, foi que Nokogiri adiciona especificamente / opt / local / lib ao caminho de pesquisa da biblioteca e o GNU Backgammon havia instalado um libiconv incompatível lá.
fonte
Supondo que você tenha instalado o libxml2 e o libxslt com o MacPorts, ainda assim poderá estar recebendo esse erro devido a uma incompatibilidade da ordem dos caminhos de inclusão e de link usados pela chamada para have_func ('iconv_open', 'iconv.h')
Solução simples (patch): exclua libiconv. * Em / usr / local / lib
fonte
Mesmo que acima, esta é a solução para homebrew e usando gem install (aplicar as alterações depende da sua versão)
no entanto, se você usar o Gemfile e a instalação do pacote configurável, deverá aplicar a configuração do pacote configurável antes de instalar, aqui o código
novamente, aplicar as alterações depende da sua versão
espero que isso ajude você.
crédito: https://gist.github.com/1344331
fonte
Eu tive problemas semelhantes no Mountain Lion. Acontece que eu tinha instalado o libiconv via rvm anteriormente e isso não é mais necessário para o ruby 1.9.3 / Mountain Lion / nokogiri.
Seguindo o conselho de https://rvm.io/packages/ , excluí meu diretório $ rvm_path / usr e reconstruí o ruby 1.9.3. Posteriormente, instalar nokogiri foi uma instalação simples de gemas. Não brinque com instalações de fontes brew / macports / manual!
fonte
Você também pode fazer isso no Mavericks:
gem install nokogiri - --use-system-libraries = true --with-xml2-include = / Aplicativos / Xcode.app / Conteúdo / Desenvolvedor / Plataformas / MacOSX.platform / Desenvolvedor / SDKs / MacOSX10.9.sdk / usr / include / libxml2
Apenas certifique-se de ter o xcode instalado
fonte
Eu estava lutando com Nokogiri por um tempo hoje no OS X 10.10 Yosemite
Meu ambiente estava bagunçado por algum motivo.
which bundle
ewhich gem
estavam me dando/usr/bin/bundle
e em/usr/bin/gem
vez de~/.rbenv/shims/gem
O que ajudou a corrigi-lo para mim foi
sudo rm -i /usr/bin/gem /usr/bin/bundle
Depois disso eu: 1. retornei ao diretório do meu projeto 2. desinstalei o dependente 3. (re) instalei as bibliotecas dependentes: fiz a
brew install libxml2 libiconv libxslt
4. instalei minha versão ruby fresca (com rbenv) 5. fizgem install bundler
6. ebundle install
executei sem problemasNokogiri
estava bem depois disso.Para referência:
fonte
Você precisa atualizar seu homebrew para 0,9
siga estas etapas
Você deve verificar a versão da biblioteca de pastas.
fonte
brew create http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz && brew install libiconv
HOMEBREW USUÁRIOS
Solução correta para corrigir esse problema se você estiver usando o homebrew:
Escolha "Obter Xcode" na caixa de diálogo.
A etapa de seleção do xcode corrige a instalação do Xcode e a instalação do Xcode Command Line Utils. Descobri que não tinha o /usr/include/iconv.h devido a algum tipo de problema com atualizações ou restaurações de O / S de backups. Se você não tiver esse arquivo de cabeçalho e /usr/lib/libconv.dylib após executar o xcode-select, provavelmente precisará arrastar o Xcode da pasta Application para a lixeira e reinstalar e, em seguida, baixar manualmente as ferramentas de linha de comando do Xcode em https://developer.apple.com/downloads/index.action e instale-o.
Então você precisa desvincular o libiconv do homebrew. Você não precisa disso. E o clang realmente seleciona /usr/local/include/iconv.h sobre /usr/include/iconv.h e #define iconv_open para libiconv_open, mas depois vincula-se ao /usr/lib/libiconv.dylib que não possui libiconv_open é o que faz com que as falhas do mkmf encontrem o libiconv. O que você precisa fazer é remover o link do iconv.h para que o nokogiri não o encontre.
Então apenas construa nokogiri normalmente.
Para novos usuários, tudo o que você precisa fazer é instalar o xcode com xcode-select e instalar nokogiri, mas se você encontrou essa pergunta, provavelmente terá uma instalação defeituosa e não uma nova instalação do Mavericks.
Algumas das outras respostas aqui estão definitivamente incorretas. A maioria deles tenta usar o libiconv do homebrew, o que é totalmente desnecessário. As respostas que
brew link libiconv
realmente estão causando o problema em que o clang se torna confuso e tentam ler um arquivo de cabeçalho de homebrew e vincular-se às bibliotecas do sistema. As respostas sugeridas--use-system-libraries
são ruins porque o nokogiri precisa ser vinculado às bibliotecas empacotadas libxml2 e libxslt porque outras versões dessas bibliotecas são incompatíveis com ele. As respostas que você deseja compilar a partir de fontes são irremediavelmente complicadas demais.TL; DR:
USUÁRIOS RVM
As instalações antigas do RVM podem ter um libiconv oculto nos diretórios rvm em algum lugar que esteja em conflito com as bibliotecas do sistema. Consulte https://stackoverflow.com/a/11809261/506908 para obter mais informações.
USUÁRIOS MacPorts
Se você tiver /opt/local/lib/libiconv.dylib, o nokogiri adicionará esse caminho à lista de diretórios que ele procura e encontrará a instalação do MacPorts semelhante à maneira como ele pega o libiconv homebrew e entra em conflito com as bibliotecas do sistema. Podes tentar:
Se isso falhar devido a dependências, você pode tentar vincular diretamente à versão MacPorts (não testada):
fonte
gem install nokogiri -- --with-iconv-dir=/opt/local
funciona muito bem com MacPortslibiconv
instaladoEste funcionou para mim
fonte
Encontrei isso hoje de manhã ... depois de uma atualização para o Mavericks. Nós fizemos muitas coisas. No entanto, se alguém está tendo esse problema, aqui estão algumas coisas para tentar.
Executei o 'xcode-select --install' e instalei as ferramentas de linha de comando (surpresa que isso não tenha sido atualizado no ugrade do sistema operacional). Eu executei o 'rvm implode' (eu o compilarei mais tarde).
Reunimos dois arquivos de saída de erro:
~ / .vagrant.d / gems / gems / nokogiri-1.6.3.1 / ext / nokogiri / gem_make.out
~ / .vagrant.d / gems / gems / nokogiri-1.6.3.1 / ext / nokogiri / tmp / x86_64-apple-darwin12.5.0 / ports / libxml2 / 2.8.0 / configure.log
O que parecia indicar que o compilador c estava usando uma configuração surpreendente.
Eu corri 'env'
Saída contida:
Esses arquivos não existiam no sistema de arquivos ...
Depois de todas essas mudanças, mudamos para uma nova janela do terminal (tudo estava atualizado). A instalação do vagrant-berkshelf (que por sua vez instala nokogiri) funcionou bem.
NOTA: ao executar 'env' na nova janela, não havia mais uma configuração para CC ou CXX ...
Não tenho certeza sobre a parte principal disso, ou se a ordem é importante, mas tentou recriar as partes que pareciam ter um papel importante para que isso funcionasse.
fonte
gem install nokogiri
bem-sucedido? Murchar com a mensagem "já instalado" ou com uma instalação bem-sucedida?De acordo com a documentação, no OSX 10.9 e no Homebrew 9.5+, você provavelmente está perdendo as ferramentas de desenvolvimento.
Instalação de Nokogiri
Solução de problemas
Se você tiver problemas ao mencionar a falta do libiconv, é algo parecido com isto:
Então você provavelmente está perdendo as ferramentas de desenvolvedor certas. Esta é uma correção muito fácil:
Isso é verificado trabalhando no compilador clang do OSX 10.9 com xcode.
fonte
Eu entendi esse problema quando atualizei meu Mac OS para Yosemite. Consegui resolver esse problema fazendo:
fonte
Eu tive um problema semelhante e a resposta aceita costumava funcionar para mim. Agora, no entanto, tenho visto uma nova mensagem de erro em que um
gmkdir
comando está ausente, como nesta pergunta:gem install nokogiri -v '1.5.11' falhou devido ao make: / usr / local / bin / gmkdir: Esse arquivo ou diretório não existe
O que funcionou para mim foi primeiro uma pequena limpeza:
E então
brew unlink libiconv
e o que mais você precisar desvincular (verifique combrew doctor
). Em seguida, as duas linhas mágicas (copiadas da resposta vinculada):fonte
Etapas simples a serem seguidas antes de começar a desinstalar e instalar qualquer coisa. Verifique se você possui o CLT (ferramentas de linha de comando instaladas):
brew config
consulte a versão do CLT aqui, se não houver necessidade de reinstalação.
Isso significa que o problema está com a permissão de reinstalar apenas o bundler gem e não o sudo. Desinstalar bundler com
gem uninstall bundler
reinstalar gem bundlergem install bundler
O ponto mais importante aqui é a permissão sob a qual o bundler gem está instalado e nunca deve ser sudoed.
fonte
Antes de tudo, certifique-se de seguir o guia de instalação nokogiri: http://nokogiri.org/tutorials/installing_nokogiri.html
Depois de seguir o guia, eu ainda tinha esse problema. Foi assim que eu resolvi:
Antes de tudo, instalei o iconv usando o homebrew: brew install iconv
Então eu desinstalei o ruby, felizmente isso é muito fácil com o rvm:
Então tive que reinstalar o ruby com as seguintes opções:
Então eu crio um gemset com a nova versão ruby:
Finalmente posso instalar o nokogiri assim:
fonte
No meu caso, (como no scotchi), a compilação falhou devido a uma biblioteca iconv incompatível em / opt / local / lib. Por padrão, o processo de construção do Nokogiri examina / opt / local primeiro. Para forçá-lo a usar um diretório de instalação diferente, / usr / local, por exemplo, faça:
fonte
Esta postagem do blog propõe instalar o libiconv manualmente.
Posteriormente, o nokogiri pode ser instalado com vários switches, informando onde encontrar o libiconv (consulte a publicação no blog).
Como nota lateral: Após instalar o nokogiri, consegui instalar o gollum (cuja instalação também falhou porque não foi possível encontrar o iconv). Agora ainda estou enfrentando problemas, porque quando inicio o gollum, o Python trava.
fonte
OBSERVAÇÃO O arquivo /lib/iconv/iconv.so ausente em 2.0.0-p247, presente na instalação das gemas 2.0.0-p0.
Copie o arquivo
AGORA FUNCIONA!
fonte
Eu tive que instalar o gcc primeiro antes de executar
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
fonte