Ubuntu 24.04升级到24.04.1 LTS后curl因缺失liblber-2.5.so.0库无法运行
从你给出的ldd输出能抓到关键问题:你的系统curl在调用/usr/local/lib/libcurl.so.4,而不是Ubuntu官方包提供的系统库(正常应该在/usr/lib/x86_64-linux-gnu/路径下)。这个/usr/local下的libcurl大概率是你之前手动编译安装的,它依赖的旧版本liblber-2.5.so.0在升级到24.04.1后被系统移除了(现在系统默认用的是2.6版本的库),所以才会触发缺失依赖的报错。
试试下面的步骤来解决:
临时验证问题根源
先强制curl使用系统自带的库运行,确认是不是本地库的干扰:LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/ curl ifconfig.me如果这条命令能正常返回你的公网IP,说明问题确实出在本地库覆盖了系统库。
移除干扰的本地libcurl文件
手动删除/usr/local下的libcurl相关文件,消除全局干扰:sudo rm /usr/local/lib/libcurl.so* sudo ldconfig第一条命令会清理
/usr/local/lib下所有libcurl的软链接和库文件,第二条命令用来更新系统的库缓存,让系统优先识别官方库。重新确认系统curl的完整性
先检查/usr/bin/curl是否属于官方包:dpkg -S /usr/bin/curl正常输出应该是
curl:amd64: /usr/bin/curl,如果没问题,再重新安装一次系统curl确保文件没有损坏:sudo apt install --reinstall curl测试curl是否恢复正常
直接运行命令验证:curl ifconfig.me这时候应该就能正常返回结果了。
如果之后你确实需要使用自定义编译的libcurl,建议不要直接安装到/usr/local/lib(会全局干扰系统程序),可以用./configure --prefix=/opt/mycurl这类方式指定独立路径,然后通过环境变量或者别名来调用对应的curl版本,避免和系统程序冲突。
备注:内容来源于stack exchange,提问作者Stillkill




