ruby - Jekyll eventmachine 1.2.7 bundle 错误

标签 ruby jekyll bundler eventmachine

我正在尝试使用 ubuntu 20.04、rvm 和 ruby​​ 2.7.2 运行 bundle 安装,但无法安装 eventmachine gem。 经过几个小时的谷歌搜索后,我找不到适合我的解决方案。我尝试删除lockfile并运行bundle,ruby-dev已经安装了最新版本,我尝试使用ruby 2.6.6运行bundle,更新bundle,将Jekyll从4.0.0更新到4.2.0,但没有无论我尝试什么,我仍然收到这些我不明白的错误消息,因此非常感谢任何帮助!

gem 文件

source 'https://rubygems.org'

gem 'jekyll', '4.0.0'

group :jekyll_plugins do
  gem 'jekyll-feed', '0.12.1'
  gem 'jekyll-paginate', '1.1.0'
  gem 'jekyll-seo-tag', '2.6.1'
  gem 'jekyll-sitemap', '1.3.1'
end

相关 bundle 日志

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /home/jordan/Programming/galblog/vendor/bundle/ruby/2.7.0/gems/eventmachine-1.2.7/ext
/home/jordan/.rvm/rubies/ruby-2.7.2/bin/ruby -I /home/jordan/.rvm/rubies/ruby-2.7.2/lib/ruby/2.7.0 -r ./siteconf20210214-26199-1f75y70.rb extconf.rb
checking for -lcrypto... yes
checking for -lssl... yes
checking for openssl/ssl.h... yes
checking for openssl/err.h... yes
checking for rb_trap_immediate in ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... no
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_fd_select()... yes
checking for rb_fdset_t in ruby/intern.h... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_enable_interrupt()... no
checking for rb_time_new()... yes
checking for inotify_init() in sys/inotify.h... yes
checking for writev() in sys/uio.h... yes
checking for pipe2() in unistd.h... yes
checking for accept4() in sys/socket.h... yes
checking for SOCK_CLOEXEC in sys/socket.h... yes
checking for sys/event.h... no
checking for epoll_create() in sys/epoll.h... yes
checking for clock_gettime()... yes
checking for CLOCK_MONOTONIC_RAW in time.h... yes
checking for CLOCK_MONOTONIC in time.h... yes
CXXFLAGS=-g -O2 -Wall -Wextra -Wno-deprecated-declarations -Wno-ignored-qualifiers -Wno-unused-result -Wno-address
creating Makefile

current directory: /home/jordan/Programming/galblog/vendor/bundle/ruby/2.7.0/gems/eventmachine-1.2.7/ext
make "DESTDIR=" clean

