【问题标题】:Cannot install thin on windows不能在windows上安装thin
【发布时间】:2010-09-06 05:39:25
【问题描述】:

我无法在 Windows 上安装 Thin gem。在构建原生扩展时发生了一些事情。

有人面临同样的问题吗?

这是堆栈跟踪:

>gem install thin --no-ri --no-rdoc
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing thin:
        ERROR: Failed to build gem native extension.

C:/Ruby/bin/ruby.exe extconf.rb
checking for rb_trap_immediate in ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... yes
checking for inotify_init() in sys/inotify.h... no
checking for __NR_inotify_init in sys/syscall.h... no
checking for writev() in sys/uio.h... no
checking for rb_thread_check_ints()... yes
checking for rb_time_new()... yes
checking for windows.h... yes
checking for winsock.h... yes
checking for main() in -lkernel32... yes
checking for main() in -lrpcrt4... yes
checking for main() in -lgdi32... yes
checking for main() in -lssl... no
creating Makefile

make
g++ -I. -IC:/Ruby/include/ruby-1.9.1/i386-mingw32 -I/C/Ruby/include/ruby-1.9.1/ruby/backward -I/C/Ru
by/include/ruby-1.9.1 -I. -DBUILD_FOR_RUBY -DHAVE_RB_THREAD_BLOCKING_REGION -DHAVE_TBR -DHAVE_RB_THR
EAD_CHECK_INTS -DHAVE_RB_TIME_NEW -DOS_WIN32 -DHAVE_WINDOWS_H -DHAVE_WINSOCK_H -DWITHOUT_SSL -DHAVE_
MAKE_PAIR    -O3 -g -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -
Wno-missing-field-initializers -Wno-long-long   -o binder.o -c binder.cpp
In file included from project.h:137:0,
                 from binder.cpp:20:
binder.h:35:34: warning: type qualifiers ignored on function return type
In file included from project.h:138:0,
                 from binder.cpp:20:
em.h:91:47: warning: type qualifiers ignored on function return type
em.h:92:76: warning: type qualifiers ignored on function return type
em.h:93:56: warning: type qualifiers ignored on function return type
em.h:95:57: warning: type qualifiers ignored on function return type
em.h:96:60: warning: type qualifiers ignored on function return type
em.h:97:58: warning: type qualifiers ignored on function return type
em.h:98:55: warning: type qualifiers ignored on function return type
em.h:99:36: warning: type qualifiers ignored on function return type
em.h:101:47: warning: type qualifiers ignored on function return type
em.h:106:42: warning: type qualifiers ignored on function return type
em.h:123:45: warning: type qualifiers ignored on function return type
em.h:132:36: warning: type qualifiers ignored on function return type
In file included from project.h:145:0,
                 from binder.cpp:20:
eventmachine.h:45:61: warning: type qualifiers ignored on function return type
eventmachine.h:46:112: warning: type qualifiers ignored on function return type
eventmachine.h:47:69: warning: type qualifiers ignored on function return type
eventmachine.h:49:73: warning: type qualifiers ignored on function return type
eventmachine.h:62:75: warning: type qualifiers ignored on function return type
eventmachine.h:63:74: warning: type qualifiers ignored on function return type
eventmachine.h:64:77: warning: type qualifiers ignored on function return type
eventmachine.h:65:41: warning: type qualifiers ignored on function return type
In file included from project.h:145:0,
                 from binder.cpp:20:
eventmachine.h:99:60: warning: type qualifiers ignored on function return type
eventmachine.h:100:58: warning: type qualifiers ignored on function return type
eventmachine.h:102:60: warning: type qualifiers ignored on function return type
eventmachine.h:105:41: warning: type qualifiers ignored on function return type
g++ -I. -IC:/Ruby/include/ruby-1.9.1/i386-mingw32 -I/C/Ruby/include/ruby-1.9.1/ruby/backward -I/C/Ru
by/include/ruby-1.9.1 -I. -DBUILD_FOR_RUBY -DHAVE_RB_THREAD_BLOCKING_REGION -DHAVE_TBR -DHAVE_RB_THR
EAD_CHECK_INTS -DHAVE_RB_TIME_NEW -DOS_WIN32 -DHAVE_WINDOWS_H -DHAVE_WINSOCK_H -DWITHOUT_SSL -DHAVE_
MAKE_PAIR    -O3 -g -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -
Wno-missing-field-initializers -Wno-long-long   -o cmain.o -c cmain.cpp
In file included from project.h:137:0,
                 from cmain.cpp:20:
