Ubuntu存储库的结构是什么?
Ubuntu存储库中的文件是如何组织的? 存储库中的重要文件是什么? 当存储库变得不一致,损坏或正在同步时会发生什么?
根据apt源码上的deb行,apt将获取:
- http://archive.ubuntu.com/ubuntu/dists/release/Release
- http://archive.ubuntu.com/ubuntu/dists/release/Release.gpg
- http://archive.ubuntu.com/ubuntu/dists/maverick/COMPONENT/binary-ARCH/Packages.gz
它validationRelease.gpg是否是Release文件的有效签名,以及Packages.gz内容是否与Release文件中存在的完整性校验和相匹配。 如果存在不匹配,则报告存储库签名完整性失败。
请求包的包文件名由先前检索的Packages.gz内容确定。 它已下载,其内容校验和必须与Packages.gz校验和内容匹配,否则将报告完整性故障。
你的上一个问题不是镜像结构本身,而是镜像同步,这取决于镜像过程。 可以使用临时位置进行同步,而不会在同步期间破坏存档完整性。 我不确定是否所有Ubuntu镜像都能做到这一点。
Joao回答了我问题的后半部分,所以我自己调查了上半部分。 在根级别,有四个目录和一个文件。
root | -- dists | -- pool | -- indices | -- project | -- ls-lr.gz
(同样在我的大学回购中,只有前两个条目在那里。所以最后3个似乎对回购的运作不重要。)
文件ls-lr.gz
包含在存储库根目录上运行的ls -lr
命令的输出。
dists
目录似乎包含大部分元数据,包括所有packages.gz文件(包含包列表)和Release.gpg / Release,用于签署包。 (感谢Joao的信息)
pool
目录包含实际的.deb文件。 该组织是/pool/[section]/[letter]/[group]/packagename.deb
。 因此python-subversion包的实际位置是/pool/main/s/subversion/python-subversion_1.3.2-3ubuntu2%7edapper1_amd64.deb
,因为subversion是python-subversion包的组,s是第一个字母颠覆。
projects
目录似乎包含一些文件,详细说明镜像如何同步到原始repo。
indices
目录包含许多文件,其中大多数是空的。 非空文件似乎为包提供了一些额外的元数据。