0

我没有对我正在使用的计算机的 root 访问权限,所以我不能简单地使用包管理器来安装我需要的程序。因此,我一直在从源代码编译它们。我已经成功编译了 Apache 和 PHP,并托管了一个 wiki。我现在想在 MediaWiki 设置中使用 SphinxSearch。

我正在使用 SQLite 作为数据库,并且有使用 SphinxSearch 和 SQLite的说明,这需要使用 libexpat 编译 SphinxSearch。

我一直在尝试让 SphinxSearch 使用 XML 支持进行编译,但我似乎无法获得它。我在网上找到的唯一帮助说像这样安装 libexpat 和 libexpat-dev

apt-get install libexpat libexpat-dev

但是,由于我不是 root,我不能简单地那样安装。所以我从源代码编译了 libexpat:

wget http://sourceforge.net/projects/expat/files/expat/2.1.0/expat-2.1.0.tar.gz/download
tar xf expat-2.1.0.tar.gz
cd expat-2.1.0/
./configure --prefix=${BASE_PATH}/expat-2.1.0
make
make install

哪个编译 libexpat 非常好。接下来,我将 libexpat 添加到LD_LIBRARY_PATHand中,C_INCLUDE_PATH如下所示:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${BASE_PATH}/expat-2.1.0/lib"
export C_INCLUDE_PATH="$C_INCLUDE_PATH:${BASE_PATH}/expat-2.1.0/include"

然后我去编译Sphinx:

wget http://sphinxsearch.com/files/sphinx-2.2.7-release.tar.gz
tar xf sphinx-2.2.7-release.tar.gz
cd sphinx-2.2.7-release
./configure --prefix=${BASE_PATH}/sphinx-2.2.7 --without-mysql --with-libexpat

但是,configure 的输出给出:

...
checking whether to compile with re2 library support... no
checking whether to compile with RLP library support... no
checking for libexpat... checking for library containing XML_Parse... no
not found
configure: WARNING: xmlpipe2 will NOT be available
checking for libiconv... checking for library containing iconv... none required
found
checking for iconv() arg types... char **
...

那么,您知道如何让 Sphinx 找到包含“XML_Parse”的库吗?

更新:所以我能够通过在 VM 中编译来解决它(有关更多详细信息,请参阅下面我发布的答案),但对于应该是一个简单问题的问题来说,这是一个相当冗长的解决方案。因此,如果有人发布了更好的解决方案,我会将其标记为最佳答案。

4

1 回答 1

1

我能够通过设置虚拟机(使用 VirtualBox)并在其中安装等效版本的 Linux 来解决此问题(我要连接的服务器正在运行 RHEL5,因此我安装了 CentOS 5)。然后,在 VM 上,我使用以下命令设置环境:

yum groupinstall "Development tools"
yum install expat-devel

然后,我按照我尝试在主服务器上进行的正常编译。完成后,我只需 tar/gzip 生成的 Sphinx 文件夹并将其传输到主服务器。一切都很完美。

注意:在 VM 上编译 Sphinx 时,请确保设置了将安装 Sphinx 的确切目录结构。Sphinx 使用可执行文件内的输出前缀进行编译,因此它需要完全按照您想要的方式设置路径成为。我不知道为什么他们不只是从配置文件中提取所有必需的路径。

于 2015-03-05T23:59:23.427 回答