Lumiera
The new emerging NLE for GNU/Linux

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.

Note
(re)build the debian package
  1. step into a packaging work directory

  2. git clone git://git.lumiera.org/debian/lumiera -b deb

  3. cd lumiera

  4. gbp buildpackage

→ 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:

  1. somehow build the DEB package

  2. import it with reprepro into the depot folder structure

  3. share this structure over the web

everyday usage

import a package

reprepro -V -C experimental include trixie lumiera_0.pre.04-1_amd64.changes

this 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 trixie

this 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’

Tip 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…

Note
Details to note in our setup
  • each block in the file conf/distributions defines a repository for a “distribution” (e.g. Trixie, Forky, Noble). Within such a repo, there are sections named Components.

  • The override files mentioned in the configuration allow to overwrite / replace arbitrary fields in the metadata of all packages added to that distribution (We do not currently use this feature however).

  • In this setup, we enabled the tracking function: thereby reprepro will keep track of the dependencies between binary packages, signatures, debianisation patches and original upstream tarballs. Never packages overwirte older ones — at any time there is at most one version of a package in the repository. Parts not referred to anymore will be discarded automatically. In our configuration, they are moved into the morguedir

  • Please be sure that the GPG signing key is maintained properly and kept secure, because it protects our users against evil spirited manipulations by powerful entities.

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