最近在做一个项目要用搭建一个我们自己的Ubuntu的源更新仓库。于是查找了一些debian和Ubuntu的一些资料。并根据理解搭建了一个自己的DEB仓库。
Ubuntu的更新源仓库主要是根据目录结构以及一些index contents 以及relase来进行分析的。客户端会自动根据版本平台已经仓库的提供的相关信息进行自动更新,就是我我们只要将目录结构搭建正确,相关文件生成的正确就完成仓库的搭建了,下面说一下Ubuntu的目录结构和相关文件
|--repository
| |-- dists
| | |-- stable
| | | |-- Contents-i386.gz
| | | |-- apt.conf
| | | |-- Release
| | | |-- Release.gpg
| | | |-- main
| | | | |-- binary-amd64
| | | | |-- binary-i386
| | | | | |-- Packages
| | | | | |-- Packages.gz
| | | | |-- source
| | | |-- multiverse
| | | | |-- binary-amd64
| | | | |-- binary-i386
| | | | |-- source
| | | |-- restricted
| | | | |-- binary-amd64
| | | | |-- binary-i386
| | | | |-- source
| | | |-- universe
| | | | |-- binary-amd64
| | | | |-- binary-i386
| | | | | |-- Packages
| | | | | |-- Packages.gz
| | | | |-- source
| |-- pool
| | |-- main
| | | |-- p
| | | | |-- pidgind_2.5.6_ie86.deb
| | |-- multiverse
| | |-- restricted
| | |-- universe
| |-- project
| | |-- keyring.gpg
目录结构基本上就是这样
repository:是仓库的主目录没有什么要求随便定义
dists:注意这个目录是位于主目录下名字必须是这个名字用于存放一些仓库的的相关信息archieve 以及 package 和 platorm信息的。
pool:这个是用于存放deb的目录所有的deb必须放在这个下面,子目录会在后面说。
project:用于存放项目的相关文件的信息,比如gpg的密钥文件。
dists/{stable,unstable,notfree,contrib}下的子目录 这个目录下面可以有多个目录 是每个archieve 的名字。名字可以自己定义
dists/stable/{main,restrict,universe} 这个是component名字,这个名字也可以自己定义但一般按照规范会定义成符合规范的名字。
dists/stable/main/{binary-i386,binary-arm,binary-amd64..} 这个目录是根据平台来定义的,目录的名字必须以binary-平台 形式来定义,客户端更新时会根据自己的平台查到相应的目录所以文件。
dists/stable/main/source 用于存在源代码的索引文件的目录。
pool/{main,restrict,universe} 这个目录是根据component的名字来定义这个名字应该可以不一样,但我没试过,
基本目录已经基本说完。下面说一下各个目录的文件。