binder.h:35:34: warning: type qualifiers ignored on function return type
In file included from project.h:138:0,
                 from cmain.cpp:20:
em.h:91:47: warning: type qualifiers ignored on function return type
em.h:92:76: warning: type qualifiers ignored on function return type
em.h:93:56: warning: type qualifiers ignored on function return type
em.h:95:57: warning: type qualifiers ignored on function return type
em.h:96:60: warning: type qualifiers ignored on function return type
em.h:97:58: warning: type qualifiers ignored on function return type
em.h:98:55: warning: type qualifiers ignored on function return type
em.h:99:36: warning: type qualifiers ignored on function return type
em.h:101:47: warning: type qualifiers ignored on function return type
em.h:106:42: warning: type qualifiers ignored on function return type
em.h:123:45: warning: type qualifiers ignored on function return type
em.h:132:36: warning: type qualifiers ignored on function return type
In file included from project.h:145:0,
                 from cmain.cpp:20:
eventmachine.h:45:61: warning: type qualifiers ignored on function return type
eventmachine.h:46:112: warning: type qualifiers ignored on function return type
eventmachine.h:47:69: warning: type qualifiers ignored on function return type
eventmachine.h:49:73: warning: type qualifiers ignored on function return type
eventmachine.h:62:75: warning: type qualifiers ignored on function return type
eventmachine.h:63:74: warning: type qualifiers ignored on function return type
eventmachine.h:64:77: warning: type qualifiers ignored on function return type
eventmachine.h:65:41: warning: type qualifiers ignored on function return type
In file included from project.h:145:0,
                 from cmain.cpp:20:
eventmachine.h:99:60: warning: type qualifiers ignored on function return type
eventmachine.h:100:58: warning: type qualifiers ignored on function return type
eventmachine.h:102:60: warning: type qualifiers ignored on function return type
eventmachine.h:105:41: warning: type qualifiers ignored on function return type
cmain.cpp:98:71: warning: type qualifiers ignored on function return type
cmain.cpp:109:122: warning: type qualifiers ignored on function return type
cmain.cpp:119:79: warning: type qualifiers ignored on function return type
cmain.cpp:129:83: warning: type qualifiers ignored on function return type
cmain.cpp:260:85: warning: type qualifiers ignored on function return type
cmain.cpp:270:84: warning: type qualifiers ignored on function return type
cmain.cpp:280:88: warning: type qualifiers ignored on function return type
cmain.cpp:290:51: warning: type qualifiers ignored on function return type
cmain.cpp:300:70: warning: type qualifiers ignored on function return type
cmain.cpp:320:55: warning: type qualifiers ignored on function return type
cmain.cpp:546:70: warning: type qualifiers ignored on function return type
cmain.cpp:669:68: warning: type qualifiers ignored on function return type
cmain.cpp: In function 'int evma_send_file_data_to_connection(long unsigned int, const char*)':
cmain.cpp:752:6: error: cannot convert 'stat*' to '_stati64*' for argument '2' to 'int _fstati64(int
, _stati64*)'
make: *** [cmain.o] Error 1


Gem files will remain installed in C:/Ruby/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10 for inspect
ion.
Results logged to C:/Ruby/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10/ext/gem_make.out

【问题讨论】:

标签: ruby thin


【解决方案1】:

从 git 或 ruby​​gems 存储库安装(当前)在 1.9.2 或 1.9.3 下不再有效(确认在 2012 年 6 月 22 日仍然损坏)。相反,您只需:

gem install eventmachine --pre
gem install thin

请注意,在 2012 年 6 月 18 日,当前的预发布版本是 renamed to 1.0.0.rc.1,因此适用于 Windows 的版本有可能“很快”成为正式版本,这将不再是问题。


