升级一时爽,一直升级一直爽

1. 问题原因

  • 安装的软件依赖于某一软件的旧版本,但是系统中已经安装了所依赖软件的新版本
  • 要装A,依赖于B,但是已经安装的C也依赖于B,且AC依赖的B版本不一致

2. 更新软件源

> apt-get update
> apt-get -f install # 即 --fix-broken,会针对当前不满足的依赖关系,下载正确版本的依赖库
> apt-get install [YOUR_PACKAGE_NAME]

3. 使用 aptitude

> apt show aptitude # 或 apt-cache show aptitude

Package: aptitude
Version: 0.8.10-6ubuntu1
Priority: optional
Section: admin
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Aptitude Development Team <aptitude-devel@lists.alioth.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 4,414 kB
Depends: aptitude-common (= 0.8.10-6ubuntu1), libapt-pkg5.0 (>= 1.1), libboost-filesystem1.65.1, libboost-iostreams1.65.1, libboost-system1.65.1, libc6 (>= 2.14), libcwidget3v5, libgcc1 (>= 1:3.0), libncursesw5 (>= 6), libsigc++-2.0-0v5 (>= 2.8.0), libsqlite3-0 (>= 3.6.5), libstdc++6 (>= 5.2), libtinfo5 (>= 6), libxapian30
Recommends: libparse-debianchangelog-perl, sensible-utils
Suggests: aptitude-doc-en | aptitude-doc, apt-xapian-index, debtags, tasksel
Homepage: https://aptitude.alioth.debian.org/
Supported: 5y
Download-Size: 1,269 kB
APT-Manual-Installed: yes
APT-Sources: http://cn.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
Description: 基于终端的软件包管理器
 aptitude 是一个功能丰富的包管理器,包括:使用类似 mutt 的语法灵活地 检索软件包,类似 dselect
 的持续用户操作,获取并显示大多数软件包的 Debian changelog 的功能,一个类似 apt-get 的命令行模式。
 .
 aptitude 还是个 Y2K 兼容,轻便,自清洁以及友好的程序

> apt install aptitude

运行后,不接受未安装方案,选择降级方案

> aptitude install [YOUR_PACKAGE_NAME]

4. apt 与 apt-get 之间的区别

apt命令的引入就是为了解决命令过于分散的问题,它包括了apt-get命令出现以来使用最广泛的功能选项,以及apt-cacheapt-config命令中很少用到的功能。

简单来说就是:apt = apt-getapt-cacheapt-config最常用命令选项的集合

> apt list --insalled
> apt list --upgradable
> apt search htop
> apt show htop

可以使用apt替换部分apt-get命令

apt 命令 取代的命令 命令的功能
apt install apt-get install 安装软件包
apt remove apt-get remove 移除软件包
apt purge apt-get purge 移除软件包及配置文件
apt update apt-get update 刷新数据库索引
apt upgrade apt-get upgrade 升级所有可升级的软件包
apt autoremove apt-get autoremove 自动删除不需要的包
apt full-upgrade apt-get dist-upgrade 升级软件包时自动处理依赖关系
apt search apt-cache search 搜索软件包
apt show apt-cache show 显示软件包详情

另外还有一些apt自己的命令

新的 apt 命令 命令的功能
apt list 根据条件列出软件包(已安装、可升级等)
apt edit-sources 编辑源列表
  • apt list --installed
  • apt list --upgradeable
  • apt list --all-versions

参考文章

  1. Ubuntu 安装软件时:有未能满足的依赖关系 | CSDN
  2. Ubuntu 16.04 在使用 apt-get install命令时出现:下列软件包有未满足的依赖关系错误 | CSDN
  3. Aptitude | Debian Wiki
  4. Linux 中 apt 与 apt-get 命令的区别与解释 | 系统极客
  5. Ubuntu (Debian) 的 aptitude 与 apt-get 的区别和联系 | 博客园
  6. dpkg、apt-get、aptitude 三种方式的区别及命令格式 | CSDN
  7. Fedora 及 Ubuntu 深度比较 | Linux 公社