0%
包管理分析#002#apt软件源服务端目录结构说明

apt软件源的服务器端文件,包含了apt的元数据、软件可执行程序包和软件源代码包,是Ubuntu官方、社区组织以及第三方公司共同维护的软件仓库。Ubuntu制定了软件的组织、存放和更新的策略,然后将此策略反映到服务端目录结构上。本文用于探索apt软件源服务端的数据存放逻辑。

在研究服务端目录之前,我们先直观看下相关文件和目录。

如下图所示,当前系统使用的源在/etc/apt/source.list文件中定义,我们使用 http://archive.ubuntu.com 源:

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

软件源服务端目录结构

一级二级三级四级五级六级七级备注
dists目录
indices目录
ls-lR.gz文件
pool目录
project目录

一级二级三级四级五级六级七级备注
distsrelease
distsrelease-backports
distsrelease-proposed
distsrelease-security
distsrelease-updates
 
distsreleaseby-hash目录
distsreleasemain目录
distsreleasemultiverse目录
distsreleaserestricted目录
distsreleaseuniverse目录
distsreleaseContents-amd64.gz文件
distsreleaseContents-i386.gz文件
distsreleaseInRelease文件
distsreleaseRelease文件
distsreleaseRelease.gpg文件
 
distsreleasemainbinary-amd64目录
distsreleasemainbinary-i386目录
distsreleasemaincnf目录
distsreleasemaindebian-installer目录
distsreleasemaindep11目录
distsreleasemaindist-upgrader-all目录
distsreleasemaininstaller-amd64目录
distsreleasemaininstaller-i386目录
distsreleasemainsigned目录
distsreleasemainsource目录
distsreleasemainuefi目录
 
distsreleasemainbinary-amd64Packages.gz文件
distsreleasemainbinary-amd64Packages.xz文件
distsreleasemainbinary-amd64Release文件
distsreleasemainbinary-amd64by-hash目录
 
distsreleasemainbinary-amd64by-hashSHA256目录
distsreleasemainbinary-amd64by-hashSHA25637cb...gz文件
distsreleasemainbinary-amd64by-hashSHA256712e...gz文件
distsreleasemainbinary-amd64by-hashSHA256d0eb...文件
 
distsreleasemaincnfCommands-amd64.xz文件
distsreleasemaincnfCommands-i386.xz文件
distsreleasemaincnfby-hash目录
 
distsreleasemaincnfby-hashSHA256目录
distsreleasemaincnfby-hashSHA2566baa...文件
distsreleasemaincnfby-hashSHA25662fd...文件
distsreleasemaincnfby-hashSHA25670a5...文件
distsreleasemaincnfby-hashSHA25696e9...文件
distsreleasemaincnfby-hashSHA2567984...文件
distsreleasemaincnfby-hashSHA2564000...文件
distsreleasemaincnfby-hashSHA256ced4...文件
 
distsreleasemaindebian-installerbinary-amd64目录
distsreleasemaindebian-installerbinary-i386目录
 
distsreleasemaindebian-installerbinary-amd64Packages.gz文件
distsreleasemaindebian-installerbinary-amd64Packages.xz文件
distsreleasemaindebian-installerbinary-amd64by-hash目录
 
distsreleasemaindebian-installerbinary-amd64by-hashSHA256目录
 
distsreleasemaindebian-installerbinary-amd64by-hashSHA25613cf...
distsreleasemaindebian-installerbinary-amd64by-hashSHA256e7ab...
 
distsreleasemaindep11CID-Index-amd64.json.gz文件
distsreleasemaindep11CID-Index-i386.json.gz文件
distsreleasemaindep11Components-amd64.yml.gz文件
distsreleasemaindep11Components-amd64.yml.xz文件
distsreleasemaindep11Components-i386.yml.gz文件
distsreleasemaindep11Components-i386.yml.xz文件
distsreleasemaindep11icons-48x48.tar.gz文件
distsreleasemaindep11icons-48x48@2.tar.gz文件
distsreleasemaindep11icons-64x64.tar.gz文件
distsreleasemaindep11icons-64x64@2.tar.gz文件
distsreleasemaindep11icons-128x128.tar.gz文件
distsreleasemaindep11icons-128x128@2.tar.gz文件
distsreleasemaindep11by-hash目录
 
distsreleasemaindep11by-hashSHA256目录
 
distsreleasemaindep11by-hashSHA2560541...文件
distsreleasemaindep11by-hashSHA25608f9...文件
distsreleasemaindep11by-hashSHA25609df...文件
distsreleasemaindep11by-hashSHA2562ab7...文件
 
distsreleasemaindist-upgrader-all22.04.8目录
distsreleasemaindist-upgrader-all22.04.9目录
distsreleasemaindist-upgrader-all22.04.10目录
distsreleasemaindist-upgrader-allcurrent目录
 
