Table of Contents

APT 包管理器

apt一般都需要管理员权限,如果你不是root的话,下面的apt命令记得加上sudo,文档里省略了


查找 & 安装

apt-cache search <package name> # 搜索一个包

apt-get install <package name>=<version> # 安装某一个特定的版本
# 安装的时候apt会自动处理依赖关系,安装依赖包

# 查看安装的版本、可用的版本
apt-cache policy <package name>
# AI:
# 检查指定包的版本信息以及该包可以从哪些软件源(repository)获取的
# 它提供了该包的安装状态、可用版本以及每个版本的优先级信息(Pin-Priority)
# 以下是输出内容解释
# Installed: 表示当前系统上安装的版本,如果未安装该包,会显示 Installed: (none)
# Candidate: 表示如果你用 apt install <package> 安装或升级,会安装哪个版本
# Version table: 列出所有可用版本及其来源和优先级

管理

apt list --installed # 列出已经安装的包

apt list --installed | grep <package_name> # 搜索已经安装的某些特定包

apt show <package_name> # 可以查看一个包的详细信息,没有安装的包也可以查看

卸载 & 清理

# 卸载指定的软件包,但保留配置文件
apt remove <package_name>

# 彻底卸载软件包,包括配置文件
apt purge <package_name>

# AI
# 使用以上的 remove 也好, purge 也好
# 默认情况下,当你删除 A 时,不会自动删除 A 的依赖包 B,即使 B 是因为安装 A 而自动安装的
# 这是 APT 的默认行为,目的是防止误删可能仍然需要的依赖包

# 自动清理未使用的依赖包(下面「依赖关系」的部分有详细解释)
apt autoremove

# AI
# APT 缓存中可能有下载的 .deb 包文件,可以通过以下命令清理缓存,释放空间
# 这两个命令的目标是清理 APT 缓存中的包文件,并不会影响已经安装的软件包,因此是非常安全的
apt autoclean # 清理所有未使用的缓存包
apt clean # 清理所有缓存包

依赖关系

apt show apache2 # 包的详细信息中包括依赖关系

apt-cache depends apache2 # 输出一个包的依赖

# 首先安装debtree
apt install debtree
# 生成依赖关系图 非常好用
debtree <package_name> | dot -Tpng -o output.png

# 「依赖关系」和「卸载软件」
# 我安装了A,A依赖与B,于是B也被安装了;于此同时,A被标记为「手动安装」,B被标记为「自动安装」
# 此时执行 autoremove 没有包会被删除,因为「A是手动安装」,「B被A依赖」
# 现在删除A,删除的时候默认B不会被删除(如果没有指定参数的话)
# 之后执行 autoremove B就会被删除,因为B是「自动安装」并且「不被任何包依赖」

# 查看包是「自动」还是「手动」安装的
apt-mark showauto | grep <package_name> # 在自动安装列表中搜索
apt-mark showmanual | grep <package_name> # 在手动安装列表中搜索

apt-mark manual <package_name> # 将一个包标记为「手动安装」(避免被自动删除)
apt-mark auto <package_name> # 标记为「自动安装」