Ubuntu 安装软件包时遇到 unmet dependencies 的解决方法

在 Ubuntu 中安装软件包时,有时会遇到 “The following packages have unmet dependencies” 的错误,这通常是由于缺少软件包的依赖项和软件包冲突引起的。 解决方法逐个安装缺少的依赖包,直到提示删除冲突的软件包并继续安装。 示例例如在安装libvtk7.1-qt时提示如下图所示: 执行命令: sudo apt-get install libvtk7.1:amd64 注意:包名要完整,libvtk7.1:amd64不能少了:amd64 再次报错: 继续安装: sudo apt-get install libhdf5-openmpi-100:amd64 再次报错: 继续安装: sudo apt-get install libopenmpi2:amd64 又双叒叕报错: 继续安装: sudo apt-get install libhwloc-plugins:amd64 直到提示The following packages will be REMOVED: 直接回车删除冲突软件包并继续安装即可。 最后重新安装libvtk7.1: sudo apt-get install libvtk7.1-qt

2023年03月24日 · 1 分钟 · Cassius0924

apt autoremove 误删依赖包后自救指南

在使用 Ubuntu 系统的过程中,我们常常需要使用 apt 命令来安装、升级和删除软件包。其中,apt autoremove 命令可以自动删除无用的依赖包,以释放硬盘空间。然而,有时候我们会不小心误删了一些必要的依赖包,导致某些程序无法正常运行。 方法一:手动查看历史记录(推荐) 查看APT历史日志 sudo vim /var/log/apt/history.log 直接输入大写G,跳转到最后一行,找到相应时间的Remove内容。 若删除的包较少可以逐个apt install。若包较多可以使用正则表达式,具体操作如下。 复制所有被删除的包名 如果你的VIM开启了行号显示,请先临时禁用行号,目的是避免复制到多余的空格。 禁用行号,在命令模式下输入以下命令: :set nonumber 先复制你所有的删除的包,即Remove后的内容。 开启行号: :set number 输入:q退出VIM。 利用正则表达式处理包名 执行以下命令,用正则表达式删去版本信息和逗号: echo "粘贴在这" | sed 's/([^()]*)[,]*//g' 复制输出的内容。 执行安装命令 一口气全安装即可: sudo apt install "粘贴在这" 方法二:使用 aptitude 进行恢复aptitude 是一款强大的包管理器,它可以自动解决依赖关系,并且可以清晰地显示出哪些包被删除、哪些包被保留。因此,我们可以使用 aptitude 来恢复误删的依赖包。 首先,我们需要安装 aptitude: sudo apt-get install aptitude 然后,使用以下命令来查看被删除的软件包: sudo aptitude search '~c' 接下来,使用以下命令来恢复被删除的软件包: sudo aptitude install <package-name>

2023年03月24日 · 1 分钟 · Cassius0924