在Windows上为ruby安装ncurses

时间:2012-10-17 12:39:59

标签: ruby windows ncurses

我正在尝试在Windows上为ruby安装ncurses。我之前没有在我的机器上安装过ncurses。我认为拥有"ruby devkit",它已经要求就足够了,但现在我被要求指定选项...我不知道选择哪个选项,或者我是否需要做/为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

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

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

6 个答案:

答案 0 :(得分:3)

更新版本:

  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的内容复制到路径中的某个位置
  5. C:\ ncurses可以是任何目录

答案 1 :(得分:0)

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

我终于让它工作了(在我需要它之后的几年......)没有 Cygwin,PDCurses,或者手动构建NCurses源。说明可用on my blog。供参考:

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

有效。没有PDCurses!

答案 2 :(得分:0)

我已经从sourceforge成功下载了ncurses 0.9.1 binaries,因此该库仍然可用。

然后我尝试使用原生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. 将它们放在这里(适用于IronRuby) C:\ Program Files(x86)\ IronRuby 1.1 \ Lib \ ruby​​ \ 1.9.1

    给出

    该模块应该包含一个程序集清单。 (HRESULT异常:0x80131018)

答案 3 :(得分:0)

当gem安装需要curses lib时;所以首先你需要安装NCurses 与你的msys2

https://sourceforge.net/p/mingw-w64/wiki2/NCurses/

下载NCurses(撰写本文时为v5.9):http://ftp.gnu.org/pub/gnu/ncurses/ 在源目录

然后解压并在MSYS shell中:

./ configure --host = x86_64-w64-mingw32 --enable-term-driver --enable-sp-funcs --prefix = / some / prefix

制作

进行检查

make install

然后如链接中所述: https://github.com/ruby/curses/issues/13

使用--platform = ruby​​, - with-curses-include, - with-curses-lib flags with gem install

答案 4 :(得分:0)

从2020年2月(可能更早)开始,您可以使用以下命令安装ncurses lib

gem install curses

至少在Ruby 2.6.5上它可以正常工作

答案 5 :(得分:-1)

ruby​​ ncurses gem需要在机器上安装ncurses。据我所知,ncurses尚未移植到Windows。所以我认为你不会让它发挥作用。

可能还有其他方法可以找出屏幕在屏幕上的宽度,但我无法帮助您。