这里主要对Debian源的配置做个简单的说明,参考连接:https://wiki.debian.org/DebianRepository/Format

Debian package archive主要用于自动的存储和分发软件包。

几乎所有的包管理者都是libapt用于从外部介质和互联网获取安装包。

sources.list文件指定了包安装源的格式:

deb uri distribution [component1] [component2] [...]

例如

deb https://deb.debian.org/debian stable main contrib non-free

这里的deb指定了这个源是二进制安装包,deb-src是源码包。

一个archive可以有二进制安装包,也可以有源码包,当然也可以两者均有。

uri,如这里的https://deb.debian.org/debian指定了这个archive的根root。一遍Debian archive在debian/目录,但是也可以是其他的目录如,pub/linux/debian

distribution部分(如示例中的stable)是$ARCHIVE_ROOT/dists下的子目录。它还会包含子目录,如stable/updates.distribution通常对应于Release文件中的Suite或Codename.

从apt仓库中下载包会从$ARCHIVE_ROOT/dists/$DISTRIBUTION目录下载一个InRelease或Release文件。

Release文件列出了此distribution的索引文件以及其hash值(列出的索引文件是相对于Release文件的位置)

要下载main component的索引,apt会扫描Release文件中对应main目录下文件的hash值,比如https://deb.debian.org/debian/dists/testing/main/binary-i386/Packages.gz应该在 https://deb.debian.org/debian/dists/testing/Release文件中为main/binary-i386/Packages.gz

二进制包索引在component目录下的binary-$arch子目录,source索引在source子目录。

package索引列出了source或二进制相对于archive root的位置。

为了避免文件重复,二级制或源码包通常会保存在archive root下的pool子目录。尽管Packages或Sources所有可以列出相对于archive root的任何路径,但还是建议将包放单archive root下除dists之外的子目录,而不是直接放到archive root下。

例如,清华大学开源软件镜像站kali的根为:https://mirrors.tuna.tsinghua.edu.cn/kali/

根下有如下目录

根下的dists目录下有如下子目录

kali-rolling下的目录如下

根下的pool目录下如如下子目录,pool目录下才是真正存放deb包的位置

所有为自己的kali配置清华的源如下:

$ cat /etc/apt/sources.list.d/tuna.list
deb https://mirrors.tuna.tsinghua.edu.cn/kali/ kali-rolling main contrib non-free

同理,清华源没有为kali提供docker-ce的安装源,但是kali是基于Debian的,清华源提供了Debian的docker-ce安装源,所以kali就可以使用为Debian配置的docker-ce的源了

$ cat /etc/apt/sources.list
# See https://www.kali.org/docs/general-use/kali-linux-sources-list-repositories/
# deb http://http.kali.org/kali kali-rolling main contrib non-free

# Additional line for source packages
# deb-src http://http.kali.org/kali kali-rolling main contrib non-free
#deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian kali-rolling stable
deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bullseye stable
# deb-src [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian kali-rolling stable

可以看到配置中没有体现任何关于kali的内容,安装清华源上的提示distribution部分是通过lsb_release -cs命令得到,但这里仍然不能使用kila-rolling作为distribution的值,一切都遵循镜像源网站上的目录结构,上面有啥就配置啥,截图如下

首先是docker-ce源的根

其次是dists子目录

可以上面的dists目录下并没有kali-rolling目录

由于安装的kali是基于bullseye的Debian的,所以查看一下bullseye目录

上图中stable,test,nightly对应于component部分,而pool下也会有这三个目录,是真正存放deb包的位置。