【问题标题】:Unable to install or update Ruby bluecloth gem on Windows Ruby 1.9.2无法在 Windows Ruby 1.9.2 上安装或更新 Ruby bluecloth gem
【发布时间】:2012-01-30 06:47:00
【问题描述】:

尝试在 Windows 上更新我的 bluecloth gem 版本时收到错误消息。是否有需要为 Windows 安装的不同版本或可以使用的 bluecloth 替代品?不幸的是,由于我使用其他软件,我的开发环境严格是 Windows,否则我会使用 Linux 环境。

这是我得到的复制粘贴:

C:\Users\Developer1>gem 更新
更新已安装的 gem
更新蓝布
暂时增强 PATH 以包含 DevKit...
构建原生扩展。这可能需要一段时间...
错误:安装 bluecloth 时出错:
错误:无法构建 gem 原生扩展。

C:/Ruby192/bin/ruby.exe extconf.rb
检查 srand()... 是的
检查随机()...否
检查 rand()... 是的
检查 string.h、strings.h 中的 bzero()...否
检查 strcasecmp()... 是
检查 strncasecmp()... 是
检查 mkdio.h... 是的
检查 ruby​​/encoding.h... 是的
创建 extconf.h
创建 Makefile

制作 C:/Ruby192/bin/ruby -e "puts 'EXPORTS', 'Init_bluecloth_ext'" > bluecloth_ext-i386-mingw32.def gcc -I。 -IC:/Ruby192/include/ruby-1.9.1/i386-mingw32 -I/C/Ruby192/include/ruby-1
.9.1/ruby/backward -I/C/Ruby192/include/ruby-1.9.1 -I。 -DRUBY_EXTCONF_H=\"extconf.h\" -DVERSION=\"2.0.9\" -O3 -g -Wextra -Wno-unused-parameter -Wno-括号 -Wpointer-arith -Wwrite-strings -Wno-missing-field -initializers -Wno-long-long -I。 -o bluecloth.o -c bluecloth.c
在 c:\ruby-devkit\mingw\bin../lib/gcc/mingw32/4.5.2/../../..
中包含的文件中 /../include/windows.h:48:0,
来自 c:\ruby-devkit\mingw\bin../lib/gcc/mingw32/4.5.2/../../..
/../include/winsock2.h:22,
来自 c:/Ruby192/include/ruby-1.9.1/ruby/win32.h:33,
来自 c:/Ruby192/include/ruby-1.9.1/ruby/defines.h:205,
来自 c:/Ruby192/include/ruby-1.9.1/ruby/ruby.h:74,
来自 c:/Ruby192/include/ruby-1.9.1/ruby.h:32,
来自 bluecloth.h:14,
来自 bluecloth.c:25:
c:\ruby-devkit\mingw\bin../lib/gcc/mingw32/4.5.2/../../../../include/windef.h:2
29:23:错误:重复的“未签名”
c:\ruby-devkit\mingw\bin../lib/gcc/mingw32/4.5.2/../../../../include/windef.h:2
38:23:错误:重复的“无符号”
c:\ruby-devkit\mingw\bin../lib/gcc/mingw32/4.5.2/../../../../include/windef.h:2
38:23:错误:声明说明符中有两种或多种数据类型
c:\ruby-devkit\mingw\bin../lib/gcc/mingw32/4.5.2/../../../../include/windef.h:2
41:24:错误:重复的“未签名”
make: * [bluecloth.o] 错误 1 ​​

Gem 文件将继续安装在 C:/Ruby192/lib/ruby/gems/1.9.1/gems/bluecloth-2.2.0 以供检查。 结果记录到 C:/Ruby192/lib/ruby/gems/1.9.1/gems/bluecloth-2.2.0/ext/gem_make.out 没什么可更新的

【问题讨论】:

  • 您之前是否使用gem install bluecloth 安装了gem?

标签: ruby rubygems gem bluecloth


【解决方案1】:

2.2.0 中的头文件阻止 bluecloth 在 Windows 上编译。但是,您可以自己修补它。正如 Luis Lavena 所说,您需要应用路径。

  1. 如果你还没有运行gem install bluecloth -v '2.2.0'

  2. bluecloth.h文件上应用this patch,在我的机器上它位于

    H:\Ruby193\lib\ruby\gems\1.9.1\gems\bluecloth-2.2.0\ext\bluecloth.h

  3. 以bluecloth 2.2.0目录为例

    H:\Ruby193\lib\ruby\gems\1.9.1\gems\bluecloth-2.2.0

  4. 运行rake gem(这可能需要安装一些额外的gem)。

    然后您应该会看到在中创建的 .gem 文件

    H:\Ruby193\lib\ruby\gems\1.9.1\gems\bluecloth-2.2.0\pkg\bluecloth-2.2.0.gem

  5. 打开这个目录并安装打过补丁的gem:

    gem install bluecloth-2.2.0.gem --platform=ruby

【讨论】:

  • 感谢您提供的信息,但这只是从它自己的目录中完全清除了 gem。你没有说先把它复制出来。
  • 我应用了补丁,但我遇到了同样的错误,我想解决这个问题。但与这个主题不同的是,我的检查没有找到一些要求。检查 srand()... 不检查 srandom()... 不检查 random()... 不检查 rand()... 不检查 string.h,strings.h 中的 bzero()。 .. 不检查 strcasecmp()... 不检查 stricmp()... 否 此扩展需要 strcasecmp() 或 stricmp() 我应该重新安装 devkit 并重试吗?
【解决方案2】:

BlueCloth 中包含的 C 扩展中包含标头的顺序似乎阻碍了 Windows 下的编译。

应用以下补丁:

https://gist.github.com/1539611

编译和工作。

也许您可以将问题报告给 gem 作者?

http://deveiate.org/projects/BlueCloth https://github.com/ged/bluecloth

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-13
    • 2010-12-29
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 2011-05-02
    • 2014-08-11
    • 1970-01-01
    相关资源
    最近更新 更多