2.1 KiB
title | tags | status |
---|---|---|
Debian packaging for python | debian, packaging, python, stden, pyproject | draft |
Recently, for Dangerzone, we switched from stdeb to pybuild.
Stdeb wasn't working for us on Debian trixie (at the time at least), and after some tinkering, we figured it could be better to use the pybuild tools instead. I was pretty happy to find an excuse to learn about Debian packaging, as I really like the Debian project and the culture behind it.
I have to say that at a first glance, this seemed overly complicated. There is a lot of documentation about how to do debian packaging, almost to the point where I didn't know where to start. Hopefully, Kunal pointed me to the right direction.
And, it turns out I was completly wrong about the complexity. Sure there is a lot of moving pieces, but in the end, doing the packaging work was pretty straightforward. This is partially due to the fact we are packaging a client-side application, meaning we avoid some complexity about WSGI to HTTP "bridges".
In the end, most of the work is to write the proper files in the debian
folder, and call dpkg-buildpackage
.
The debian
folder
Here is the file structure:
debian/
├── changelog
├── compat
├── control
├── copyright
├── rules
└── source
├── format
└── options
Let get to each of the interesting files one by one:
debian/changelog
contains the changelog. The format actually means something and is documented here ;debian/control
contains the actual project description and dependencies, we'll get back to this in a bit ;debian/rules
is a Makefile containing the targets to build the actual package ;debian/compat
contains some metadata information about the version of the packaging standard this uses ;debian/source/*
contains some information on how to get the source. Depending- I leave
debian/copyright
out of the picture, it's just