这里先介绍一下创建repository的步骤和apt-get命令的相关数据流程,以后有时间再将其他的细节补充。
一、创建repository
- locate root direcotry, create pool
- move binary and source packages to pool
- generate Packages, Sources file(dpkg-scanpackages, dpkg-scansources)
- create Release file and signature Release.gpg(apt-ftparchive, gpg)
- publish repository : http, ftp, file
下面这个是创建repository的简单脚本:
#!/bin/bash
release="jaunty"
version="9.04"
categories="main"
architectures="i386"
origin="EndlessCode"
label="EndlessCode"
description="Ubuntu jaunty 9.04"
#scan all binary and source package
#generate Packages, Sources
for category in $categories; do
for architecture in architectures; do
mkdir -p dists/$release/$category/binary-$architecture
dpkg-scanpackages pool/$category /dev/null \
2 > /dev/null > dists/$release/$category/binary-$architecture/Packages
gzip -c dists/$release/$category/binary-$architecture/Packages > \
dists/$release/$category/binary-$architecture/Packages.gz
mkdir -p dists/$release/$category/source
dpkg-scansources pool/$category /dev/null \
2 > /dev/null > dists/$release/$category/source/Sources
gzip -c dists/$release/$category/source/Sources > \
dists/$release/$category/source/Sources.gz
done
done
#create Release file
cd dists/$release
rm Release Release.gpg
apt-ftparchive release .\
-o APT::FTPArchive::Release::Origin="$origin" \
-o APT::FTPArchive::Release::Codename="$release" \
-o APT::FTPArchive::Release::Label="$label" \
-o APT::FTPArchive::Release::Architectures="$architectures" \
-o APT::FTPArchive::Release::Version="$version" \
-o APT::FTPArchive::Release::Suite="$release" \
-o APT::FTPArchive::Release::Components="$categories" \
-o APT::FTPArchive::Release::Description="$description" \
> Release
#create detached sig of Release
gpg -abs -o Release.gpg Release
二、apt-get数据流图
