在Windows上安装Ruby的ncurses

我想在Windows上安装ruby的ncurses。 我之前没有在我的机器上安装过ncurses。 我以为拥有它所要求的“ruby devkit”就足够了,但是现在我被要求指定选项……我不知道要select哪个选项,或者如果我需要/安装其他东西为gem得到安装:

C:\Ruby193\Devkit>gem install ncurses -- --ruby=C:/Ruby193/bin/ruby --without-make-prog --without-opt-dir Temporarily enhancing PATH to include DevKit... Building native extensions. This could take a while... ERROR: Error installing ncurses: ERROR: Failed to build gem native extension. C:/Ruby193/bin/ruby.exe extconf.rb --ruby=C:/Ruby193/bin/ruby --without-make-prog --without-opt-dir C:/Ruby193/lib/ruby/1.9.1/shellwords.rb:35:in `shellsplit': undefined method `scan' for false:FalseClass (NoMethodError) from C:/Ruby193/lib/ruby/1.9.1/mkmf.rb:2216:in `<top (required)>' from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from extconf.rb:22:in `<main>' Gem files will remain installed in C:/Ruby193/lib/ruby/gems/1.9.1/gems/ncurses-0.9.1 for inspection. Results logged to C:/Ruby193/lib/ruby/gems/1.9.1/gems/ncurses-0.9.1/./gem_make.out 

什么是痛苦,我只想安装这个gem,所以我可以运行这个:

 require 'curses' cols = Curses.stdscr.maxx msg = "random_string" str = msg.center(msg.length + cols - msg.length - 5 - 3) puts "<!-- #{str}-->" 

更新后的版本:

  1. 获取ncurses(MinGW端口): http : //invisible-island.net/ncurses/
  2. 把它放在C:\ ncurses中
  3. gem install curses --platform=ruby -- --with-ncurses-dir="C:\ncurses"
  4. 将C:\ ncurses \ bin的内容复制到路径中的某个位置

C:\ ncurses可以是任何目录

ruby ncurses gem要求在机器上安装ncurses。 据我所知,ncurses还没有被移植到Windows。 所以我不认为你会得到这个工作。

可能还有其他方法可以找出窗户在窗户上的宽度,但是我无法帮助你。

我已经设法为ruby 2.2做了这个,默认情况下这个ruby不是用curses来的,但是花了我一段时间:

  • 从SourceForge下载PDCurses ;
  • 解压缩;
  • 将它的内容复制到ruby可以看到的文件夹中。 我不确定我使用了哪一个,我认为我将它复制到多个,直到它工作。 ruby -e 'puts $:'可能有帮助;
  • 安装curses, gem instal curses 。 如果上一步是错误的,这将失败;
  • 完成:D

这种方法不适用于其他的宝石,如ffi-ncurses。 提示:大部分的curses功能都来自Window类 ,默认情况下它带有curses。

更新:似乎SourceForge不再承载Windows的NCurses二进制文件。 这个答案现在已经过时了。 抱歉! (截至2015年8月, GNU NCurses Page列出了一个“新”v6.0版本,比我的答案中的0.9.1更新版本。)

我终于得到这个工作(多年后,我需要它…) 没有 Cygwin,PDCurses,或手动构建NCurses源。 说明可在我的博客上找到 。 以供参考:

  • 从SourceForge下载最新的NCurses二进制文件(0.9.1)。
  • 将文件解压缩到机器上的某个位置。
  • 通过运行ruby -e 'puts $:'查找Ruby搜索库ruby -e 'puts $:'
  • 将ncurses.so和lib \ ncurses.rb从NCurses目录复制并粘贴到您选择的目录中。 将它们都放在根目录中。
  • 运行您的NCurses功能的应用程序。

有用。 没有PDCurses!

我已经成功地从sourceforge下载了ncurses 0.9.1的二进制文件 ,所以库仍然可用。

然后我尝试了原生Ruby和IronRuby 1.1.3

  1. 放置两个文件(ncurses.so ncurses.rb)中

    C:\红宝石\ Ruby193 \ LIB \红宝石\ 1.9.1

    给本地Ruby提供了一个错误

    指定的模块无法找到。 – C:/Ruby/Ruby193/lib/ruby/1.9.1/ncurses.so(LoadError)

  2. 把它们放在这里(for IronRuby)C:\ Program Files文件(x86)\ IronRuby 1.1 \ Lib \ ruby​​ \ 1.9.1

    该模块预计包含一个汇编清单。 (来自HRESULT的异常:0x80131018)