发行#包管理#001#apt软件源服务端目录结构说明
apt软件源的服务器端文件,包含了apt的元数据、软件可执行程序包和软件源代码包,是Ubuntu官方、社区组织以及第三方公司共同维护的软件仓库。Ubuntu制定了软件的组织、存放和更新的策略,然后将此策略反映到服务端目录结构上。本文用于探索apt软件源服务端的数据存放逻辑。
在研究服务端目录之前,我们先直观看下相关文件和目录。
如下图所示,当前系统使用的源在/etc/apt/source.list文件中定义,我们使用
http://archive.ubuntu.com
源:

如下图所示,软件源根目录的文件夹,我们重点研究 dists 和 pool 文件夹:

软件源服务端目录结构
| 一级 | 二级 | 三级 | 四级 | 五级 | 六级 | 七级 | 备注 |
|---|---|---|---|---|---|---|---|
| dists | 目录 | ||||||
| indices | 目录 | ||||||
| ls-lR.gz | 文件 | ||||||
| pool | 目录 | ||||||
| project | 目录 |
| 一级 | 二级 | 三级 | 四级 | 五级 | 六级 | 七级 | 备注 |
|---|---|---|---|---|---|---|---|
| dists | release | ||||||
| dists | release-backports | ||||||
| dists | release-proposed | ||||||
| dists | release-security | ||||||
| dists | release-updates | ||||||
| dists | release | by-hash | 目录 | ||||
| dists | release | main | 目录 | ||||
| dists | release | multiverse | 目录 | ||||
| dists | release | restricted | 目录 | ||||
| dists | release | universe | 目录 | ||||
| dists | release | Contents-amd64.gz | 文件 | ||||
| dists | release | Contents-i386.gz | 文件 | ||||
| dists | release | InRelease | 文件 | ||||
| dists | release | Release | 文件 | ||||
| dists | release | Release.gpg | 文件 | ||||
| dists | release | main | binary-amd64 | 目录 | |||
| dists | release | main | binary-i386 | 目录 | |||
| dists | release | main | cnf | 目录 | |||
| dists | release | main | debian-installer | 目录 | |||
| dists | release | main | dep11 | 目录 | |||
| dists | release | main | dist-upgrader-all | 目录 | |||
| dists | release | main | installer-amd64 | 目录 | |||
| dists | release | main | installer-i386 | 目录 | |||
| dists | release | main | signed | 目录 | |||
| dists | release | main | source | 目录 | |||
| dists | release | main | uefi | 目录 | |||
| dists | release | main | binary-amd64 | Packages.gz | 文件 | ||
| dists | release | main | binary-amd64 | Packages.xz | 文件 | ||
| dists | release | main | binary-amd64 | Release | 文件 | ||
| dists | release | main | binary-amd64 | by-hash | 目录 | ||
| dists | release | main | binary-amd64 | by-hash | SHA256 | 目录 | |
| dists | release | main | binary-amd64 | by-hash | SHA256 | 37cb...gz | 文件 |
| dists | release | main | binary-amd64 | by-hash | SHA256 | 712e...gz | 文件 |
| dists | release | main | binary-amd64 | by-hash | SHA256 | d0eb... | 文件 |
| dists | release | main | cnf | Commands-amd64.xz | 文件 | ||
| dists | release | main | cnf | Commands-i386.xz | 文件 | ||
| dists | release | main | cnf | by-hash | 目录 | ||
| dists | release | main | cnf | by-hash | SHA256 | 目录 | |
| dists | release | main | cnf | by-hash | SHA256 | 6baa... | 文件 |
| dists | release | main | cnf | by-hash | SHA256 | 62fd... | 文件 |
| dists | release | main | cnf | by-hash | SHA256 | 70a5... | 文件 |
| dists | release | main | cnf | by-hash | SHA256 | 96e9... | 文件 |
| dists | release | main | cnf | by-hash | SHA256 | 7984... | 文件 |
| dists | release | main | cnf | by-hash | SHA256 | 4000... | 文件 |
| dists | release | main | cnf | by-hash | SHA256 | ced4... | 文件 |
| dists | release | main | debian-installer | binary-amd64 | 目录 | ||
| dists | release | main | debian-installer | binary-i386 | 目录 | ||
| dists | release | main | debian-installer | binary-amd64 | Packages.gz | 文件 | |
| dists | release | main | debian-installer | binary-amd64 | Packages.xz | 文件 | |
| dists | release | main | debian-installer | binary-amd64 | by-hash | 目录 | |
| dists | release | main | debian-installer | binary-amd64 | by-hash | SHA256 | 目录 |
| dists | release | main | debian-installer | binary-amd64 | by-hash | SHA256 | 13cf... |
| dists | release | main | debian-installer | binary-amd64 | by-hash | SHA256 | e7ab... |
| dists | release | main | dep11 | CID-Index-amd64.json.gz | 文件 | ||
| dists | release | main | dep11 | CID-Index-i386.json.gz | 文件 | ||
| dists | release | main | dep11 | Components-amd64.yml.gz | 文件 | ||
| dists | release | main | dep11 | Components-amd64.yml.xz | 文件 | ||
| dists | release | main | dep11 | Components-i386.yml.gz | 文件 | ||
| dists | release | main | dep11 | Components-i386.yml.xz | 文件 | ||
| dists | release | main | dep11 | icons-48x48.tar.gz | 文件 | ||
| dists | release | main | dep11 | icons-48x48@2.tar.gz | 文件 | ||
| dists | release | main | dep11 | icons-64x64.tar.gz | 文件 | ||
| dists | release | main | dep11 | icons-64x64@2.tar.gz | 文件 | ||
| dists | release | main | dep11 | icons-128x128.tar.gz | 文件 | ||
| dists | release | main | dep11 | icons-128x128@2.tar.gz | 文件 | ||
| dists | release | main | dep11 | by-hash | 目录 | ||
| dists | release | main | dep11 | by-hash | SHA256 | 目录 | |
| dists | release | main | dep11 | by-hash | SHA256 | 0541... | 文件 |
| dists | release | main | dep11 | by-hash | SHA256 | 08f9... | 文件 |
| dists | release | main | dep11 | by-hash | SHA256 | 09df... | 文件 |
| dists | release | main | dep11 | by-hash | SHA256 | 2ab7... | 文件 |
| dists | release | main | dist-upgrader-all | 22.04.8 | 目录 | ||
| dists | release | main | dist-upgrader-all | 22.04.9 | 目录 | ||
| dists | release | main | dist-upgrader-all | 22.04.10 | 目录 | ||
| dists | release | main | dist-upgrader-all | current | 目录 | ||
| dists | release | main | dist-upgrader-all | 22.04.8 | DevelReleaseAnnouncement | 文件 | |
| dists | release | main | dist-upgrader-all | 22.04.8 | DevelReleaseAnnouncement.html | 文件 | |
| dists | release | main | dist-upgrader-all | 22.04.8 | EOLReleaseAnnouncement | 文件 | |
| dists | release | main | dist-upgrader-all | 22.04.8 | EOLReleaseAnnouncement.html | 文件 | |
| dists | release | main | dist-upgrader-all | 22.04.8 | ReleaseAnnouncement | 文件 | |
| dists | release | main | dist-upgrader-all | 22.04.8 | ReleaseAnnouncement.html | 文件 | |
| dists | release | main | dist-upgrader-all | 22.04.8 | jammy.tar.gz | 文件 | |
| dists | release | main | dist-upgrader-all | 22.04.8 | jammy.tar.gz.gpg | 文件 | |
| dists | release | main | i18n | index | 文件 | ||
| dists | release | main | i18n | Translation-ast | 文件 | ||
| dists | release | main | i18n | Translation-ast.gz | 文件 | ||
| dists | release | main | i18n | Translation-ast.xz | 文件 | ||
| dists | release | main | i18n | Translation-zh_CN | 文件 | ||
| dists | release | main | i18n | Translation-zh_CN.gz | 文件 | ||
| dists | release | main | i18n | Translation-zh_CN.xz | 文件 | ||
| dists | release | main | i18n | Translation-zh_TW | 文件 | ||
| dists | release | main | i18n | Translation-zh_TW.gz | 文件 | ||
| dists | release | main | i18n | Translation-zh_TW.xz | 文件 | ||
| dists | release | main | i18n | by-hash | 目录 | ||
| dists | release | main | i18n | by-hash | SHA256 | 目录 | |
| dists | release | main | i18n | by-hash | SHA256 | 0c75... | 文件 |
| dists | release | main | i18n | by-hash | SHA256 | 0e14... | 文件 |
| dists | release | main | i18n | by-hash | SHA256 | 6c57... | 文件 |
| dists | release | main | i18n | by-hash | SHA256 | fff9... | 文件 |
| dists | release | main | installer-amd64 | 目录 | |||
| dists | release | main | installer-amd64 | 20101020ubuntu629 | 目录 | ||
| dists | release | main | installer-amd64 | current | 目录 | ||
| dists | release | main | source | Packages.gz | 文件 | ||
| dists | release | main | source | Packages.xz | 文件 | ||
| dists | release | main | source | by-hash | 目录 | ||
| dists | release | main | source | by-hash | SHA256 | 目录 | |
| dists | release | main | source | by-hash | SHA256 | 65c7...gz | 文件 |
| dists | release | main | source | by-hash | SHA256 | a7a5...gz | 文件 |
| dists | release | main | source | by-hash | SHA256 | 5708... | 文件 |
| dists | release | main | uefi | 目录 | |||
| dists | release | main | uefi | efilinux-amd64 | 目录 | ||
| dists | release | main | uefi | fwupd-amd64 | 目录 | ||
| dists | release | main | uefi | fwupd-i386 | 目录 | ||
| dists | release | main | uefi | fwupdate-amd64 | 目录 | ||
| dists | release | main | uefi | fwupdate-i386 | 目录 | ||
| dists | release | main | uefi | grub-efi-amd64-amd64 | 目录 | ||
| dists | release | main | uefi | grub2-amd64 | 目录 | ||
| dists | release | main | uefi | linux-amd64 | 目录 | ||
| dists | release | main | uefi | linux-azure-amd64 | 目录 | ||
| dists | release | main | uefi | linux-oem-amd64 | 目录 | ||
| dists | release-updates | by-hash | 目录 | ||||
| dists | release-updates | main | 目录 | ||||
| dists | release-updates | multiverse | 目录 | ||||
| dists | release-updates | restricted | 目录 | ||||
| dists | release-updates | universe | 目录 | ||||
| dists | release-updates | Contents-amd64.gz | 文件 | ||||
| dists | release-updates | Contents-i386.gz | 文件 | ||||
| dists | release-updates | InRelease | 文件 | ||||
| dists | release-updates | Release | 文件 | ||||
| dists | release-updates | Release.gpg | 文件 | ||||
| 一级 | 二级 | 三级 | 四级 | 五级 | 六级 | 七级 | 备注 |
|---|---|---|---|---|---|---|---|
| pool | main | {a..z} {liba..libz} | |||||
| pool | main | m | 举例:make-dfsg | ||||
| pool | main | m | make-dfsg | make_4.3-4.1build1_amd64.deb | 文件 | ||
| pool | main | m | make-dfsg | make-dfsg_4.3.orig.tar.gz | 文件 | ||
| pool | main | m | make-dfsg | make-dfsg_4.3-4.1build1.diff.gz | 文件 | ||
| pool | main | m | make-dfsg | make-dfsg_4.3-4.1build1.dsc | |||
| pool | restricted | {a..z} {liba..libz} {0..9} | 目录 | ||||
| pool | restricted | d | 举例:drdsl | ||||
| pool | restricted | d | drdsl | drdsl_1.2.0-1build1_amd64.deb | 文件 | ||
| pool | universe | {a..z} {liba..libz} {0..9} | |||||
| pool | universe | libp | 举例:libpqxx | ||||
| pool | universe | libp | libpqxx | libpqxx-dev_6.4.5-2build1_amd64.deb | 文件 | ||
| pool | universe | libp | libpqxx | libpqxx_6.4.5.orig.tar.gz | 文件 | ||
| pool | universe | libp | libpqxx | libpqxx_6.4.5-2build1.debian.tar.xz | 文件 | ||
| pool | universe | libp | libpqxx | libpqxx_6.4.5-2build1.dsc | |||
| pool | multiverse | {a..z} {liba..libz} {0..9} | |||||
| pool | multiverse | m | 举例:mame | ||||
| pool | multiverse | m | mame | mame_0.160-0ubuntu1_amd64.deb | 文件 | ||
软件类型 main/restricted/universe/multiverse
| 开源软件 | 非开源软件 | |
|---|---|---|
| 官方支持 | main | restricted |
| 社区支持 | universe | multiverse |
- main :官方支持的开源软件
- restricted :官方支持的非开源软件
- universe : 社区支持的开源软件
- multiverse :社区支持的非开源软件
仓库类型 release/release-security/release-updates/release-proposed/release-backports
Ubuntu每六个月发布一个版本,在发布后的六个月内所有软件是冻结的,默认库中的软件是保持不变,即使有新的版本也不更新。除了那些影响系统安全的重要补丁外,新功能和非安全补丁不提供更新。在此策略基础上,Ubuntu引入了secuity/updatges/proposed/backports等更新仓库,来提供不同的软件更新源。
- release Do not touch it, I like consistency, even with my unresolved bugs.
默认发行版本仓库。不去改变它,保持原始模样,即使存在bug。
- release-security (Important Security Updates.)
The security updates are holes in software that need to be patched for, obviously, security reasons.
当只有存在那些非常稀有、且必须修复的bug时,才做修改的版本,为了是保持的系统的安全性。仅修复漏洞,并且尽可能少改变软件包的行为。
- release-updates (Recommended Updates.)
The Recommended Updates are just software changes, but not updates that will affect the security of your system, just the apps installed and stuff like that. They tend to fix bugs and annoying problems.
修复严重但不影响系统安全运行的bug
- release-proposed (Pre-released Updates)
The Proposed updates are updates that have to be tested before they can be officially put into the Recommended updates repository. They may have issues that could break your system, and quite often do. You get Beta features, but often a broken system. I managed to nuke an installation by enabling this. Unless you like testing and fixing issues, I don’t recommended this one.
- release-backports (Unsupported Updates.)
Backported updates are pieces of software which come from a newer major release. Thus, they can contain new features, but may also break compatibility with their older version. However, they are compiled specifically for your version of Ubuntu. In effect it saves you the hassle of broken dependencies and major downloads.
最新版本,但不保证安全。
https://wiki.ubuntu.com/SecurityTeam/FAQ
https://help.ubuntu.com/community/UbuntuUpdates
https://help.ubuntu.com/community/UbuntuBackports
https://help.ubuntu.com/community/Repositories
https://help.ubuntu.com/community/Repositories/Ubuntu
https://askubuntu.com/questions/49691/what-is-the-proposed-repository
https://blog.csdn.net/u010053050/article/details/14046457
atp update 的更新逻辑
| |