前言
最近搭建 Flarum 论坛时需要支持中文搜索 [1],根据社区用户的建议使用 xunsearch,但是在 Ubuntu 服务器上安装的时候出现了一些问题,在此记录一下解决方案。
问题
使用的服务器以及安装的 xunsearch 的版本信息如下:
- 服务器:Ubuntu 18.04.5 LTS
- xunsearch:1.14.15
在执行 sh setup.sh
命令后,报错信息如下:
Configuring libevent ...
Compiling & installing libevent ...
-----
static BIO_METHOD methods_bufferevent = {
^~~~~~~~~~~~~~~~~~~
Makefile:793: recipe for target 'bufferevent_openssl.lo' failed
make[2]: *** [bufferevent_openssl.lo] Error 1
网上查了一下,是 xunsearch 安装包里的 libevent 版本(2.0.21)与系统 OpenSSL 版本(1.1.1)不兼容导致的,因为 libevent 要求 OpenSSL 版本低于 1.1.0。
这时候可以采取两种解决方案,升级 libevent 或降级 OpenSSL,根据网上的教程 [2,3] 决定使用新版本的 libevent。
大家给出的方法都是:首先手动下载 libevent-2.1.11-stable.tar.gz
,然后转成 bz 压缩格式【点此下载】,最后将 libevent-2.1.11-stable.tar.bz2
放入 /xunsearch-full-1.4.15/packages/
目录下,继续执行 setup.sh
。
理论上这样就可以解决问题,但实际上我在操作的时候发现遇到了新的报错,如下所示。
Installing libevent (2.1.11-stable) ...
Extracting libevent package ...
tar: ./packages/libevent-2.1.11-stable.tar.bz2:归档中找不到
tar: 由于前次错误,将以上次的错误状态退出
setup.sh: 第 332 行: cd: libevent-2.1.11-stable: 没有那个文件或目录
Configuring libevent ...
tar 出现了“归档中找不到”的报错,网上说是把文件解压到一个新的目录需要加上 -C
参数,在折腾了一阵后依然没有解决问题。
方案
太长不看
删除 packages
目录下 2.0.21 这个较旧版本的 libevent 压缩包,这时再执行 setup.sh
,问题解决。
详细流程
于是我查看了 setup.sh
脚本,通过朴素的打印调试大法,我定位到了相应代码片段(329-334行),如下所示。
if test "do_install" = "yes" ; then
echo "Extracting libevent package ..."
echo "taifu",new_file
tar -xjf new_file cd libevent-new_version
echo "Configuring libevent ..."
./configure --prefix=$prefix >> ../setup.log 2>&1
这里大概的意思就是先解压,然后进入目录开始安装,但实际上命令行的输出中 $new_file
包含了两个版本(2.0.21 和 2.1.11)的 libevent 压缩包,如下所示。
Extracting libevent package ...
taifu, ./packages/libevent-2.0.21-stable.tar.bz2 ./packages/libevent-2.1.11-stable.tar.bz2
tar: ./packages/libevent-2.1.11-stable.tar.bz2:归档中找不到
tar: 由于前次错误,将以上次的错误状态退出
Configuring libevent ...
感觉应该就是这里起冲突了,使得 tar 出现“归档中找不到”的问题。于是我删除了 2.0.21 这个较旧版本的 libevent 压缩包,这时再执行 setup.sh
后,就只有一个版本的输出了。
Installing libevent (2.1.11-stable) ...
Extracting libevent package ...
taifu, ./packages/libevent-2.1.11-stable.tar.bz2
Configuring libevent ...
Compiling & installing libevent ...
开始正常的安装,终于,安装成功了!
+=================================================+
| Installation completed successfully, Thanks you |
| 安装成功,感谢选择和使用 xunsearch |
...
补充:后面我又测试了一下,使用 tar 解压两个文件时确实会出现“归档中找不到”的问题。
心得
就删除一个文件的事我能写这么多也是个人才:)
以后注意遇到问题后除了网上搜索相关博客外,还得查看代码文件和报错日志,手动调试。
总的来说,还是自己动手,丰衣足食。不能指望网上的教程可以解决所有的问题。
参考
- [1] Flarum 中文社区 | https://discuss.flarum.org.cn/d/1112
- [2] 简书 | https://www.jianshu.com/p/2bd166d48f42
- [3] 清泛网 | https://www.tsingfun.com/it/os_kernel/2494.html