01-apt-get 简介

1、 简介

apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的一个软件包管理工具,apt-get是其中一个命令,用于从指定的源地址下载软件包。

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令。

1.1、配置文件

早期 apt-get 默认的配置文件为 /etc/apt/apt.conf,但是当前的 Ubuntu 系统中默认没有这个文件。

如果 /etc/apt/apt.conf 文件存在,apt-get 仍然会读取它。但现在的设计思路是把配置文件分隔后放置在 /etc/apt/apt.conf.d 目录下,这样更容易管理。

2、命令

apt相关的命令有两个,一个是apt、一个是apt-get。

  • 简单认为:apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合
  • 虽然 apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令。也就是说,可以用 apt 替换部分 apt-get 系列命令,但不是全部。

本次主要讲解apt-get命令,可通过apt-get -h或者man apt-get查看操作手册。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[lepeng@centos lp]# apt-get -h

Usage:apt-get [选项] 命令
apt-get [选项] install|remove 软件包1 [软件包2 ...]
apt-get [选项] source 软件包1 [软件包2 ...]

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

Most used commands常用命令:
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)

选项:
-h 帮助文件。
-q 输出到日志 - 无进展指示
-qq 不输出信息,错误除外
-d 仅下载 - 不安装或解压归档文件
-s 不实际安装。模拟执行命令
-y 在需要确认的场景中回应 yes
-f 尝试修正系统依赖损坏处
-m 如果归档无法定位,尝试继续
-u 同时显示更新软件包的列表
-b 获取源码包后编译
-V 显示详细的版本号
-c=? 阅读此配置文件
-o=? 设置自定的配置选项,如 -o dir::cache=/tmp

2.1、查询包

通过查询功能,我们可以知道自己安装了哪些包,想要安装的包是否在镜像源里存在,以及是否有合适的版本。

1
2
3
4
5
6
7
8
9
10
11
apt list --installed            # 查已安装的包
apt-cache search packagename # 查询指定的包
apt-cache show packagename # 显示包的相关信息,如说明、大小、版本等
apt-cache depends packagename # 了解使用该包依赖哪些包
apt-cache rdepends packagename # 查看该包被哪些包依赖
apt-get check # 查看损坏的依赖

# 查看包位于哪些镜像源及对应版本
apt-cache madison 包名
apt-cache policy 包名
apt-show-versions -a 包名

2.2、apt-get install 安装包

1
apt-get -y install 包名 [{=pkg_version_number | /target_release}] --force-yes
  1. 常用选项

    • -f,-fix-breesk : 修复或者尝试纠正损坏的依赖项。
    • -m,-ignore-missing, -fix-missing: 忽略丢失的包。
    • -y,-yes,-assume-yes:自动选择是以提示。
    • -force-yes: 在安装/升级或者删除包时强制yes。这是一个危险操作,使用后如果apt做一些潜在危害系统的操作也不会有提示。只有特殊情况下才应该使用。该选项有可能破坏掉你的系统。
    • -reinstall: 重新安装已安装的包。
  2. 指定版本

    • 通过指定具体版本和对应的镜像源安装想要的版本,样例如下
    • apt-get install gnupg/buster
    • apt-get install monkeysphere=0.43-3

2.3、apt-get remove 删除包

1
2
3
apt-get remove packagename              # 删除包
apt-get remove packagename --purge # 删除包,包括删除配置文件等
apt-get autoremove packagename --purge # 删除包及其依赖的软件包+配置文件等(只对6.10有效,推荐使用)

2.4、apt-get clean 清理无用包

clean 命令清除在本地库中检索到的包。它从 /var/cache/apt/archives//var/cache/apt/archives/partial/ 目录删除除锁文件之外的所有内容

autoclean 与 clean 命令类似,autoclean 命令清除检索到的包文件的本地存储库。不同之处在于,它只删除不能再下载的软件包文件,而且这些文件在很大程度上是无用的。这允许长时间维护缓存,而不至于大小失控。

1
2
3
apt-get clean       # 清理无用的包 
apt-get autoclean # 清理无用的包
apt-get check #检查是否有损坏的依赖

2.5、apt-get update 更新源文件

update 命令用于重新同步包索引文件,/etc/apt/sources.list 文件中的配置指定了包索引文件的来源。更新了包索引文件后就可以得到可用的包的更新信息和新的包信息。这样我们本地就有了这样的信息:有哪些软件的哪些版本可以从什么地方(源)安装。

update 命令应该总是在安装或升级包之前执行。,

1
apt-get update

2.6、 apt-get upgrade 升级所有包

upgrade 命令用于从 /etc/apt/sources.list 中列出的源安装系统上当前安装的所有包的最新版本。在任何情况下,当前安装的软件包都不会被删除,尚未安装的软件包也不会被检索和安装。如果当前安装的包的新版本不能在不更改另一个包的安装状态的情况下升级,则将保留当前版本。必须提前执行 update 命令以便 apt-get 知道已安装的包是否有新版本可用。

注意 update 与 upgrade 的区别:update 是更新软件列表,upgrade 是更新软件。

1
2
3
apt-get upgrade                       # 不太建议使用
apt-get install 包名 --only-upgrade # 仅升级指定包。建议使用
apt-get install 包名 --reinstall # 重新安装包。较少使用

3、apt和apt-get的区别

apt是apt-get的更高级别别名,它使用 apt-get 和 dpkg 来管理软件包,但是更为简洁明了。相比于apt-get命令而言,apt命令在一些方面更为便捷,例如:

  • APT可以更好的处理软件包的依赖关系,避免意外的错误跑出来,同时APT会自动处理必要的依赖项。
  • APT支持并发的下载和安装,让软件包的安装更为快速。
  • APT不仅可以安装或卸载所需软件包,还可以递归地去获取所有的依赖项或使用新的软件包来替换旧的软件包。

但是,apt和apt-get的底层命令是一样的,所以apt并不能替代apt-get。


01-apt-get 简介
https://flepeng.github.io/002-Linux-13-包管理-02-apt-get-01-apt-get-简介/
作者
Lepeng
发布于
2021年7月5日
许可协议