Bluecloth v2.0.10与Windows 7无法正常工作

在Ruby 187中,我从http://rubyinstaller.org/downloads下载了devkit,并按照https://github.com/oneclick/rubyinstaller/wiki/Development-Kit的说明进行操作。 我还确保通过以下烟雾测试正确安装devkit。

然后我尝试安装蓝布(v2.0.10)。 它失败了以下错误:

C:\test\typo>gem install bluecloth --platform=ruby Temporarily enhancing PATH to include DevKit... Building native extensions. This could take a while... ERROR: Error installing bluecloth: ERROR: Failed to build gem native extension. c:/Ruby187/bin/ruby.exe extconf.rb checking for srand()... yes checking for random()... no checking for rand()... yes checking for bzero() in string.h,strings.h... no checking for strcasecmp()... yes checking for strncasecmp()... yes checking for mkdio.h... yes checking for ruby/encoding.h... no creating extconf.h creating Makefile make gcc -I. -I. -Ic:/Ruby187/lib/ruby/1.8/i386-mingw32 -I. - DRUBY_EXTCONF_H=\"extcon fh\" -DVERSION=\"2.0.4\" -g -O2 -DFD_SETSIZE=256 -I. -Wall -c bluecloth.c In file included from c:\rubydevkit\mingw\bin\../lib/gcc/ mingw32/4.5.1/../../../../include/windows.h:48:0, from c:\rubydevkit\mingw\bin\../lib/gcc/ mingw32/4.5.1/../../../../include/winsock2.h:22, from c:/Ruby187/lib/ruby/1.8/i386-mingw32/win32/ win32.h:27, from c:/Ruby187/lib/ruby/1.8/i386-mingw32/defines.h: 186, from c:/Ruby187/lib/ruby/1.8/i386-mingw32/ruby.h:37, from bluecloth.h:14, from bluecloth.c:25: c:\rubydevkit\mingw\bin\../lib/gcc/mingw32/4.5.1/../../../../include/ windef.h:229:23: error: duplicate 'unsigned' c:\rubydevkit\mingw\bin\../lib/gcc/mingw32/4.5.1/../../../../include/ windef.h:238:23: error: duplicate 'unsigned' c:\rubydevkit\mingw\bin\../lib/gcc/mingw32/4.5.1/../../../../include/ windef.h:238:23: error: two or more data types in declaration specifiers c:\rubydevkit\mingw\bin\../lib/gcc/mingw32/4.5.1/../../../../include/ windef.h:241:24: error: duplicate 'unsigned' bluecloth.c: In function 'bluecloth_initialize': bluecloth.c:190:9: warning: unused variable 'utf8text' make: *** [bluecloth.o] Error 1 Gem files will remain installed in c:/Ruby187/lib/ruby/gems/1.8/gems/ bluecloth-2.0.10 for inspection. Results logged to c:/Ruby187/lib/ruby/gems/1.8/gems/bluecloth-2.0.10/ ext/gem_make.out C:\test\typo> 

如果您需要2.2.0(最新版本),请按以下步骤操作:

  1. 安装DevKit

  2. 运行以下命令安装蓝布:

    gem install bluecloth

    在构建“原生扩展”时,这将失败,但会成功安装gem的源代码。

  3. 补丁bluecloth.h文件(对我来说,这可以在:D:\ ruby​​ \ Ruby-1.9.3-p125 \ lib \ ruby​​ \ gems \ 1.9.1 \ gems \ bluecloth-2.2.0 \ ext)中找到来自这里的补丁: https : //gist.github.com/1539611

  4. 转到bluecloth的gem安装文件夹。 对我来说,这看起来如下:

    D:\ruby\Ruby-1.9.3-p125\lib\ruby\gems\1.9.1\gems\bluecloth-2.2.0

  5. 运行以下命令:

    rake gem

    它可能会提示您安装其他一些gem,请相应地遵循。 完成后,您应该看到创建了bluecloth-2.2.0.gem。 对我来说,它在这里找到:

    D:\ruby\Ruby-1.9.3-p125\lib\ruby\gems\1.9.1\gems\bluecloth-2.2.0\pkg\bluecloth-2.2.0.gem

  6. 转到bluecloth-2.2.0.gem位置,然后运行以下命令:

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

似乎BlueCloth的2.0.10版本存在错误/问题。 您可以尝试使用2.0.7之类的旧版本:

 gem install bluecloth -v 2.0.7 

这似乎工作。

也许这值得检查最新版本(2.2.0?),如果不能正常工作,请将其报告给gem作者:

http://deveiate.org/projects/BlueCloth/query

这是修补的bluecloth.h代码,适用于匆忙的人……

 #ifndef BLUECLOTH_H #define BLUECLOTH_H #include "ruby.h" #if defined(HAVE_RUBY_ENCODING_H) && HAVE_RUBY_ENCODING_H # define M17N_SUPPORTED # include "ruby/encoding.h" #endif #include "config.h" #include "assert.h" #include "mkdio.h" void mkd_initialize _(( void )); void mkd_with_html5_tags _(( void )); /* Replace the macro from encoding.h that refers to static 'rb_encoding_list' */ #ifdef ENC_FROM_ENCINDEX #undef ENC_FROM_ENCINDEX #define ENC_FROM_ENCINDEX(idx) (rb_enc_from_index(idx)) #endif #endif 

github上有一个已经包含补丁的分支:

https://github.com/drakontia/bluecloth

Interesting Posts