我没有root用户访问我正在使用的计算机,所以我不能简单地使用包管理器来安装我需要的程序。因此,我一直在从源头编译它们。我已经成功编译了Apache和PHP并且托管了一个wiki。我现在想将SphinxSearch与MediaWiki设置一起使用。
我正在使用SQLite作为数据库,并且有using SphinxSearch with SQLite的说明,这需要使用libexpat编译SphinxSearch。
我一直试图让SphinxSearch在XML支持下进行编译,但我似乎无法得到它。 The only help I've found online说安装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_PATH
和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中编译来解决它(请参阅我在下面发布的答案以获取更多详细信息),但这是一个相当冗长的解决方案,应该是一个简单的问题。因此,如果有人发布了更好的解决方案,我会将其标记为最佳答案。
答案 0 :(得分:1)
我能够通过设置虚拟机(使用VirtualBox)并在其中安装等效版本的Linux(我正在连接的服务器运行RHEL5,因此我安装了CentOS 5)来解决这个问题。然后,在VM上我使用以下方式设置环境:
yum groupinstall "Development tools"
yum install expat-devel
然后,我按照我在主服务器上尝试进行的正常编译。完成后,我只是tar / gzip生成的Sphinx文件夹并将其传输到主服务器。一切都很完美。
注意:在VM上编译Sphinx时,请确保设置将安装Sphinx的确切目录结构.Sphinx使用可执行文件内的输出前缀进行编译,因此需要具有路径按照您希望的方式设置。我不知道他们为什么不从配置文件中提取所有必需的路径。