0

我知道这个神秘的模块缺少文档,但我正在运行 Strawberry Perl,并且很高兴能够安装它。我通常从命令行运行类似以下内容来获取模块:

cpan WWW::Selenium

例如,获取 WWW::Selenium。然而当我跑步时

cpan Lucene

我明白了这一切,而且因为我以前从未见过这种情况,所以我将矛头指向 Windows,因为它缺乏更好的线索:

C:\Users\PHJohnson\Desktop>cpan Lucene
CPAN: CPAN::SQLite loaded ok (v0.202)
Database was generated on Mon, 25 Jun 2012 18:28:43 GMT
Running install for module 'Lucene'
Running make for T/TB/TBUSCH/Lucene-0.18.tar.gz
CPAN: Digest::SHA loaded ok (v5.63)
CPAN: Compress::Zlib loaded ok (v2.042)
Checksum for C:\strawberry\cpan\sources\authors\id\T\TB\TBUSCH\Lucene-0.18.tar.gz ok
CPAN: Archive::Tar loaded ok (v1.80)
CPAN: File::Temp loaded ok (v0.22)
CPAN: Parse::CPAN::Meta loaded ok (v1.4401)
CPAN: CPAN::Meta loaded ok (v2.112621)

CPAN.pm: Building T/TB/TBUSCH/Lucene-0.18.tar.gz

couldn't find clucene config file at Makefile.PL line 34.
Warning: No success on command[C:\strawberry\perl\bin\perl.exe Makefile.PL]
TBUSCH/Lucene-0.18.tar.gz
C:\strawberry\perl\bin\perl.exe Makefile.PL -- NOT OK
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install
Could not read metadata file. Falling back to other methods to determine prerequisites

C:\Users\PHJohnson\Desktop>

我想知道,我该如何解决这个问题 - 我可以在 Windows 上获取 Lucene 库吗?

4

2 回答 2

3

看,一些 Perl 模块只是一些库和/或系统工具的包装器,允许在 Perl 程序中自然地使用它们(使用熟悉的语法结构等)。Lucene的构建方式相同:它是 CLucene 索引库的包装器。

所以你有(和 Perl 一样经常)两种选择:要么尝试从源代码构建 CLucene (我说“尝试”,因为我真的不知道它是否可以在 Windows 上工作) - 或者寻找类似的解决方案,如KinoSearch(或其分支,KinoSearch1 - 两者都被评论者评为相当不错)和Plucene。后者实际上是 Lucene 搜索引擎的 Perl 端口,而不是任何类型的包装器。

于 2012-06-25T19:20:51.003 回答
2

查看 Makefile.PL,该模块不是为在 Windows 下工作而设计的,如果您查看“C:\Strawberry\cpan\build\”下的 Makefile.PL(在我的机器上),您应该会看到类似这样的内容行〜8:

## Hash that specifies for each OS all possible directories to look
## for CLucene/clucene-config.h
my $rh_include_dirs = {
     "linux"   => ["/usr/include",       "/usr/lib"], 
     "freebsd" => ["/usr/local/include", "/usr/local/lib"], 
     "darwin"  => ["/usr/local/include", "/usr/local/lib"],
};

您可以尝试使用在 Windows 中安装 Lucene 的路径添加另一个条目。

my $rh_include_dirs = {
     "linux"   => ["/usr/include",       "/usr/lib"], 
     "freebsd" => ["/usr/local/include", "/usr/local/lib"], 
     "darwin"  => ["/usr/local/include", "/usr/local/lib"],
     "MSWin32" => ["path to your lucene install"],
};

更新文件并保存后,您应该能够执行常规操作perl Makefile.PL,然后执行常规操作makemake install(或 Windows 上的 nmake)。makeMakefile.PL 脚本将生成构建和安装包所需的文件。

我没有Lucene,所以我无法尝试...

于 2012-06-25T18:54:49.537 回答