At Lumiera.org, we maintain a Debian DEB depot, that can be used as package source for Apt to allow automatic installation of our custom packages for Lumiera.
This Debian-Depot is part of the Lumiera build infrastructure.
It is managed (semi) automatically, based on the
reprepro tool by Bernhard Link
→ Debian Wiki
· man page
The Lumiera debian package
Since our whole infrastructure relies heavily on the Git version management tool, it seems natural to organise also the (debian) packaging with the help of Git. Fortunately, there is a nifty tool called git-buildpackage, written by Guido Günther exactly for this purpose: It treats the debianisation as a branch in the Git repository, forking off the mainline at the release point.
For Lumiera, this debianisation branch is called deb and can be found in the Repository git://git.lumiera.org/debian/lumiera.
|
(re)build the debian package
→ more explanations regarding the Lumiera Debian package |
Debian-Depot for installation via Apt
It is rather easy to build a simplistic DEB package and then install it locally through
dpkg -i — however, if we want to support automated installation and upgrades using
the Apt package manager, we need to build up more infrastructure. One of the reasons
is that for any source package, a multitude of binary packages might be built and
provided for different architectures; in addition, we also want to support several
different distributions (Debian, Mint, Ubuntu…)
For this purpose,the Apt package manager requires a precisely defined folder structure,
accessible online via https: or ftp:. For maintaining this folder structure, three
different levels of complexity are conceivable:
- minimal layout, manual maintainance
-
place everything in a single directory accessible online. Use only one pseudo-distribution and call the (single) component '.\' — just dump packages into the directory and update the packages list
- multiple distributions and components, pool directory
-
this setup is already a full-featured Debian depot, just there are some limitations on the flexibility: there might be only one version of each package per distribution, and all different distributions use a shared pool (and thus require different packages to be labeled stringently)
- major distribution or mirror site
-
similar to the above, this is a complete Debian depot, but it is backed by a database and allows for much more flexible configuration and is highly automated.
For Lumiera, it seems the middle option is the right choice: while it still keeps the
infrastructure simple, it allows for multiple distributions (Debian/stable, Ubuntu….)
and multiple components (experimental, development, release). The reprepro tool
mentioned above does provide this degree of functionality: Basically it requires a fixed
directory structure with some control files; the front-end is a commandline tool with a
lot of options and quite some automation- and extension hooks.
Internally, it uses an embedded lightweight database.
Using reprepro, existing source, binary or combined packages can be added (imported)
into the structure with a single command; the files comprising the package are then
added automatically to the pool directory and all the indices, directories and GPG
signatures are created and updated automatically. Previous versions of the same
package are purged, when not referred by any existing package anymore
To summarise the work procedure:
-
somehow build the DEB package
-
import it with
repreprointo the depot folder structure -
share this structure over the web
everyday usage
- import a package
-
reprepro -V -C experimental include trixie lumiera_0.pre.04-1_amd64.changesthis adds the given binary lumiera package, together with all sources and the original tarball to the ‘trixie’ repository, and there into the ‘experimental’ section
- dump out an entire repository
-
reprepro -V export trixiethis will regenerate all of the indices, signatures and metadata of the squeeze repository
Configuration
All the current configuration and the state of the Debian depot index files is tracked in the aforementioned “debian/lumiera” Git repository, on a separate branch called ‘depot’
|
this is a slightly unconventional setup, insofar the ‘depot’ branch carries
a directory tree that is completely separate from the main Lumiera source tree, which
is tracked by the deb branch in the same repository… I did choose this layout because of the marginal relevance of this depot management; I just did not want to create yet another not so useful repo… |
The details of our configuration and the current state can be seen here…
-
primary configuration
-
Logfile of imports: for Debian/Trixie
-
Logfile of imports: for Ubuntu/Noble
|
Details to note in our setup
|
current setup 2025
While we plan to automate most of this packaging business eventually, currently our releases
and the packaing tasks are performed in a semi-manual fashion. This means that we use some base
level automation (like git-buildpackage or mk-build-deps or reprepro) — but the manifests
and changelogs are maintained manually and the steps for building and importing are launched
one by one at the console. Our preview releases happen only occasionally and each of them
changes and breaks a lot, so that an effort towards a higher level of automation seems futile.
Typically, Ichthyo builds the packages on his local PC in suitable Docker/Podman containers
and adds/imports them into the reprepro — changes are then propagated to Lumiera.org via rsync,
and the changed index files are checked into the depot branch and pushed into
git://git.lumiera.org/debian/lumiera.
The rsync to upload is done with
rsync -rclvz --progress --partial --delete \
/local/path/to/Lumirep/depot/ ichthyo@www.lumiera.org:/var/local/www_debian