Debian Package系统学习小结

这里先介绍一下创建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数据流图

apt-get

This entry was posted in Unix/Linux. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>