wangshuo'blog

wangshuo'blog

Linux | 依赖缺失问题

Linux | 依赖缺失问题

debain 系列的 Linux 发行版中, 在使用 dpkg 命令安装 deb 文件,可能会出现依赖缺失的问题

下面分享一下个人的见解

推荐看一下这个 知乎-史上最硬核的 Linux 依赖问题解决方案

出现依赖问题的主要原因是两种

按照报错的信息,可能让你在终端实现下面的命令来尝试解决依赖问题

1
2
sudo apt install -f
# 或者

这个命令可以解决大部分依赖缺失的问题

运行这个命令,APT 会尝试为你解决这个问题,解决的方案有两种

如果是 缺失所需要的依赖APT 会尝试为你安装依赖,如果是 版本有冲突APT 会删除这个无法补全依赖的库(这个软件)

举例

之前,我重新安装了 Ubuntu22.04,需要安装 Synergy ^1,当时我电脑上暂时只有一份 Ubuntu20.04deb 安装包,在尝试安装后,出现了下面的问题

2022-11-14_15-03

2022-11-14_15-03_1

缺少这个库 (libssl1.1)的依赖,这个库在 Ubuntu22.04 中版本已经变化了,这个库在 Ubuntu22.04 中已经变成了 libssl3

2022-11-14_15-03_2

当我尝试使用 APT 来解决这个依赖时

2022-11-14_15-04

APT 无法解决这个依赖,就询问我们是否删除这个 synergy

当我们尝试使用 APT 或者 dpkg 来删除 libssl3 这个库时,这个库被多个库依赖

2022-11-14_15-05_1

我们可以尝试来手动解决这个依赖问题

不是很推荐,容易出现问题,很可能会破坏现有的程序依赖结构

UbuntuAPT 仓库中,这个版本的库已经被移除了,我们依旧可以在网上找到这个库的先前版本,并尝试卸载本地的版本,安装一个老版本的。

值得注意的是,上面的方法是有可能解决这个问题,但是个人不推荐去这样做,因为系统可能因为你的这个举动而 崩溃 [^2]

最好的解决思路还是重新下载一个针对 ubuntu22.04 这个版本的软件

或者使用 appImagesnapflatpak 这种把依赖打包到一起这个格式(并不一定有这种格式)


[^2]: 我个人遇到的一种情况是: 删除 vlc-data 这个库是时候,导致 Deepin 的桌面环境(dde)被删除

[^3]:此时,你会想要为什么想要 appImage,snap,flatpak 等等这类把依赖打包到依赖这种格式