后端学习系列——Linux工具链 apt

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为例。

  1. 安装任何软件之前,我们最好都更新一下索引apt-get update
  2. 由于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
  3. 添加GPG公钥

    1
    $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
  4. 查看公钥是否添加成功

    1
    $ apt-key fingerprint 0EBFCD88
  5. 添加仓库

    1
    2
    3
    4
    $ add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/debian \
    $(lsb_release -cs) \
    stable"
  6. 新的仓库已经被添加,接下来再次更新索引apt-get update

  7. 搜索docker相关的软件apt-cache search docker-ce
  8. 安装dockerapt-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文件的每一行就是一个软件源。它的格式分成四个部分,摘自阮一峰的网络日志

  1. deb或者deb-src(表示deb包或者源代码)。
  2. debian镜像的地址,标准的结构下这个地址目录下有dists、pool等子目录。
  3. 第三部分为版本目录,即http://mirrors.163.com/debian/dists/下的子目录,我们要选择想要使用的版本,比如> 我们要用testing,则此部分为testing。注意Unstable和Sid是相同的,目前来说,Testing和Wheezy是相同的, Stable和Squeeze是相同的。
  4. 第四部分为第三部分目录下的子文件夹,通常是main、contrib、non-free三个文件夹(ubuntu的命名与此不同),分别代表自由软件,半自由软件和非自由软件。通常我们将这三个都写上,以空格分开。
Buy Me A Coffee / 捐一杯咖啡的钱
分享这篇文章~
0%
//