CentOS8.0安装迅搜(XunSearch)引擎报错的解决办法
在一些小型项目上需要应用全文搜索引擎时,我比较喜欢使用迅搜,因为部署方便,调用简单,今天给客户部署系统安装迅搜时,竟然有报错(极少遇到报错的情况),花了一些时间查资料,终于解决了,分享一下经验
首先是定位原因,因为我已经在起码五六台Centos主机上安装过迅搜,前面都顺利安装完成了,所以应该是不迅搜本身有什么问题,更大可能是跟运行环境是有关系的,看了一下,目前这台机子安装的是Centos8.0,我之前安装的系统都是7.X的,所以极有可能是和操作系统的版本有关系的。
看了一下在安装界面的信息,内容如下:
bufferevent_openssl.c:237:2: note: (near initialization for 'methods_bufferevent') bufferevent_openssl.c:228:19: error: storage size of 'methods_bufferevent' isn't known static BIO_METHOD methods_bufferevent = { ^~~~~~~~~~~~~~~~~~~ make[2]: *** [Makefile:793: bufferevent_openssl.lo] Error 1 make[2]: Leaving directory '/usr/local/src/xunsearch-full-1.4.14/libevent-2.0.21-stable' make[1]: *** [Makefile:857: install-recursive] Error 1 make[1]: Leaving directory '/usr/local/src/xunsearch-full-1.4.14/libevent-2.0.21-stable' make: *** [Makefile:1182: install] Error 2
看样子应该是在编译过程中报错了,这个比较棘手,因为这是C写的代码,我总不能直接去改它的源码,于是只能从什么问题导致了编译错误入手,各种查询之后,发现有位网友曾经遇到过这个问题,以下是引用这位网友的内容:
这个问题的原因及解决思路如下: 原因在于libevent 2.0.x需要openssl < 1.1.0 常用的几个Linux发行版已经把系统的openssl升级到了1.1.0+ 即对应需要libevent 2.1.x+ 而libevent 2.1.x改了头文件.. 如果不更换系统openssl版本. 那就可以去手动下载一个 libevent-2.1.11-stable.tar.gz 自己换成bz压缩格式(libevent-2.1.11-stable.tar.bz2) 放进 packages,记得删掉原来的libevent 作者:一件小毛衣 链接:https://www.jianshu.com/p/2bd166d48f42 来源:简书
后面具体的步骤没有参考他的,因为我和他使用的迅搜版本是不同的,具体解决的方法跟他的有所不同,所以下面继续说我的解决过程:
首先,先去下载一下2.1.X版本的libevent安装包,可以直接搜索libevent,然后在官方的网站上下载,很多时候官方的链接是github上的,如果直接在linux系统上用wget下载有点慢,这种情况下可以先在咱们自己的浏览器上下载好,再通过winscp上传上去,更加快。
我下载的版本是libevent2.1.12,下载链接是:https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
下载好后上传到服务器上放xunsearch的目录下,我的目录是/usr/local/src/,然后将这个文件解压,并重新压缩成bz2格式,参考代码如下:
//先将libevent解压(以便压缩成所需格式) tar -zxvf libevent-2.1.12-stable.tar.gz //压缩成bz2格式,这是迅搜安装包的支持的格式 tar -cjf libevent-2.1.12-stable.tar.bz2 libevent-2.1.12-stable //复制到xunsearch下的packages文件夹内 cp libevent-2.1.12-stable.tar.bz2 xunsearch-full-1.4.15/packages/ //进入安装包的目录并将原来自带的libevent安装包删除(xunsearch1.4.15自带的是2.0.X) cd xunsearch-full-1.4.15/packages/ rm -f libevent-2.0.* //返回上一步的文件夹(即迅搜安装包的根目录),然后执行setup.sh就可以了, //迅搜会自动检查安装包文件内的libevent开头的安装包,如果没找到会报错,如果找到了就会自动解压并编译安装 cd .. ./setup.sh
然后安装过程就愉快地完成了