Ubuntu解决依赖关系问题的正确姿势

在 Unbuntu 系统上安装各种软件时,经常会遇到各种各样的依赖问题而导致安装无法进行。我作为一枚 Linux 小白正深受其苦,经常越弄越乱导致不得不重装系统(哭)。通常来说,这类问题可以通过 更换下载源apt-get updateapt-get upgrade 来解决。但更经常会遇到连这三幻神(雾)都没法解决问题的时候。这篇文章就来分享一下安装 Deb 包遭遇依赖问题时到底应该怎么做~

Deb 包安装的正确姿势

从网上下载 .deb 安装包后,我们可以进入到 .deb 包的下载目录,使用 dpkg 命令进行安装。

$> sudo dpkg -i <package.deb>
  • 以下是 dpkg 的一些常用指令。
$> sudo dpkg -i <package.deb>    #安装包
$> sudo dpkg -r <package>       #删除包
$> sudo dpkg -P <package>       #彻底删除包(包括配置文件)
$> dpkg -l                       #列出当前已安装的包

如果命令执行成功,那就万事大吉了。到此为止软件就安装好了,当然也不用继续看下面的内容了。

但是使用 dpkg 安装时经常会报错,提示缺少依赖,导致安装终止。这时我们可以使用 apt-get 指令修复依赖问题,它会自动安装缺少的软件包。

$> sudo apt-get -f install

执行成功后,apt-get 就已经为我们安装好了要安装的 .deb 包,不需要重新执行 dpkg 命令了。

  • 如果系统的 apt 版本在1.1以上,可以直接使用 apt 进行安装 .deb 包,而不需要 dpkg。它可以自动为我们安装需要的依赖。具体可以查看 apt1.1 发布说明
$> apt -v
apt 1.8.2 (amd64)
$> sudo apt install ./<package.deb>

如果使用 apt 不能修复依赖问题,反而自动卸载了未安装完成的 .deb 包;或者使用 apt install 安装 .deb 包时提示类似以下内容。

下列软件包有为满足的依赖关系:
 * : 依赖:python3-apt 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

导致这个错误的通常原因是,系统中已经安装过被依赖的包的高版本。例如在我安装 vscode时,需要依赖 libpython3-stdlib 3.6.5;但是之前在安装其它软件时,系统中已经安装了 libpython3-stdlib 3.7.3,因此需要对包的版本进行降级。而 apt-get -f install 并不能胜任这个工作。
最简单的方法是用 aptitude 代替 apt-getaptitudeapt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。首先下载 aptitude

$> sudo apt-get install aptitude
  • 如果下载 aptitude 时也发生了依赖关系错误而导致无法下载,那你就自求多福吧。。。(不想手动调整依赖关系的话,就只能重装系统了,痛苦)

下载好 aptitude 后,执行以下命令修复依赖关系。(当然也是要在 dpkg 执行之后)

$> sudo aptitude -f install

这时 aptitude 会对依赖关系进行智能处理。如果方案中仍然存在未解决的依赖,提示你删除 .deb 软件包。

删除 下列软件包
1)    vs-code [1:1.0.0.66 (now)]

是否接受该方案? [Y/n/q/?]

这时需要输入 n,让 aptitude 重新计算可行方案,它会对已存在的包进行删除、降级等操作。

总的来说,aptitude 在解决依赖关系问题上,比 apt 智能很多。因此,在遇到复杂的依赖问题的时候,都可以优先考虑使用 aptitude 来解决。网上有很多 aptitude 的使用教程。关于 aptitude 的详细内容可以查阅官方的 aptitude 使用手册

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,444评论 4 365
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,867评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,157评论 0 248
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,312评论 0 214
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,673评论 3 289
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,802评论 1 223
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,010评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,743评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,470评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,696评论 2 250
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,187评论 1 262
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,538评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,188评论 3 240
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,127评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,902评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,889评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,741评论 2 274