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://askubuntu.com/questions/401941/what-is-the-difference-between-security-updates-proposed-and-backports-in-etc
https://blog.csdn.net/u010053050/article/details/14046457
atp update 的更新逻辑
mancode@manos:~$ mancode@manos:~$ sudo apt update Get:1 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB] Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB] Get:3 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [109 kB] Get:4 http://archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB] Get:5 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages [1,395 kB] Get:6 http://archive.ubuntu.com/ubuntu jammy/main Translation-en [510 kB] Get:7 http://archive.ubuntu.com/ubuntu jammy/main amd64 c-n-f Metadata [30.3 kB] Get:8 http://archive.ubuntu.com/ubuntu jammy/restricted amd64 Packages [129 kB] Get:9 http://archive.ubuntu.com/ubuntu jammy/restricted Translation-en [18.6 kB] Get:10 http://archive.ubuntu.com/ubuntu jammy/restricted amd64 c-n-f Metadata [488 B] Get:11 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages [14.1 MB] Get:12 http://archive.ubuntu.com/ubuntu jammy/universe Translation-en [5,652 kB] Get:13 http://archive.ubuntu.com/ubuntu jammy/universe amd64 c-n-f Metadata [286 kB] Get:14 http://archive.ubuntu.com/ubuntu jammy/multiverse amd64 Packages [217 kB] Get:15 http://archive.ubuntu.com/ubuntu jammy/multiverse Translation-en [112 kB] Get:16 http://archive.ubuntu.com/ubuntu jammy/multiverse amd64 c-n-f Metadata [8,372 B] Get:17 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1,277 kB] Get:18 http://archive.ubuntu.com/ubuntu jammy-updates/main Translation-en [261 kB] Get:19 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 c-n-f Metadata [16.1 kB] Get:20 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [1,272 kB] Get:21 http://archive.ubuntu.com/ubuntu jammy-updates/restricted Translation-en [207 kB] Get:22 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 c-n-f Metadata [520 B] Get:23 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1,022 kB] Get:24 http://archive.ubuntu.com/ubuntu jammy-updates/universe Translation-en [227 kB] Get:25 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 c-n-f Metadata [22.1 kB] Get:26 http://archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [42.1 kB] Get:27 http://archive.ubuntu.com/ubuntu jammy-updates/multiverse Translation-en [10.1 kB] Get:28 http://archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 c-n-f Metadata [472 B] Get:29 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [41.7 kB] Get:30 http://archive.ubuntu.com/ubuntu jammy-backports/main Translation-en [10.5 kB] Get:31 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 c-n-f Metadata [388 B] Get:32 http://archive.ubuntu.com/ubuntu jammy-backports/restricted amd64 c-n-f Metadata [116 B] Get:33 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [24.3 kB] Get:34 http://archive.ubuntu.com/ubuntu jammy-backports/universe Translation-en [16.5 kB] Get:35 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 c-n-f Metadata [644 B] Get:36 http://archive.ubuntu.com/ubuntu jammy-backports/multiverse amd64 c-n-f Metadata [116 B] Get:37 http://archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages [1,062 kB] Get:38 http://archive.ubuntu.com/ubuntu jammy-security/main Translation-en [201 kB] Get:39 http://archive.ubuntu.com/ubuntu jammy-security/main amd64 c-n-f Metadata [11.4 kB] Get:40 http://archive.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [1,244 kB] Get:41 http://archive.ubuntu.com/ubuntu jammy-security/restricted Translation-en [203 kB] Get:42 http://archive.ubuntu.com/ubuntu jammy-security/restricted amd64 c-n-f Metadata [520 B] Get:43 http://archive.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [826 kB] Get:44 http://archive.ubuntu.com/ubuntu jammy-security/universe Translation-en [156 kB] Get:45 http://archive.ubuntu.com/ubuntu jammy-security/universe amd64 c-n-f Metadata [16.8 kB] Get:46 http://archive.ubuntu.com/ubuntu jammy-security/multiverse amd64 Packages [37.1 kB] Get:47 http://archive.ubuntu.com/ubuntu jammy-security/multiverse Translation-en [7,476 B] Get:48 http://archive.ubuntu.com/ubuntu jammy-security/multiverse amd64 c-n-f Metadata [260 B] Fetched 31.3 MB in 58s (541 kB/s) Reading package lists... Done Building dependency tree... Done Reading state information... Done 106 packages can be upgraded. Run 'apt list --upgradable' to see them. mancode@manos:~$