current directory: /home/jordan/Programming/galblog/vendor/bundle/ruby/2.7.0/gems/eventmachine-1.2.7/ext
make "DESTDIR="
compiling binder.cpp
compiling cmain.cpp
compiling ed.cpp
compiling em.cpp
em.cpp: In member function ‘void EventMachine_t::SignalLoopBreaker()’:
em.cpp:316:14: warning: ignoring return value of ‘ssize_t write(int, const void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
  316 |  (void)write (LoopBreakerWriter, "", 1);
      |        ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
em.cpp: In member function ‘void EventMachine_t::_ReadLoopBreaker()’:
em.cpp:1109:13: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
 1109 |  (void)read (LoopBreakerReader, buffer, sizeof(buffer));
      |        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compiling kb.cpp
kb.cpp: In member function ‘virtual void KeyboardDescriptor::Read()’:
kb.cpp:77:13: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
   77 |  (void)read (GetSocket(), &c, 1);
      |        ~~~~~^~~~~~~~~~~~~~~~~~~~
compiling page.cpp
compiling pipe.cpp
compiling rubymain.cpp
rubymain.cpp: In function ‘void event_callback_wrapper(uintptr_t, int, const char*, long unsigned int)’:
rubymain.cpp:220:105: warning: ‘VALUE ruby::backward::cxxanyargs::rb_rescue(VALUE (*)(...), VALUE, VALUE (*)(...), VALUE)’ is deprecated: Use of ANYARGS in this function is deprecated
[-Wdeprecated-declarations]
  220 |   rb_rescue((VALUE (*)(ANYARGS))event_callback, (VALUE)&e, (VALUE (*)(ANYARGS))event_error_handler, Qnil);
      |                                                                                                         ^
In file included from /home/jordan/.rvm/rubies/ruby-2.7.2/include/ruby-2.7.0/ruby/ruby.h:2863,
                 from /home/jordan/.rvm/rubies/ruby-2.7.2/include/ruby-2.7.0/ruby.h:33,
                 from em.h:24,
                 from project.h:168,
                 from rubymain.cpp:20:
/home/jordan/.rvm/rubies/ruby-2.7.2/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:198:1: note: declared here
  198 | rb_rescue(type *q, VALUE w, type *e, VALUE r)
      | ^~~~~~~~~
rubymain.cpp:220:105: warning: ‘VALUE ruby::backward::cxxanyargs::rb_rescue(VALUE (*)(...), VALUE, VALUE (*)(...), VALUE)’ is deprecated: Use of ANYARGS in this function is deprecated
[-Wdeprecated-declarations]
  220 |   rb_rescue((VALUE (*)(ANYARGS))event_callback, (VALUE)&e, (VALUE (*)(ANYARGS))event_error_handler, Qnil);
      |                                                                                                         ^
In file included from /home/jordan/.rvm/rubies/ruby-2.7.2/include/ruby-2.7.0/ruby/ruby.h:2863,
                 from /home/jordan/.rvm/rubies/ruby-2.7.2/include/ruby-2.7.0/ruby.h:33,
                 from em.h:24,
                 from project.h:168,
                 from rubymain.cpp:20:
/home/jordan/.rvm/rubies/ruby-2.7.2/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:198:1: note: declared here
  198 | rb_rescue(type *q, VALUE w, type *e, VALUE r)
      | ^~~~~~~~~
compiling ssl.cpp
linking shared-object rubyeventmachine.so

current directory: /home/jordan/Programming/galblog/vendor/bundle/ruby/2.7.0/gems/eventmachine-1.2.7/ext
make "DESTDIR=" install
make: /usr/bin/mkdir: Command not found
make: *** [Makefile:202: .sitearchdir.time] Error 127

make install failed, exit code 2

Gem files will remain installed in /home/jordan/Programming/galblog/vendor/bundle/ruby/2.7.0/gems/eventmachine-1.2.7 for inspection.
Results logged to /home/jordan/Programming/galblog/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0/eventmachine-1.2.7/gem_make.out

An error occurred while installing eventmachine (1.2.7), and Bundler cannot continue.
Make sure that `gem install eventmachine -v '1.2.7' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  jekyll-feed was resolved to 0.12.1, which depends on
    jekyll was resolved to 4.0.0, which depends on
      em-websocket was resolved to 0.5.2, which depends on
        eventmachine


Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /home/jordan/Programming/galblog/vendor/bundle/ruby/2.7.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser
/home/jordan/.rvm/rubies/ruby-2.7.2/bin/ruby -I /home/jordan/.rvm/rubies/ruby-2.7.2/lib/ruby/2.7.0 -r ./siteconf20210214-26199-8qwb9v.rb extconf.rb
creating Makefile

current directory: /home/jordan/Programming/galblog/vendor/bundle/ruby/2.7.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser
make "DESTDIR=" clean

current directory: /home/jordan/Programming/galblog/vendor/bundle/ruby/2.7.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser
make "DESTDIR="
compiling ruby_http_parser.c
compiling ryah_http_parser.c
linking shared-object ruby_http_parser.so

current directory: /home/jordan/Programming/galblog/vendor/bundle/ruby/2.7.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser
make "DESTDIR=" install
make: /usr/bin/mkdir: Command not found
make: *** [Makefile:202: .sitearchdir.time] Error 127

make install failed, exit code 2

Gem files will remain installed in /home/jordan/Programming/galblog/vendor/bundle/ruby/2.7.0/gems/http_parser.rb-0.6.0 for inspection.
Results logged to /home/jordan/Programming/galblog/vendor/bundle/ruby/2.7.0/extensions/x86_64-linux/2.7.0/http_parser.rb-0.6.0/gem_make.out

An error occurred while installing http_parser.rb (0.6.0), and Bundler cannot continue.
Make sure that `gem install http_parser.rb -v '0.6.0' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  jekyll-feed was resolved to 0.12.1, which depends on
    jekyll was resolved to 4.0.0, which depends on
      em-websocket was resolved to 0.5.2, which depends on
        http_parser.rb

最佳答案

我再次尝试,这次使用 ruby​​ 2.7.1 而不是 2.7.2,并且成功了。 我猜 ruby​​ 中的一些更新破坏了它,所以对于任何坚持这个的人,请尝试使用 2.7.1 或不是最新版本的 ruby​​。

关于ruby - Jekyll eventmachine 1.2.7 bundle 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66195251/

相关文章:

ruby - curl.perform 在多线程环境下抛出无效的容易处理错误

ruby - "if yield"与 "yield if block evaluates to true"相同?

ruby-on-rails - 在 Rails 中分离后端和前端服务器

google-chrome - Github Jekyll 站点中的 Access-Control-Allow-Origin HTTP header

ruby - Gemfile `Bundler cannot continue` 意外 ':' 错误 [Ruby]

Ruby (bundler) 如何自动要求 Pry

html - 将 select 标签的默认选项设为 Rails 中 name 的当前值

杰基尔,Github 页面 : syntax highlighting not working

Ruby Rbenv 试图从 Bundle 运行 Zeus,尽管它是一个全局性的 gem(使用 ZSH)

jekyll - 如何在构建时在 Jekyll 页面中插入最后更新的时间戳?