distsreleasemaindist-upgrader-all22.04.8
DevelReleaseAnnouncement
文件
distsreleasemaindist-upgrader-all22.04.8
DevelReleaseAnnouncement.html
文件
distsreleasemaindist-upgrader-all22.04.8
EOLReleaseAnnouncement
文件
distsreleasemaindist-upgrader-all22.04.8
EOLReleaseAnnouncement.html
文件
distsreleasemaindist-upgrader-all22.04.8
ReleaseAnnouncement
文件
distsreleasemaindist-upgrader-all22.04.8
ReleaseAnnouncement.html
文件
distsreleasemaindist-upgrader-all22.04.8jammy.tar.gz文件
distsreleasemaindist-upgrader-all22.04.8jammy.tar.gz.gpg文件
 
distsreleasemaini18nindex文件
distsreleasemaini18nTranslation-ast文件
distsreleasemaini18nTranslation-ast.gz文件
distsreleasemaini18nTranslation-ast.xz文件
distsreleasemaini18nTranslation-zh_CN文件
distsreleasemaini18nTranslation-zh_CN.gz文件
distsreleasemaini18nTranslation-zh_CN.xz文件
distsreleasemaini18nTranslation-zh_TW文件
distsreleasemaini18nTranslation-zh_TW.gz文件
distsreleasemaini18nTranslation-zh_TW.xz文件
distsreleasemaini18nby-hash目录
 
distsreleasemaini18nby-hashSHA256目录
 
distsreleasemaini18nby-hashSHA2560c75...文件
distsreleasemaini18nby-hashSHA2560e14...文件
distsreleasemaini18nby-hashSHA2566c57...文件
distsreleasemaini18nby-hashSHA256fff9...文件
 
distsreleasemaininstaller-amd64目录
 
distsreleasemaininstaller-amd6420101020ubuntu629目录
distsreleasemaininstaller-amd64current目录
 
distsreleasemainsourcePackages.gz文件
distsreleasemainsourcePackages.xz文件
distsreleasemainsourceby-hash目录
 
distsreleasemainsourceby-hashSHA256目录
distsreleasemainsourceby-hashSHA25665c7...gz文件
distsreleasemainsourceby-hashSHA256a7a5...gz文件
distsreleasemainsourceby-hashSHA2565708...文件
 
distsreleasemainuefi目录
 
distsreleasemainuefiefilinux-amd64目录
distsreleasemainuefifwupd-amd64目录
distsreleasemainuefifwupd-i386目录
distsreleasemainuefifwupdate-amd64目录
distsreleasemainuefifwupdate-i386目录
distsreleasemainuefigrub-efi-amd64-amd64目录
distsreleasemainuefigrub2-amd64目录
distsreleasemainuefilinux-amd64目录
distsreleasemainuefilinux-azure-amd64目录
distsreleasemainuefilinux-oem-amd64目录
 
distsrelease-updatesby-hash目录
distsrelease-updatesmain目录
distsrelease-updatesmultiverse目录
distsrelease-updatesrestricted目录
distsrelease-updatesuniverse目录
distsrelease-updatesContents-amd64.gz文件
distsrelease-updatesContents-i386.gz文件
distsrelease-updatesInRelease文件
distsrelease-updatesRelease文件
distsrelease-updatesRelease.gpg文件

一级二级三级四级五级六级七级备注
poolmain{a..z} {liba..libz}
poolmainm举例:make-dfsg
poolmainmmake-dfsgmake_4.3-4.1build1_amd64.deb文件
poolmainmmake-dfsgmake-dfsg_4.3.orig.tar.gz文件
poolmainmmake-dfsgmake-dfsg_4.3-4.1build1.diff.gz文件
poolmainmmake-dfsgmake-dfsg_4.3-4.1build1.dsc
 
poolrestricted{a..z} {liba..libz} {0..9}目录
poolrestrictedd举例:drdsl
poolrestrictedddrdsldrdsl_1.2.0-1build1_amd64.deb文件
 
pooluniverse{a..z} {liba..libz} {0..9}
pooluniverselibp举例:libpqxx
pooluniverselibplibpqxxlibpqxx-dev_6.4.5-2build1_amd64.deb文件
pooluniverselibplibpqxxlibpqxx_6.4.5.orig.tar.gz文件
pooluniverselibplibpqxxlibpqxx_6.4.5-2build1.debian.tar.xz文件
pooluniverselibplibpqxxlibpqxx_6.4.5-2build1.dsc
 
poolmultiverse{a..z} {liba..libz} {0..9}
poolmultiversem举例:mame
poolmultiversemmamemame_0.160-0ubuntu1_amd64.deb文件

软件类型 main/restricted/universe/multiverse

 开源软件非开源软件
官方支持 mainrestricted
社区支持universemultiverse
  • 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:~$ 

参考文档