rubys / nokogumbo

A Nokogiri interface to the Gumbo HTML5 parser.
Apache License 2.0
186 stars 114 forks source link

installation failure when using debian-packaged nokogiri #179

Closed sckdev closed 3 years ago

sckdev commented 3 years ago

Hi, I try to install nokogumbo but an error persists.

$gem install nokogumbo --verbose
HEAD https://index.rubygems.org/
200 OK
GET https://index.rubygems.org/info/nokogumbo
200 OK
GET https://index.rubygems.org/info/nokogiri
200 OK
GET https://index.rubygems.org/info/mini_portile2
200 OK
GET https://index.rubygems.org/info/racc
200 OK
/home/user/gems/gems/nokogumbo-2.0.5/LICENSE.txt
/home/user/gems/gems/nokogumbo-2.0.5/README.md
/home/user/gems/gems/nokogumbo-2.0.5/ext/nokogumbo/extconf.rb
/home/user/gems/gems/nokogumbo-2.0.5/ext/nokogumbo/nokogumbo.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/ascii.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/ascii.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/attribute.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/attribute.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/char_ref.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/char_ref.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/error.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/error.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/foreign_attrs.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/gumbo.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/insertion_mode.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/macros.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/parser.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/parser.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/replacement.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/string_buffer.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/string_buffer.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/string_piece.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/svg_attrs.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/svg_tags.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/tag.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/tag_lookup.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/tag_lookup.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/token_buffer.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/token_buffer.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/token_type.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/tokenizer.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/tokenizer.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/tokenizer_states.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/utf8.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/utf8.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/util.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/util.h
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/vector.c
/home/user/gems/gems/nokogumbo-2.0.5/gumbo-parser/src/vector.h
/home/user/gems/gems/nokogumbo-2.0.5/lib/nokogumbo.rb
/home/user/gems/gems/nokogumbo-2.0.5/lib/nokogumbo/html5.rb
/home/user/gems/gems/nokogumbo-2.0.5/lib/nokogumbo/html5/document.rb
/home/user/gems/gems/nokogumbo-2.0.5/lib/nokogumbo/html5/document_fragment.rb
/home/user/gems/gems/nokogumbo-2.0.5/lib/nokogumbo/html5/node.rb
/home/user/gems/gems/nokogumbo-2.0.5/lib/nokogumbo/version.rb
Building native extensions. This could take a while...
current directory: /home/user/gems/gems/nokogumbo-2.0.5/ext/nokogumbo
["/usr/bin/ruby2.7", "-I", "/usr/lib/ruby/vendor_ruby", "-r", "./siteconf20210824-3712-1d8n77p.rb", "extconf.rb"]
*** 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=/usr/bin/$(RUBY_BASE_NAME)2.7
/usr/lib/ruby/vendor_ruby/nokogiri/xml/xpath/syntax_error.rb:4:in `<module:XML>': XPath is not a class (TypeError)
/home/user/gems/gems/nokogiri-1.12.3-x86_64-linux/lib/nokogiri/2.7/nokogiri.so:0: previous definition of XPath was here
    from /usr/lib/ruby/vendor_ruby/nokogiri/xml/xpath/syntax_error.rb:3:in `<module:Nokogiri>'
    from /usr/lib/ruby/vendor_ruby/nokogiri/xml/xpath/syntax_error.rb:2:in `<top (required)>'
    from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb:96:in `require'
    from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb:96:in `require'
    from /usr/lib/ruby/vendor_ruby/nokogiri/xml/xpath.rb:2:in `<top (required)>'
    from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb:96:in `require'
    from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb:96:in `require'
    from /usr/lib/ruby/vendor_ruby/nokogiri/xml.rb:21:in `<top (required)>'
    from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb:96:in `require'
    from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb:96:in `require'
    from /usr/lib/ruby/vendor_ruby/nokogiri.rb:36:in `<top (required)>'
    from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb:85:in `require'
    from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb:85:in `require'
    from extconf.rb:4:in `<main>'
ERROR:  Error installing nokogumbo:
    ERROR: Failed to build gem native extension.

    current directory: /home/user/gems/gems/nokogumbo-2.0.5/ext/nokogumbo
/usr/bin/ruby2.7 -I /usr/lib/ruby/vendor_ruby -r ./siteconf20210824-3712-1d8n77p.rb extconf.rb
Building has failed. See above output for more information on the failure.
extconf failed, exit code 1

Gem files will remain installed in /home/user/gems/gems/nokogumbo-2.0.5 for inspection.
Results logged to /home/user/gems/extensions/x86_64-linux/2.7.0/nokogumbo-2.0.5/gem_make.out

This happend on a fresh installation of Parrot OS (same on kalylinux 2021.1)

$uname -a
Linux parrot 5.10.0-6parrot1-amd64 #1 SMP Debian 5.10.28-6parrot1 (2021-04-12) x86_64 GNU/Linux
flavorjones commented 3 years ago

@sckdev Thanks for opening this issue, and I'm sorry you're having trouble. I'll try to help.

I spent some time this morning trying to reproduce what you're seeing, and I cannot. Here's what I did:

Here's what I saw at installation time:

┌─[root@d18ac712a51a]─[/]
└──╼ #gem install nokogiri
Fetching nokogiri-1.12.3-x86_64-linux.gem
Successfully installed nokogiri-1.12.3-x86_64-linux
Parsing documentation for nokogiri-1.12.3-x86_64-linux
Installing ri documentation for nokogiri-1.12.3-x86_64-linux
geDone installing documentation for nokogiri after 4 seconds
1 gem installed

┌─[root@d18ac712a51a]─[/]
└──╼ #gem install nokogumbo
Building native extensions. This could take a while...
Successfully installed nokogumbo-2.0.5
Parsing documentation for nokogumbo-2.0.5
Installing ri documentation for nokogumbo-2.0.5
Done installing documentation for nokogumbo after 0 seconds
1 gem installed

┌─[root@d18ac712a51a]─[/]
└──╼ #irb 
irb(main):001:0> require 'nokogumbo'
NOTE: nokogumbo: Using Nokogiri::HTML5 provided by Nokogiri. See https://github.com/sparklemotion/nokogiri/issues/2205 for more information.
=> true
irb(main):002:0> Nokogiri::HTML5("<body><div>hello")
=> #<Nokogiri::HTML5::Document:0x154 name="document" children=[#<Nokogiri::XML::Element:0x140 name="html" children=[#<Nokogiri::XML::Element:0xf0 name="head">, #<Nokogiri::XML::Element:0x12c name="body" children=[#<Nokogiri::XML::Element:0x118 name="div" children=[#<Nokogiri::XML::Text:0x104 "hello">]>]>]>]>

I noticed that you have multiple versions of Nokogiri installed on this sytem. I see both of these paths in your output above:

I believe this is the root of the issue. I believe you have the debian package ruby-nokogiri installed as well as a user-installed ruby gem nokogiri. If you're having issues, please uninstall the debian packages and let us know how you get on.