2.2 KiB
title | date | draft |
---|---|---|
Hilde - The Repository Format | 2021-06-27 | true |
Welcome to the second devlog of Hilde! In this post, I'll be explaining to both myself and the reader what structure Hilde should conform to. This post will describe the most advanced repository possible, and will hopefully allow me to create a proper to-do list of features I have to implement. Note that this post is mostly a re-write of this article.
Concepts
Root
Each repo has a root from which it serves all files. I'll be referring to this
root as $ROOT
from now on. This root is just the base URL for the repository.
Any package on the repo is part of a distribution, which is basically a way to
organize packages into categories. For example, the official Debian
repositories distinguish between stable
, stable/updates
, etc. Here, you can
also see that a distribution can contain forward slashes.
Distributions
A distribution is located at $ROOT/dists/$DIST
, where $DIST
is the name of
the distribution. Each dist provides a Release
file with an accompanying
Release.gpg
. This GPG key is then used by the package manager to sign
the Release
file. Additionally, the repo provides an InRelease
file, which
is the same as the Release
file, but already signed using the GPG key. Each
dist contains one or more components.
Components
Each component is a further sub-category within a distribution. A component
contains one or more binary-$ARCH
subdirectories, where $ARCH
is the
architecture for the binary packages within. Source packages are located inside
a source
subdirectory. For each binary-$ARCH
& source
directory, a
Contents-$ARCH
(Contents-source
resp.) file is provided. This file is
usually compressed using gzip, and consists of a list of all files contained
within all packages inside the component.
binary-$ARCH
& source
directories
These directories contain a Packages
& Sources
files respectively, usually
provided in a compressed format. These files contain a control-file style list
of all the packages contained within the directory.