【问题标题】:How to build and install pylucene on ubuntu 20.04如何在 ubuntu 20.04 上构建和安装 pylucene
【发布时间】:2020-08-17 14:30:26
【问题描述】:

我正在尝试在我的 WSL Ubuntu 20.04 全新安装上安装 Pylucene。我尝试按照the official page but it looks outdated 上的教程进行操作。所以我想知道这里是否有人设法让它在 Ubuntu 20.04 和 python 3.8.2 上运行

我运行的命令:

sudo apt-get upgrade
sudo apt-get install -y default-jdk ant build-essential python3-dev
mkdir pylucene
cd pylucene
curl https://downloads.apache.org/lucene/pylucene/pylucene-8.3.0-src.tar.gz | tar -xz --strip-components=1
cd jcc
export JCC_JDK=/usr/lib/jvm/default-java
python3 setup.py build

^^^^^ 在这里失败:

...
building 'jcc3' extension
x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -D_jcc_lib -DJCC_VER="3.7" -I/usr/lib/jvm/default-java/include -I/usr/lib/jvm/default-java/include/linux -I_jcc3 -Ijcc3/sources -I/usr/include/python3.8 -c jcc3/sources/jcc.cpp -o build/temp.linux-x86_64-3.8/jcc3/sources/jcc.o -DPYTHON -fno-strict-aliasing -Wno-write-strings
x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -D_jcc_lib -DJCC_VER="3.7" -I/usr/lib/jvm/default-java/include -I/usr/lib/jvm/default-java/include/linux -I_jcc3 -Ijcc3/sources -I/usr/include/python3.8 -c jcc3/sources/JCCEnv.cpp -o build/temp.linux-x86_64-3.8/jcc3/sources/JCCEnv.o -DPYTHON -fno-strict-aliasing -Wno-write-strings
x86_64-linux-gnu-g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.8/jcc3/sources/jcc.o build/temp.linux-x86_64-3.8/jcc3/sources/JCCEnv.o -o build/lib.linux-x86_64-3.8/libjcc3.so -L/usr/lib/jvm/default-java/jre/lib/amd64 -ljava -L/usr/lib/jvm/default-java/jre/lib/amd64/server -ljvm -Wl,-rpath=/usr/lib/jvm/default-java/jre/lib/amd64:/usr/lib/jvm/default-java/jre/lib/amd64/server -Wl,-S
/usr/bin/ld: cannot find -ljava
/usr/bin/ld: cannot find -ljvm
collect2: error: ld returned 1 exit status
error: command 'x86_64-linux-gnu-g++' failed with exit status 1

我计划之后运行的命令:

sudo python3 --preserve-env=JCC_JDK setup.py install
cd ..
make
make test
sudo make install

【问题讨论】:

  • 您是否检查过libjava.solibjvm.so 是否存在于-L 选项提到的任何路径中或系统中的任何其他位置?
  • 我不知道该怎么做。
  • 我建议进入您的/usr/lib/jvm 文件夹并执行搜索以查看是否可以在任何地方找到该文件(一个简单的find . -name "libjvm.so" 就足够了)。在那之后,一旦你知道它们在哪里,你就可以找到你应该设置什么额外的 env var 来让设置正确地找到它们(我怀疑 JCC_JDK 指向错误的目录,但我无法证明)

标签: java python pylucene


【解决方案1】:

以下是在 Ubuntu 18.04 上成功安装 pylucene 的步骤 - 这可能对您有用:

  1. 安装openjdk-8: apt install openjdk-8-jre openjdk-8-jdk openjdk-8-doc 如果你不运行apt install ant,请确保你已经安装了ant。请注意,如果您安装了不同版本的 openjdk,则需要将其删除或运行 update-alternatives 以便使用 1.8.0 版本。

  2. java -version检查Java版本是1.8.0*

  3. 安装 openjdk-8 后创建一个符号链接(稍后您将需要它):

cd /usr/lib/jvm
ln -s java-8-openjdk-amd64 java-8-oracle
  1. 安装python-dev:sudo apt install python-dev 在我的情况下,Python 3 不起作用,所以我最终使用了 Python 2。但这可能不是问题的真正原因,所以欢迎您尝试 Python 3。如果您使用 Python 3,请使用 @987654327在下面的命令中 @ 而不是 python

  2. 安装 JCC(在 pylucene 文件夹的 jcc 子文件夹中):

python setup.py build
python setup.py install

您在第 3 步中创建的符号链接在这里会有所帮助,因为此路径已硬编码到 setup.py - 您可以检查一下。

  1. 安装 pylucene(从 pylucene 文件夹的根目录)。 编辑 Makefile,根据您的设置取消注释/编辑变量。 在我的情况下是
PREFIX_PYTHON=/usr
ANT=ant
PYTHON=$(PREFIX_PYTHON)/bin/python
JCC=$(PYTHON) -m jcc --shared
NUM_FILES=10

然后运行

make
make test
sudo make install
  1. 如果您看到与 JCC 的共享模式相关的错误,请从 Makefile 中删除 --shared

【讨论】:

    【解决方案2】:

    确认@code-your-dream 发布的答案也适用于 Python3(尤其是在 Ubuntu 18.04.1 中)

    对我来说,以这种方式安装 jcc 很重要。我尝试通过 conda 安装,但 pylucene 的构造存在冲突。

    在我的情况下,还需要从 jcc 更改中修改 setup.py 文件 'linux': ['-fno-strict-aliasing', '-Wno-write-strings'], 经过 'linux': ['-fno-strict-aliasing', '-Wno-write-strings','-D__STDC_FORMAT_MACROS'], 正如其他线程中提到的那样Issue with installing PyLucene 6.5.0 on Linux

    要确认所需的 java 版本(在我的情况下也是 8,不适用于 11),您可以在 pylucene 文件夹 /jcc/setup.py 中搜索块 JDK = {...}。在我的情况下,参考: 'linux': '/usr/lib/jvm/java-8-oracle',

    【讨论】:

      猜你喜欢
      • 2011-07-30
      • 2021-03-22
      • 2020-10-10
      • 1970-01-01
      • 2020-09-30
      • 2021-06-05
      • 2020-11-04
      • 1970-01-01
      • 2021-07-03
      相关资源
      最近更新 更多