如果您尝试从 github 存储库构建 1.9.2 下的 gem,您可能会看到以下内容(包括搜索引擎点击):

C:\eventmachine> rake 构建 (在 C:/eventmachine 中) 光盘分机 C:/Ruby/bin/ruby.exe extconf.rb 检查 ruby​​.h、rubysig.h 中的 rb_trap_immediate... *** extconf.rb 失败 *** 由于某种原因无法创建 Makefile,可能缺乏必要 库和/或标题。检查 mkmf.log 文件以获取更多详细信息。

如果您尝试从 ruby​​gems 存储库安装 1.9.3 下的 gem,您可能会看到以下内容(包括搜索引擎点击):

C:\>gem 安装 eventmachine
暂时增强 PATH 以包含 DevKit...
构建原生扩展。这可能需要一段时间...
错误:安装事件机器时出错:
        错误:无法构建 gem 原生扩展。

        C:/Ruby193/bin/ruby.exe extconf.rb
检查 ruby​​.h、rubysig.h 中的 rb_trap_immediate ... 否
检查 rb_thread_blocking_region()... 是
检查 sys/inotify.h 中的 inotify_init() ... 否
检查 sys/syscall.h 中的 __NR_inotify_init ... 否
检查 sys/uio.h 中的 writev() ... 否
检查 rb_thread_check_ints()... 是
检查 rb_time_new()... 是
检查 windows.h ...是的
检查winsock.h ...是的
检查 -lkernel32 中的 main()... 是
检查 -lrpcrt4 中的 main() ... 是
检查 -lgdi32 中的 main() ... 是
检查 -lssl 中的 main() ... 否
创建 Makefile

制作
生成 ruby​​eventmachine-i386-mingw32.def
编译 binder.cpp
cc1plus.exe:警告:命令行选项“-Wdeclaration-after-statement”对 C/ObjC 有效,但对 C++ 无效
cc1plus.exe:警告:命令行选项“-Wimplicit-function-declaration”对 C/ObjC 有效,但对 C++ 无效
在 binder.cpp:20:0 中包含的文件中:
project.h:85:0:警告:“FD_SETSIZE”重新定义
:0:0: 注意:这是之前定义的位置
在 project.h:137:0 包含的文件中,
                 从 binder.cpp:20:
binder.h:35:34:警告:函数返回类型上忽略类型限定符
在 project.h:138:0 包含的文件中,
                 从 binder.cpp:20:
em.h:91:47:警告:函数返回类型上忽略类型限定符
em.h:92:76:警告:函数返回类型上忽略类型限定符
em.h:93:56:警告:函数返回类型上忽略类型限定符
em.h:95:57:警告:函数返回类型上忽略类型限定符
em.h:96:60:警告:函数返回类型上忽略类型限定符
em.h:97:58:警告:函数返回类型上忽略类型限定符
em.h:98:55:警告:函数返回类型上忽略类型限定符
em.h:99:36:警告:函数返回类型上忽略类型限定符
em.h:101:47:警告:函数返回类型上忽略类型限定符
em.h:106:42:警告:函数返回类型上忽略类型限定符
em.h:123:45:警告:函数返回类型上忽略类型限定符
em.h:132:36:警告:函数返回类型上忽略类型限定符
在 project.h:145:0 包含的文件中,
                 从 binder.cpp:20:
eventmachine.h:45:61:警告:函数返回类型上忽略类型限定符
eventmachine.h:46:112:警告:函数返回类型上忽略类型限定符
eventmachine.h:47:69:警告:函数返回类型上忽略类型限定符
eventmachine.h:49:73:警告:函数返回类型上忽略类型限定符
eventmachine.h:62:75:警告:函数返回类型上忽略类型限定符
eventmachine.h:63:74:警告:函数返回类型上忽略类型限定符
eventmachine.h:64:77:警告:函数返回类型上忽略类型限定符
eventmachine.h:65:41:警告:函数返回类型上忽略类型限定符
在 project.h:145:0 包含的文件中,
                 从 binder.cpp:20:
