apoorv020 Asked: 2011-02-28 11:23:14 +0800 CST2011-02-28 11:23:14 +0800 CST 2011-02-28 11:23:14 +0800 CST Ubuntu 存储库的结构是什么? 772 Ubuntu 存储库中的文件是如何组织的?存储库中的重要文件是什么?当存储库变得不一致、损坏或正在同步时会发生什么? repository 2 个回答 Voted apoorv020 2011-02-28T21:07:58+08:002011-02-28T21:07:58+08:00 Joao回答了我问题的后半部分,所以我自己调查了前半部分。在根级别,有四个目录和一个文件。 root | -- dists | -- pool | -- indices | -- project | -- ls-lr.gz (同样在我的大学回购中,只有前两个条目在那里。所以最后三个似乎对回购的运作并不重要。) 该文件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是subversion的第一个字母。 该projects目录似乎包含一些文件,详细说明了镜像如何同步到原始存储库。 该indices目录包含许多文件,其中大部分是空的。非空文件似乎为包提供了一些额外的元数据。 Best Answer João Pinto 2011-02-28T15:26:11+08:002011-02-28T15:26:11+08:00 根据您的 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 它验证 Release.gpg 是否是 Release 文件的有效签名,以及 Packages.gz 内容是否与 Release 文件上的完整性校验和匹配。如果不匹配,则会报告存储库签名完整性失败。 请求包的包文件名由先前检索到的 Packages.gz 内容确定。已下载,其内容校验和必须与 Packages.gz 校验和内容匹配,否则将报告完整性失败。 您的最后一个问题不是关于镜像结构本身,而是关于镜像同步,这取决于镜像过程。可以使用临时位置进行同步,而不会在同步期间破坏存档完整性。我不确定是否所有的 Ubuntu 镜像都这样做。
Joao回答了我问题的后半部分,所以我自己调查了前半部分。在根级别,有四个目录和一个文件。
(同样在我的大学回购中,只有前两个条目在那里。所以最后三个似乎对回购的运作并不重要。)
该文件
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是subversion的第一个字母。该
projects
目录似乎包含一些文件,详细说明了镜像如何同步到原始存储库。该
indices
目录包含许多文件,其中大部分是空的。非空文件似乎为包提供了一些额外的元数据。根据您的 apt 源代码中的 deb 行,apt 将获取:
它验证 Release.gpg 是否是 Release 文件的有效签名,以及 Packages.gz 内容是否与 Release 文件上的完整性校验和匹配。如果不匹配,则会报告存储库签名完整性失败。
请求包的包文件名由先前检索到的 Packages.gz 内容确定。已下载,其内容校验和必须与 Packages.gz 校验和内容匹配,否则将报告完整性失败。
您的最后一个问题不是关于镜像结构本身,而是关于镜像同步,这取决于镜像过程。可以使用临时位置进行同步,而不会在同步期间破坏存档完整性。我不确定是否所有的 Ubuntu 镜像都这样做。