琐碎笔记

解决 cURL 报错 “curl: undefined symbol: curl_mime_free”

佩佩 · 4月13日 · 2020年 · · · 318次查看

说明

记一次 curl 因 libcurl 版本与当前安装的 curl 版本不一致引发的报错。

报错信息

最近在一台 VPS 上运行 curl 命令居然运行不了,报错如下:

curl: symbol lookup error: curl: undefined symbol: curl_mime_free

解决

Google 了一番,得知可能是因为libcurl 版本与当前安装的 curl 版本不一致引发的,所以解决如下:

yum upgrade libcurl curl

遗憾的是,如上操作无果,提示无可用的更新包。

[[email protected] ~]# 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 指令:

[[email protected] ~]# 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 ,所以就运行不了了。

0 条回应