在Ubuntu 10.04上安装PyLucene 3.0.3

4 投票
1 回答
2596 浏览
提问于 2025-04-16 15:10

我正在尝试在Ubuntu 10.04上安装PyLucene 3.0.3。这让我遇到了不少挑战,但到目前为止我已经做了以下几件事:

  • 按照PyLucene文档的说明,修补了setuptools,以便能够构建JCC。
  • 通过以下命令构建了JCC:cd pylucene-3.0.3-1/jcc; python setup.py build
  • 通过ant构建了Lucene 3.0.3,并将jar文件安装到/usr/share/java/lucene-core-3.0.3-dev.jar。需要注意的是,我已经安装了Ubuntu默认的Lucene包,路径是/usr/share/java/lucene-core-2.9.2.jar,并且它还链接到了/usr/share/java/lucene-core.jar

现在我正在尝试“make” PyLucene,但遇到了错误:

cd lucene-java-3.0.3;  -Dversion=3.0.3
/bin/sh: -Dversion=3.0.3: not found
make: *** [lucene-java-3.0.3/build/lucene-core-3.0.3.jar] Error 127

文件pylucene-3.0.3-1/doc/documentation/install.html提到“编辑Makefile以匹配你的环境”,但我不太明白这是什么意思。Makefile里似乎包含了我安装的Lucene版本号。我还需要如何编辑我的Makefile才能构建PyLucene呢?

补充:在Makefile中取消注释了一个部分(谢谢Torsten),以便在Ubuntu 8.10下编译(真的,8.10?)大部分内容似乎都能正常编译,但我还是收到了一个错误。几个组件报告“构建成功”,但最终的构建却以:

/usr/bin/python -m jcc --shared --jar lucene-java-3.0.3/build/lucene-core-3.0.3.jar --jar lucene-java-3.0.3/build/contrib/snowball/lucene-snowball-3.0.3.jar --jar lucene-java-3.0.3/build/contrib/analyzers/common/lucene-analyzers-3.0.3.jar --jar lucene-java-3.0.3/build/contrib/regex/lucene-regex-3.0.3.jar --jar lucene-java-3.0.3/build/contrib/memory/lucene-memory-3.0.3.jar --jar lucene-java-3.0.3/build/contrib/highlighter/lucene-highlighter-3.0.3.jar --jar lucene-java-3.0.3/build/contrib/queries/lucene-queries-3.0.3.jar --jar build/jar/extensions.jar  --package java.lang java.lang.System java.lang.Runtime --package java.util java.util.Arrays java.text.SimpleDateFormat java.text.DecimalFormat java.text.Collator --package java.io java.io.StringReader java.io.InputStreamReader java.io.FileInputStream --exclude org.apache.lucene.queryParser.Token --exclude org.apache.lucene.queryParser.TokenMgrError --exclude org.apache.lucene.queryParser.QueryParserTokenManager --exclude org.apache.lucene.queryParser.ParseException --exclude org.apache.lucene.search.regex.JakartaRegexpCapabilities --exclude org.apache.regexp.RegexpTunnel --python lucene --mapping org.apache.lucene.document.Document 'get:(Ljava/lang/String;)Ljava/lang/String;' --mapping java.util.Properties 'getProperty:(Ljava/lang/String;)Ljava/lang/String;' --rename org.apache.lucene.search.highlight.SpanScorer=HighlighterSpanScorer --version 3.0.3 --module python/collections.py --files 200 --build 
/usr/bin/python: jcc is a package and cannot be directly executed
make: *** [compile] Error 1

1 个回答

3

我之前也遇到过这个问题(不过当时没有在Ubuntu上安装Lucene的默认包)。我不太清楚Error 127具体是什么,但在我的情况下,把Makefile里的NUM_FILES=2改成NUM_FILES=200对我有帮助。因为当NUM_FILES=2时,它会在内存中创建非常大的文件,而Ubuntu处理不了这些大文件。把NUM_FILES改成200后,生成的文件块就小了,最后安装成功了。如果你用的是Python 2.6,还需要在Makefile里修改JCC的设置(见下文)。

以下是我在Makefile中觉得重要的部分:

# Linux     (Ubuntu 8.10 64-bit, Python 2.5.2, OpenJDK 1.6, setuptools 0.6c9)
PREFIX_PYTHON=/usr
ANT=ant
PYTHON=$(PREFIX_PYTHON)/bin/python
JCC=$(PYTHON) -m jcc.__main__ --shared
NUM_FILES=200

撰写回答