【问题标题】:Hiredis 0.5.2 on WindowsWindows 上的 Hiredis 0.5.2
【发布时间】:2016-03-28 16:26:57
【问题描述】:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: C:/Dev/Dependencies/Ruby/ruby-2.2.3-x64-mingw32/lib/ruby/gems/2.2.0/gems/hiredis-0.5.2/ext/hiredis_ext
C:/Dev/Dependencies/Ruby/ruby-2.2.3-x64-mingw32/bin/ruby.exe -r ./siteconf20151222-4124-nisefq.rb extconf.rb
gcc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  net.c
net.c:1:0: warning: -fPIC ignored for target (all code is position independent) [enabled by default]
net.c:35:24: fatal error: sys/socket.h: No such file or directory
compilation terminated.
make: *** [net.o] Error 1
*** 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=C:/Dev/Dependencies/Ruby/ruby-2.2.3-x64-mingw32/bin/$(RUBY_BASE_NAME)
extconf.rb:25:in `block in <main>': Building hiredis failed (RuntimeError)
        from extconf.rb:23:in `chdir'
        from extconf.rb:23:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in C:/Dev/Dependencies/Ruby/ruby-2.2.3-x64-mingw32/lib/ruby/gems/2.2.0/gems/hiredis-0.5.2 for inspection.
Results logged to C:/Dev/Dependencies/Ruby/ruby-2.2.3-x64-mingw32/lib/ruby/gems/2.2.0/extensions/x64-mingw32/2.2.0/hiredis-0.5.2/gem_make.out
An error occurred while installing hiredis (0.5.2), and Bundler cannot continue.
Make sure that `gem install hiredis -v '0.5.2'` succeeds before bundling.

人们说不支持 Windows,但 extconf.rb 有一个 mswin option...

对我应该做什么有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails redis gem installation hiredis


    【解决方案1】:

    坏消息:

    hiredis 目前不能在 Windows 上运行,Windows 特定代码只是样板代码。尽管已经完成了一些工作并且有一些拉取请求(#52 似乎是最相关的),但看起来这是一项艰巨的任务。

    不幸的是,即使是拉取请求也需要使用 Visual Studio(而不是 MinGW)进行编译,因此将来必须将二进制文件捆绑并与hiredis Ruby gem 一起发布。此外,在使hiredis 与Windows 兼容之前,维护者需要维护者的长期承诺。

    总而言之,hiredis 似乎不会很快安装在 Windows 上。

    好消息:

    hiredis gem 是Ruby version of the Redis client 的高性能替代。如果无法加载,则会自动使用较慢的实现。您所要做的就是强制安装hiredis gem 来满足gem 依赖项。

    gem install hiredis 调用失败后,您可以按照in the gem install documentation 的描述手动编写gem 规范:

    例如在lib\ruby\gems\2.2.0 你可以运行:

    gem spec cache\hiredis-0.5.2.gem --ruby > specifications\hiredis-0.5.2.gemspec
    

    在启动 Rails 5 应用程序时会收到警告,但除此之外它应该可以工作。

    【讨论】:

    • 感谢您的详细回答。我得到了新的 0.6,它至少可以安装。 Rails 5 仍然依赖于5.2...所以我得看看如何让它工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多