eventmachine.h:99:60:警告:函数返回类型上忽略类型限定符
eventmachine.h:100:58:警告:函数返回类型上忽略类型限定符
eventmachine.h:102:60:警告:函数返回类型上忽略类型限定符
eventmachine.h:105:41:警告:函数返回类型上忽略类型限定符
编译 cmain.cpp
cc1plus.exe:警告:命令行选项“-Wdeclaration-after-statement”对 C/ObjC 有效,但对 C++ 无效
cc1plus.exe:警告:命令行选项“-Wimplicit-function-declaration”对 C/ObjC 有效,但对 C++ 无效
在 cmain.cpp:20:0 包含的文件中:
project.h:85:0:警告:“FD_SETSIZE”重新定义
:0:0: 注意:这是之前定义的位置
在 project.h:137:0 包含的文件中,
                 来自 cmain.cpp:20:
binder.h:35:34:警告:函数返回类型上忽略类型限定符
在 project.h:138:0 包含的文件中,
                 来自 cmain.cpp:20:
em.h:91:47:警告:函数返回类型上忽略类型限定符
em.h:92:76:警告:函数返回类型上忽略类型限定符
em.h:93:56:警告:函数返回类型上忽略类型限定符
em.h:95:57:警告:函数返回类型上忽略类型限定符
em.h:96:60:警告:函数返回类型上忽略类型限定符
em.h:97:58:警告:函数返回类型上忽略类型限定符
em.h:98:55:警告:函数返回类型上忽略类型限定符
em.h:99:36:警告:函数返回类型上忽略类型限定符
em.h:101:47:警告:函数返回类型上忽略类型限定符
em.h:106:42:警告:函数返回类型上忽略类型限定符
em.h:123:45:警告:函数返回类型上忽略类型限定符
em.h:132:36:警告:函数返回类型上忽略类型限定符
在 project.h:145:0 包含的文件中,
                 来自 cmain.cpp:20:
eventmachine.h:45:61:警告:函数返回类型上忽略类型限定符
eventmachine.h:46:112:警告:函数返回类型上忽略类型限定符
eventmachine.h:47:69:警告:函数返回类型上忽略类型限定符
eventmachine.h:49:73:警告:函数返回类型上忽略类型限定符
eventmachine.h:62:75:警告:函数返回类型上忽略类型限定符
eventmachine.h:63:74:警告:函数返回类型上忽略类型限定符
eventmachine.h:64:77:警告:函数返回类型上忽略类型限定符
eventmachine.h:65:41:警告:函数返回类型上忽略类型限定符
在 project.h:145:0 包含的文件中,
                 来自 cmain.cpp:20:
eventmachine.h:99:60:警告:函数返回类型上忽略类型限定符
eventmachine.h:100:58:警告:函数返回类型上忽略类型限定符
eventmachine.h:102:60:警告:函数返回类型上忽略类型限定符
eventmachine.h:105:41:警告:函数返回类型上忽略类型限定符
cmain.cpp:98:71:警告:函数返回类型上忽略类型限定符
cmain.cpp:109:122:警告:函数返回类型上忽略类型限定符
cmain.cpp:119:79:警告:函数返回类型上忽略类型限定符
cmain.cpp:129:83:警告:函数返回类型上忽略类型限定符
cmain.cpp:260:85:警告:函数返回类型上忽略类型限定符
cmain.cpp:270:84:警告:函数返回类型上忽略类型限定符
cmain.cpp:280:88:警告:函数返回类型上忽略类型限定符
cmain.cpp:290:51:警告:函数返回类型上忽略类型限定符
cmain.cpp:300:70:警告:函数返回类型上忽略类型限定符
cmain.cpp:320:55:警告:函数返回类型上忽略类型限定符
cmain.cpp:546:70:警告:在函数返回类型上忽略类型限定符
cmain.cpp:669:68:警告:函数返回类型上忽略类型限定符
cmain.cpp: 在函数'int evma_send_file_data_to_connection(long unsigned int, const char*)'中:
cmain.cpp:752:6:错误:无法将参数 '2' 的 'stat*' 转换为 '_stati64*' 到 'int _fstati64(int, _stati64*)'
make: *** [cmain.o] 错误 1


