说明
记一次 curl
因 libcurl
版本与当前安装的 curl
版本不一致引发的报错。
问题引发来源
报错信息
最近在一台VPS上运行curl
命令居然运行失败,报错如下:
curl: symbol lookup error: curl: undefined symbol: curl_mime_free
解决
Google 了一番,得知可能是因为libcurl
版本与当前安装的 curl
版本不一致引发的,所以解决如下:
yum upgrade libcurl curl
遗憾的是,如上操作无果,提示无可用的更新包。
[root@nan ~]# yum upgrade libcurl curl
Loaded plugins: fastestmirror
Determining fastest mirrors
epel/x86_64/metalink | 17 kB 00:00:00
* base: mirror.keystealth.org
* epel: mirrors.sonic.net
* extras: mirror.centos.lax1.serverforge.org
* updates: mirror.keystealth.org
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/2): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(2/2): epel/x86_64/primary_db | 6.8 MB 00:00:00
No packages marked for update
可能是系统自带的更新源没有可用的更新,于是给系统增加一个源:
rpm -ivh http://mirror.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-2-1.rhel7.noarch.rpm
强制通过刚才添加的源更新库文件:
yum --enablerepo=city-fan.org install libcurl libcurl-devel
一路 y 确认即可。再来运行下 curl
指令:
[root@nan ~]# curl
curl: try 'curl --help' or 'curl --manual' for more information
偶了!成功解决。
原因
原因是之前在测试HTTP/3
文章《Nginx 配置启用 Quiche 和 HTTP/3.0》时特意编了译开发版的curl
,使其能够支持HTTP/3
请求。但是系统默认自带的有libcurl
,但编译时并没有一并将系统自带的libcurl
给更新到最新。而且直接替换了libcurl
的软连接,导致再次运行系统原来已安装的稳定版的curl
时,找不到与稳定版相对应的libcurl
,所以就运行不了啦。
测试~