【踩坑】通过Apt安装软件包时报错

前言

新安装的Debain系统通过Apt安装软件包时报错:The following packages have unmet dependencies

问题复现

  • 通过apt install curl安装curl时报错
1
2
The following packages have unmet dependencies:
curl : Depends: libcurl4 (= 7.74.0-1.3+deb11u7) but 7.88.1-10 is to be installed

原因

  • 新安装的系统默认使用的依赖版本比较新,但是有些软件包使用的依赖版本是旧版本,在安装这些软件包时,apt发现需要安装的软件包的依赖已经存在,并且版本号不相同(如果是旧版本依赖,apt可以自动更新,但是新版本依赖没办法降级),所以导致报错无法安装该软件包

解决问题

  • 手动将版本过于新的依赖卸载,并重新安装,会自动安装较旧的版本

因为封装系统镜像时使用的依赖是最新的,而apt远程仓库中的依赖是次新的

libcurl4:根据报错中提到的过于新的依赖,确定需要卸载的软件包名

1
2
apt remove --purge libcurl4
apt install libcurl4

完成

后记

  • 这种方法不适用于依赖被系统程序引用的情况,容易造成移除中途失败,并且无法重新安装的情况

参考文献

博客园——Mr.Higgerw