Gem 文件将继续安装在 C:/Ruby193/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10 以供检查。
结果记录到 C:/Ruby193/lib/ruby/gems/1.9.1/gems/eventmachine-0.12.10/ext/gem_make.out

【讨论】:

  • 唯一对我有用的解决方案。然而,安装 eventmachine 的实际命令是: gem install eventmachine -v 1.0.0.beta.2 --pre
  • 在 eventmachine 安装过程中出现cannot convert 'stat*' to '_stati64*' 错误,gem install eventmachine --pre 也解决了我的问题。非常感谢
  • 快速说明,这解决了我的问题。因为我想为我的所有机器修复这个问题,并且我正在编写一个 Rails 应用程序,所以我在我的 Gemfile 中添加了以下内容:gem 'eventmachine', '1.0.0.beta.4.1', :platforms => [:mswin, :mingw] - 我通过上面的安装获得了版本,然后复制了那个版本号。我用gem list -r --pre eventmachine 仔细检查了这一点
  • gem install eventmachine --pre 解决了我安装 caldecott 的问题。谢谢。
  • 还要注意devkit的版本必须和ruby的版本兼容。请参阅 devkit wiki github.com/oneclick/rubyinstaller/wiki/…
【解决方案2】:

首先,从 RubyInstaller for Windows website 安装 DevKit(您似乎已经完成了)。

然后如 Roger 所示,将 eventmachine 与 git 存储库分开安装。

> gem install specific_install
Successfully installed backports-1.18.1
Successfully installed specific_install-0.2.3
2 gems installed
...
> gem specific_install -l http://github.com/eventmachine/eventmachine.git
git installing from http://github.com/eventmachine/eventmachine.git
...
Successfully built RubyGem
Name: eventmachine
Version: 0.12.11
File: eventmachine-0.12.11.gem
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Successfully installed eventmachine-0.12.11
1 gem installed
...
successfully installed

然后您应该能够从 gem 安装 Thin。

> gem install thin
Temporarily enhancing PATH to include DevKit...
Successfully installed thin-1.2.7-x86-mingw32
1 gem installed 
...
> thin start
Using rack adapter
Thin web server (v1.2.7 codename No Hup)
Maximum connections set to 1024
Listening on 0.0.0.0:3000, CTRL+C to stop

【讨论】:

【解决方案3】:

试试下面的运行

gem install thin –ignore-dependencies

如果失败,请重试安装 rack 和 eventmachine,然后重新运行上述命令。

gem install rack
gem install eventmachine -l
gem install thin –ignore-dependencies

【讨论】:

    【解决方案4】:

    这会帮助你...

    将下面这一行添加到您的 gem 文件中

    gem 'eventmachine', :git => 'https://github.com/eventmachine/eventmachine.git'

    然后运行捆绑安装

    【讨论】:

    • 使用 Win 7 x64 和 Ruby 2.0.0 为我工作。
    【解决方案5】:

    这可能会有所帮助:

    $ gem install specific_install
    $ gem specific_install -l http://github.com/eventmachine/eventmachine.git
    

    【讨论】:

      【解决方案6】:

      您可以安装 Thin 而无需使用预构建的二进制文件自行构建,但您需要知道哪些。要获取最新的预构建 win32 版本,请执行以下操作:

      1. 转到RubyGems Thin page
      2. 在“版本”部分下查看右侧有“x86-mswin32”的版本。 (截至今天,1.2.11、1.2.10 等版本都有 win32 二进制文件)
      3. 使用带有“-v”标志的 Thin 版本运行以下“gem install”命令:

      gem install thin -v 1.2.11

      这是我的安装结果:

      c:\>gem install thin -v 1.2.11 成功安装thin-1.2.11-x86-mswin32 已安装 1 个宝石 正在安装 Thin-1.2.11-x86-mswin32 的 ri 文档... 正在使用 3611 个类更新 ri 类缓存... 安装 Thin-1.2.11-x86-mswin32 的 RDoc 文档...

      【讨论】:

        猜你喜欢
        • 2013-05-07
        • 1970-01-01
        • 1970-01-01
        • 2012-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-31
        • 1970-01-01
        相关资源
        最近更新 更多