系统环境:Centos7
现象:运行xray时报错xray: error while loading shared libraries: libpcap.so.0.8: cannot open shared object file: No such file or directory
解决办法:
1.检查libpcap是否存在:
[root@server]# locate libpcap| grep "/usr/lib64/" /usr/lib64/libpcap.so /usr/lib64/libpcap.so.1 /usr/lib64/libpcap.so.1.5.3 ......
2.以上动态库如果存在,直接建立符号链接即可,如下:
[root@server ]# cd /usr/lib64/ [root@lib64]# ln -s libpcap.so.1.5.3 libpcap.so.0.8 [root@lib64]# xray version ____ ___.________. ____. _____.___. \ \/ /\_ __ \ / _ \ \__ | | \ / | _ _/ / /_\ \ / | | / \ | | \/ | \ \____ | \___/\ \ |____| /\____|_ / / _____/ \_/ \_/ \_/ \/ Version: 1.9.4/fda88126/COMMUNITY config (xray.yaml) not found, gen xray.yaml/module.xray.yaml/plugin.xray.yamlr
如果出现以上显示则正常,如果仍然报错请继续往下看
3.如果提示locate 命令找不到,需要安装相关软件包:
yum install mlocate -y
4.安装locate后继续文章第2步操作,如果没有找到libpcap.so,或者显示为空,需要自己安装一下:
#安装 yum install libpcap-devel #更新库(过程较慢,会遍历系统目录树) updatedb
5.更新好后重复第2步即可。
拓展:
updatedb 命令用来创建或更新 slocate/locate 命令所必需的数据库文件。
updatedb 命令的执行过程较长,因为在执行时它会遍历整个系统的目录树,并将所有的文件信息写入 slocate/locate 数据库文件中。
slocate 本身具有一个数据库,里面存放了系统中文件与目录的相关信息。
语法
updatedb(选项)
参数
- -o<文件>:忽略默认的数据库文件,使用指定的slocate数据库文件;
- -U<目录>:更新指定目录的slocate数据库;
- -v:显示执行的详细过程。
以下实例检测一个未存在的文件 runoob.txt:
# locate runoob.txt # 检索 runoob.txt,没有任何输出,表示没有该文件 # touch ./runoob.txt # 添加文件 runoob.txt # locate runoob.txt # 再次检索 runoob.txt,依然没有该文件 # updatedb # 更新 locate.db 数据库 # locate runoob.txt # 再次数据库检索 runoob.txt,找到该文件 /root/runoob/runoob.txt
使用 -U 选项可以指定要更新 slocate 数据库的目录。
updatedb -U /root/runoob/