Ubuntu软件包管理之apt与apt-get的区别

目录

  • apt和apt-get发展史
  • apt和apt-get命令对比
  • 常用命令举例
    • 更新存储库索引
    • 升级已安装的包
    • 列出所有可用安装包
    • 关键字搜索安装包
    • 安装软件
    • 卸载软件
    • 查看安装包信息
    • 清理没用的依赖包
    • 清理下载的缓存包
    • 清理残余的配置文件
    • 查看安装包的依赖
  • 参考

apt和apt-get发展史

Debian 使用一套名为 Advanced Packaging Tool(APT)的工具来管理软件包(不要跟 apt 命令混淆,不是同一个东西),在基于 Debian 的 Linux 发行版中(如Ubuntu),有各种工具可以与 APT 进行交互,以方便用户安装、删除和管理的软件包,apt-get和apt-cache便是其中广受欢迎的两个主要工具。

apt-get和apt-cache命令的用法很底层,常用的软件包管理命令散落在不同命令中,一会儿得用apt-get,一会儿得用apt-cache,无法统一接口,很不友好。

为此,Ubuntu16.04引入了apt命令集,它在 apt-get 和 apt-cache 的基础之上进行优化,更加结构化和先进,apt忽略了获取和缓存的需求。使用apt,你不必在apt-get和apt-cache命令间来回切换。有了apt,你就一次性获得所有必需的工具。不会迷失在众多的命令选项中。Apt的主要目标是提供一种用户愉悦的方式来高效处理软件包。它的精简命令选项更容易使用,且更容易记住。
Ubuntu软件包管理之apt与apt-get的区别_第1张图片
那apt-get是否会被弃用,未来不知道,但许多其他的Liunx发行版本也在跟随Ubuntu的步伐,开始鼓励用户使用apt代替apt-get。除非你打算做一些指定的操作,而这些操作使用了apt-get的更多特性。否则,都用apt吧。

总结apt和apt-get区别便是:

  1. apt是新出的工具,用于取代apt-get和apt-cache,目的是更友好、易用的包管理工具;
  2. apt-get没有被废弃也没有过时,依然可以放心使用,但普通用户建议转向apt。

apt和apt-get命令对比

虽然apt的确提供一些apt-get类似的功能选项,但是它不与apt-get向下兼容。这意味着,如果你仅用apt代替apt-get命令中的apt-get,将不会一直有用。

我们来看看apt命令取代了apt-get和apt-cache的哪些命令选项

apt 命令 取代的命令 命令的功能
apt update apt-get update 更新存储库索引
apt upgrade apt-get upgrade 升级所有可升级的软件包
apt install apt-get install 安装软件包
apt remove apt-get remove 移除软件包但保留配置文件
apt purge apt-get purge 移除软件包也删除配置文件
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、apt-get和apt-cache帮助说明即可:

$ apt  -h
apt 2.0.9 (amd64)
用法: apt [选项] 命令

命令行软件包管理器 apt 提供软件包搜索,管理和信息查询等功能。
它提供的功能与其他 APT 工具相同(像 apt-get 和 apt-cache),
但是默认情况下被设置得更适合交互。

常用命令:
  list - 根据名称列出软件包
  search - 搜索软件包描述
  show - 显示软件包细节
  install - 安装软件包
  reinstall - 重新安装软件包
  remove - 移除软件包
  autoremove - 卸载所有自动安装且不再使用的软件包
  update - 更新可用软件包列表
  upgrade - 通过 安装/升级 软件来更新系统
  full-upgrade - 通过 卸载/安装/升级 来更新系统
  edit-sources - 编辑软件源信息文件
  satisfy – 使系统满足依赖关系字符串
$ apt-get -h
apt 2.0.9 (amd64)
用法: apt-get [选项] 命令
    apt-get [选项] install|remove 软件包1 [软件包2 ...]
    apt-get [选项] source 软件包1 [软件包2 ...]

apt-get 可以从认证软件源下载软件包及相关信息,以便安装和升级软件包,
或者用于移除软件包。在这些过程中,软件包依赖会被妥善处理。

常用命令:
  update - 取回更新的软件包列表信息
  upgrade - 进行一次升级
  install - 安装新的软件包(注:软件包名称应当类似 libc6 而非 libc6.deb)
  reinstall - 重新安装软件包(注:软件包名称应当类似 libc6 而非 libc6.deb)
  remove - 卸载软件包
  purge - 卸载并清除软件包的配置
  autoremove - 卸载所有自动安装且不再使用的软件包
  dist-upgrade - 发行版升级,见 apt-get(8)
  dselect-upgrade - 根据 dselect 的选择来进行升级
  build-dep - 为源码包配置所需的编译依赖关系
  satisfy - 使系统满足依赖关系字符串
  clean - 删除所有已下载的包文件
  autoclean - 删除已下载的旧包文件
  check - 核对以确认系统的依赖关系的完整性
  source - 下载源码包文件
  download - 下载指定的二进制包到当前目录
  changelog - 下载指定软件包,并显示其变更日志(changelog)
$ apt-cache -h
apt 2.0.9 (amd64)
用法: apt-cache [选项] 命令
       apt-cache [选项] show 软件包1 [软件包2 ...]

