Advanced Packaging Tool(apt)是Linux下的一款安装包管理工具。apt是我们在Linux中最常见的工具之一,用于在仓库中快速地下载软件并自动安装,可以理解为一个命令行的app store。
在apt中,我们经常使用的命令可能包括了:
apt-get install xxx
安装某个软件包apt-get update
从仓库中更新软件包列表apt-cache search xxx
从已缓存到本地的软件包列表中寻找某个软件apt-get remove xxx
卸载某个软件
在使用apt之前,我们需要先配置好远端仓库。配置好仓库之后,执行apt-get update
可以从所有已配置的远端仓库中拉取所有的软件包列表,缓存到本地。软件包列表缓存到本地之后,我们可以用apt-cache search
在这个缓存中找某个软件。一旦确定要下载某个软件了,就可以执行apt-get install xx
来下载并安装软件。
添加新的仓库
这里以安装docker为例。
- 安装任何软件之前,我们最好都更新一下索引
apt-get update
由于docker所在的仓库是HTTPS协议的,所以我们要让apt支持HTTPS协议。并且,由于下面的流程需要从网上拿到docker官方的GPG密钥,所以还需要安装一个curl(模拟http发起请求的工具)
1
2
3
4
5
6$ apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common添加GPG公钥
1
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
查看公钥是否添加成功
1
$ apt-key fingerprint 0EBFCD88
添加仓库
1
2
3
4$ add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"新的仓库已经被添加,接下来再次更新索引
apt-get update
- 搜索docker相关的软件
apt-cache search docker-ce
- 安装docker
apt-get install docker-ce
这里有几个知识点,包括了
- 更新索引文件
- curl的使用
- GPG密钥于apt的作用
apt-key
的功能- 如何添加新的仓库
更新索引文件
执行apt-get update
的目的是为了更新索引文件,这个文件是/var/state/apt/lists
。
GPG密钥于apt的作用
主要还是看阮一峰的网络日志–GPG入门教程。
GPG全称GnuPG,是一个加密软件,支持非对称加密,密钥还会用RSA之类的对称加密算法加密起来。
后面要用docker的公钥来验证软件包是否ok。所以还会用apt-key
来添加docker的公钥。
添加新的仓库
仓库的添加在上面的例子中是使用了
1 | $ add-apt-repository "xxx" |
这条命令。
这个仓库最终会被添加到/etc/apt/source.list
文件中。
sources.list文件的每一行就是一个软件源。它的格式分成四个部分,摘自阮一峰的网络日志:
- deb或者deb-src(表示deb包或者源代码)。
- debian镜像的地址,标准的结构下这个地址目录下有dists、pool等子目录。
- 第三部分为版本目录,即http://mirrors.163.com/debian/dists/下的子目录,我们要选择想要使用的版本,比如> 我们要用testing,则此部分为testing。注意Unstable和Sid是相同的,目前来说,Testing和Wheezy是相同的, Stable和Squeeze是相同的。
- 第四部分为第三部分目录下的子文件夹,通常是main、contrib、non-free三个文件夹(ubuntu的命名与此不同),分别代表自由软件,半自由软件和非自由软件。通常我们将这三个都写上,以空格分开。