Page MenuHomeLubuntu Development

Packaging Guide
Updated 960 Days AgoPublic

Lubuntu's packaging follows a specific set of standards to ensure consistency and cleanliness.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
document are to be interpreted as described in RFC 2119.

If a policy is not described here, packaging must use the standards set by the version of Debian Policy specified in the Standards-version line of a packages debian/control file.



A packager's ~/.quiltrc must contain the following lines.

for where in ./ ../ ../../ ../../../ ../../../../ ../../../../../; do
    if [ -e ${where}debian/rules -a -d ${where}debian/patches ]; then
        export QUILT_PATCHES=debian/patches
QUILT_DIFF_ARGS="--no-timestamps --no-index -p ab --color=auto"
QUILT_REFRESH_ARGS="--no-timestamps --no-index -p ab"

Patch style

  • All patches must be completely DEP-3 compliant and all information should be accurate. No other information should be in the patch header besides DEP-3 headers.
  • After adding a new patch, quilt push (to get to the patch) and quilt refresh must be ran to ensure it applies cleanly and style formatting is solved.
  • All files in debian/patches/ must be listed in debian/patches/series with the exception of the series file itself. When removing a file from debian/patches/series, it must be removed from the directory.
  • Patches should have a suffix of .patch.
  • Multiple upstream commits should be separated into multiple files, and must have a common suffix or prefix.

General formatting


The command wrap-and-sort must be ran before committing any changes to a file in debian/ besides control and patches/*. No flags to wrap-and-sort should be used.

Debian policy compliance

For uploads targeting the development release, Standards-version in debian/control should be updated to the latest policy version. If there is a reason not to, it should be discussed among developers and noted here.

Copyright compliance

On new upstream releases, the whole diff must be checked and debian/copyright must be updated for the copyright notice changes. This is to ensure compliance with the DFSG which must be followed in all Lubuntu packages.

A tool such as licensecheck may be used, but is manageable enough to do by hand if the diff is small.

Where the only changes made are our packaging changes, it's optional to add a copyright for debian/* as per license guidance below, but it is not a requirement.

Changelog entries

There must be no trailing whitespace in the debian/changelog file. See here for tips on how to do remove them in vim or you can do it with sed -i 's/[ \t]\+$//'

When referencing Launchpad bugs, the following (case-insensitive) regex must be followed: lp:\s+\#\d+(?:,\s*\#\d+)*


Use of Git

All Lubuntu packaging must be kept in Git. If an archive upload is
done without committing to Git, as soon as this is noticed, it must be
committed to the corresponding packaging repository.

Commits must be self-contained

Only one notable change must be done in each commit. It should contain a changelog entry, except if it is small enough.

Commit messages

If the changelog entry added in the commit contains a Launchpad bug reference, it must be in the commit message.

Commit messages should closely match the changelog entry if there is
one. The short commit message should be kept to 72 characters or less.

Uploads must be tagged

For every upload done to the Ubuntu archive, only once the upload is accepted, the release commit must be tagged with ubuntu/VERSION where VERSION is the full Ubuntu version, e.g. 0.14.2-3ubuntu1. In the case of epochs, use % instead of :, e.g. 1%19.10.3.

Branch format

For packaging which we only ever expect one archive version to be used, master must be used. In all other cases, the ubuntu/RELEASE versioning scheme must be used. (For example, ubuntu/bionic.)

Vcs-* in debian/control

For packages we maintain our own packaging for but are also in Debian, the following format must be used in the debian/control file for the package's VCS entries:


XS-Debian-* are where to find the repositories in Debian, and Vcs-* should link to the repositories in Phab.


The default license for new code should be GPL3.


# Copyright © 2021 Lubuntu Developers
# Author: Walter Lapchynski <>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <>.
Last Author
Last Edited
Feb 10 2021, 6:37 AM