This repository has been archived on 2021-08-14. You can view files and clone it, but cannot push or open issues/pull-requests.
bever-dam/content/devlogs/hilde/debian-repo-format.md

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.

Types of files

Release files