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的主要目标是提供一种用户愉悦的方式来高效处理软件包。它的精简命令选项更容易使用,且更容易记住。
那apt-get是否会被弃用,未来不知道,但许多其他的Liunx发行版本也在跟随Ubuntu的步伐,开始鼓励用户使用apt代替apt-get。除非你打算做一些指定的操作,而这些操作使用了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>
你要安装的包是否在可安装包列表内,可以使用该命令查看。该命令会显示出所有可用的安装包,同时显示出各个包的安装状态,包括已安装,可升级、配置文件残留等信息。
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>
有两种方法卸载软件:
apt remove <package_name>
apt purge <package_name>
比如查看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/目录下旧版本(比当前可用的版本旧)的软件包和无用的软件包(锁定的软件包除外) 。
如果使用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