diff --git a/content/devlogs/hilde/debian-repo-format.md b/content/devlogs/hilde/debian-repo-format.md new file mode 100644 index 0000000..f995dc2 --- /dev/null +++ b/content/devlogs/hilde/debian-repo-format.md @@ -0,0 +1,54 @@ +--- +title: 'Hilde - The Repository Format' +date: '2021-06-27' +draft: 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](https://wiki.debian.org/DebianRepository/Format#Overview). + +# 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 + +