apt-cache 可以查询和显示已安装和可安装软件包的可用信息。
它专门工作在本地的数据缓存上,而这些缓存可以通过比如
apt-get'update' 命令来更新。如果距离上一次更新的时间太久,
那么它显示的信息可能就会过时。不过作为交换,apt-cache 不依赖
当前软件源的可用性(比如:离线状态)。

常用命令:
  showsrc - 显示源文件的各项记录
  search - 根据正则表达式搜索软件包列表
  depends - 显示该软件包的依赖关系信息
  rdepends - 显示所有依赖于该软件包的软件包名字
  show - 以便于阅读的格式介绍该软件包
  pkgnames - 列出所有软件包的名字
  policy - 显示软件包的安装设置状态

常用命令举例

以下举例,尽量使用apt命令。

更新存储库索引

使用命令apt update可以重新从源仓库中同步文件索引,有更新源列表时,就要执行该命令。

$ sudo apt update

升级已安装的包

升级所有已安装的包:

apt-get upgrade

只升级特定安装包:

apt-get upgrade <package_name>

Ubuntu软件包管理之apt与apt-get的区别_第2张图片

列出所有可用安装包

你要安装的包是否在可安装包列表内,可以使用该命令查看。该命令会显示出所有可用的安装包,同时显示出各个包的安装状态,包括已安装,可升级、配置文件残留等信息。

apt list

关键字搜索安装包

在apt install之前,如果你不知道确切的包名,可以使用apt search进行搜索,支持模糊搜索,关键字越详细,搜索结果越精准,关键字可以是包名的部分内容,也可以是包描述的部分内容。

apt search <search term>

安装软件

安装软件:

apt install <package_name>

安装特定版本软件:

apt install <package_name>=<version_number>

同时安装多个软件:

apt install <package_1> <package_2> <package_3>

Ubuntu软件包管理之apt与apt-get的区别_第3张图片

卸载软件

有两种方法卸载软件:

apt remove <package_name>
apt purge <package_name>

Ubuntu软件包管理之apt与apt-get的区别_第4张图片

查看安装包信息

比如查看bash安装包的基本信息

$ apt show bash
Package: bash
Version: 5.0-6ubuntu1.2
Priority: required
Essential: yes
Section: shells
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Matthias Klose <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1,700 kB
Pre-Depends: libc6 (>= 2.15), libtinfo6 (>= 6)
Depends: base-files (>= 2.1.12), debianutils (>= 2.15)
Recommends: bash-completion (>= 20060301-0)
Suggests: bash-doc
Conflicts: bash-completion (<< 20060301-0)
Replaces: bash-completion (<< 20060301-0), bash-doc (<= 2.05-1)
Homepage: http://tiswww.case.edu/php/chet/bash/bashtop.html

清理没用的依赖包

在 Ubuntu 系统中安装软件时,该软件的依赖包通常也会自动安装上。在我们删除该软件后,其依赖包可能需要我们手动删除,可使用以下命令:

apt autoremove

清理下载的缓存包

Ubuntu通过apt-get install安装软件时,其下载的包都缓存在 /var/cache/apt/archives/ 目录中。在安装完成后并不会立即从目录中删除,如果你删除了一个软件包,然后重新安装,你的系统会在缓存中查找这个软件包,并从这里获取它,而不是重新下载。

包管理的临时目录:
下载过程中存放:/var/cache/apt/archives/partial
下载完成后存放:/var/cache/apt/archives

如果要清理掉这些已下载的缓存包,那么可以执行命令:

sudo apt-get clean
sudo apt-get autoclean

apt-get clean删除/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/目录下所有包(锁定的软件包除外) 。

apt-get autoclean仅删除/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/目录下旧版本(比当前可用的版本旧)的软件包和无用的软件包(锁定的软件包除外) 。

Ubuntu软件包管理之apt与apt-get的区别_第5张图片

清理残余的配置文件

如果使用apt remove卸载软件,软件的配置文件会被保留,这时候系统中就残留有配置文件。可以使用以下命令查看残留配置文件:

$ apt list | grep 残留

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

appmenu-qt5/now 0.3.0+16.04.20170216-0ubuntu1 amd64 [配置文件残留]
apt-xapian-index/focal,focal 0.51ubuntu1 all [配置文件残留]
docutils-common/focal,focal,now 0.16+dfsg-2 all [配置文件残留]
eclipse-platform/now 3.8.1-8 amd64 [配置文件残留]
fcitx-ui-qimpanel/focal 2.1.3-2build1 amd64 [配置文件残留]

查看安装包的依赖

比如查看bash安装包依赖:

$ apt-cache depends bash
bash
  预依赖: libc6
  预依赖: libtinfo6
  依赖: base-files
    base-files:i386
  依赖: debianutils
    debianutils:i386
  冲突: bash-completion
  推荐: bash-completion
  建议: bash-doc
  替换: bash-completion
  替换: bash-doc

参考

https://blog.csdn.net/slampai/article/details/128072043
https://itsfoss.com/apt-vs-apt-get-difference/
https://itsfoss.com/apt-get-linux-guide/
https://linux.cn/article-4933-1.html

你可能感兴趣的:(Linux,ubuntu,debian,linux)