brianmario / charlock_holmes

Character encoding detection, brought to you by ICU
MIT License
1.03k stars 140 forks source link

Unable to install in CentOS 7.5 - undefined method "<<" for nil:NilClass (NoMethodError) #136

Open cpMillingworth opened 5 years ago

cpMillingworth commented 5 years ago

First off, yes, libicu-devel is installed.

gem install charlock_holmes

Building native extensions. This could take a while... ERROR: Error installing charlock_holmes: ERROR: Failed to build gem native extension.

current directory: /usr/local/rvm/gems/ruby-2.1.2/gems/charlock_holmes-0.7.6/ext/charlock_holmes

/usr/local/rvm/rubies/ruby-2.1.2/bin/ruby -r ./siteconf20180921-15180-1f6r92q.rb extconf.rb checking for main() in -licui18n... yes checking for main() in -licui18n... yes checking for unicode/ucnv.h... yes checking for main() in -lz... yes checking for main() in -licuuc... yes checking for main() in -licudata... yes 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/local/rvm/rubies/ruby-2.1.2/bin/ruby --with-icu-dir --without-icu-dir --with-icu-include --without-icu-include=${icu-dir}/include --with-icu-lib --without-icu-lib=${icu-dir}/lib --with-icui18nlib --without-icui18nlib --with-icui18nlib --without-icui18nlib --with-zlib --without-zlib --with-icuuclib --without-icuuclib --with-icudatalib --without-icudatalib extconf.rb:60:in '

': undefined method '<<' for nil:NilClass (NoMethodError)

To see why this extension failed to compile, please check the mkmf.log which can be found here:

/usr/local/rvm/gems/ruby-2.1.2/extensions/x86_64-linux/2.1.0/charlock_holmes-0.7.6/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /usr/local/rvm/gems/ruby-2.1.2/gems/charlock_holmes-0.7.6 for inspection. Results logged to /usr/local/rvm/gems/ruby-2.1.2/extensions/x86_64-linux/2.1.0/charlock_holmes-0.7.6/gem_make.out

There's nothing useful in the mkmf.log file (there's a warning about a set but unused variable named 'p') and the gem_make.out is just a regurgitation of the above output.

Help is appreciated, thank you.

wikiti commented 5 years ago

I'm facing this issue too with Ubuntu 18.04.1 and ruby 2.1.2.

I've solved this problem by downloading a copy of the repository, applying this minor change:

diff --git a/ext/charlock_holmes/extconf.rb b/ext/charlock_holmes/extconf.rb
index 4c97643..0144880 100644
--- a/ext/charlock_holmes/extconf.rb
+++ b/ext/charlock_holmes/extconf.rb
@@ -1,5 +1,7 @@
 require 'mkmf'

+$CXXFLAGS ||= ''
+
 CWD = File.expand_path(File.dirname(__FILE__))
 def sys(cmd)
   puts "  -- #{cmd}"

Then, I installed the local copy of the gem:

cd path/to/charlock_holmes
gem build charlock_holmes.gemspec && gem install charlock_holmes-0.7.6.gem
neakni commented 5 years ago
current directory: /usr/local/ruby/lib/ruby/gems/2.3.0/gems/charlock_holmes-0.7.6/ext/charlock_holmes

/usr/local/ruby/bin/ruby -r ./siteconf20190404-358-udo3gu.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/local/ruby/bin/$(RUBY_BASE_NAME) extconf.rb:12:in `': No such file or directory - which (Errno::ENOENT) from extconf.rb:12:in

'

extconf failed, exit code 1

Gem files will remain installed in /usr/local/ruby/lib/ruby/gems/2.3.0/gems/charlock_holmes-0.7.6 for inspection. Results logged to /usr/local/ruby/lib/ruby/gems/2.3.0/extensions/x86_64-linux/2.3.0-static/charlock_holmes-0.7.6/gem_make.out

An error occurred while installing charlock_holmes (0.7.6), and Bundler cannot continue. Make sure that gem install charlock_holmes -v '0.7.6' succeeds before bundling. [root@031401cf0544 admin-ruby]#