在 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 使用手册。

Deb包安装如何解决依赖问题相关推荐

  1. Debian10中使用deb包安装WineHQ(鬼畜依赖解决)

    原作者:RedbeanW 发布于 2020-08-03 准备工作 本文所有操作需要在root账号下 如果你先前编译安装了winehq,强烈建议参考文末彻底卸载后再进行本文操作. 开启i386支持 由于 ...

  2. Linux软件安装的几种方法 (二)—— deb包安装

    [摘要] Linux系统上安装软件的方法,文末放一个福利,可搜索所有linux平台软件包的网址:https://pkgs.org/,非常.非常.非常强大!笔者发现这个网址的时候,激动到不能自已,妈妈再 ...

  3. ubuntu系统deb包安装mysql

    #ubuntu系统deb包安装mysql 摘要:ubuntu系统通过dpkg命令安装deb软件包,安装mysql数据库 一.下载mysql安装包 ubuntu18.04下载链接:https://dev ...

  4. linux安装deb程序,Linux软件安装的几种方法 (二)—— deb包安装

    Linux系统上安装软件的方法和在windows上安装软件是有很大不同的,有时候Linux上安装软件碰到各种依赖不满足,是极为头疼的事情,下面盘点一下Linux上安装软件的几种方法,笔者基本上用的是u ...

  5. 使用gdebi去解决安装deb包的时候软件依赖问题

    概述 我以前都是这样去安装一个deb包的,首先直接安装这个包 sudo dpkg -i 之后可能会有依赖问题,所以 sudo apt install -f 这样虽然可以解决一些问题但是还不够方便 使用 ...

  6. Ubuntu如何安装deb包 使用 dpkg解决依赖性问题

    Ubuntu安装以太坊wallet时,出现依赖问题 sudo dpkg -i xxx.deb 解决方法: 在使用 dpkg -i 安装deb包后,会出现依赖关系而不能正常安装软件,这个时候先更新下源然 ...

  7. 0056-【R-bioconductor】-KEGG通路分析R包安装失败解决-pathview

    1. 安装 > source("http://bioconductor.org/biocLite.R") Bioconductor version 3.6 (BiocInst ...

  8. 2apt-get命令,deb包安装,源码安装

    1 安装卸载软件 更新源服务器列表 sudovi /etc/apt/sources.list 更新完服务器列表后需要更新下源 sudoapt-get update 更新源 sudoapt-get in ...

  9. Ubuntu .deb包安装方法

    使用apt-get方法安装的软件,所有下载的deb包都缓存到了/var/cache/apt/archives目录下了,所以可以把常用的deb包备份出来,甚至做成ISO工具包.刻盘,以后安装Ubuntu ...

最新文章

  1. 怎么看电脑的hdmi是输出还是输入_HDMI线连接电视电脑常见问题及解决办法
  2. Linux进程状态解析之R、S、D、T、Z、X
  3. linux nmcli源码,Linux上利用nmcli命令创建网络组(示例代码)
  4. win10系统Mysql5.7服务启动报:1053错误:服务没有及时响应启动或控制请求
  5. Max Points on a Line
  6. angularJs跨域
  7. Bash 使用技巧大补贴
  8. 公式中*和· 号的含义区分(GRU公式)
  9. C++_实现一个简单的智能指针shared_ptr
  10. 计算机共享网络授权,怎么设置网络共享与网络访问权限?
  11. 厦门大学电子科学系夏令营
  12. 教师基本功训练计算机,教师教学基本功培训方案
  13. 唯物史观在高中历史教学中的具体运用
  14. wps删除分节符导致前面格式变乱的解决方案
  15. appstore上传截图的各种尺寸
  16. MBA-day23 至多至少问题-练习题
  17. 哈工大计算机学院统一复试划线,哈工大计算机专业,复试比例101%,擦线党没戏了...
  18. 区块链技术应用大盘点(涵盖金融、医疗、政务等领域)
  19. 解决sql update 1292 - Truncated incorrect DOUBLE value:
  20. 廖雪峰的GIT教程-读书笔记

热门文章

  1. opencv 去除噪点 java_c++ - OpenCV-去除图像中的噪点 - 堆栈内存溢出
  2. springboot:接手老项目,领导让更新数据库说明文档,如何3分钟完成任务
  3. 面面具到!android重力传感器
  4. wificond 启动hostapd,wpa_supplicant以及扫描
  5. js获取文本高度和屏幕高度
  6. Premiere优雅炫酷的空间动态线条PR标题模板MOGRT
  7. 系统集成---招标投标法+政府采购法
  8. 地图常用工具-一个好用的地图工具网址
  9. mybatis中@Results,@ResultMap注解使用
  10. 使用idea连接mysql数据库