ubuntu-lint(1)

๐Ÿ“ฆ version 0.2.3ubuntu, in ubuntu stonking

๐Ÿ’… ubuntu-lint(1) โ€” the packaging linter that has ur back

okay so like, hi bestie ๐Ÿซถ this is ubuntu-lint(1), from the General Commands Manual. if ur doing Ubuntu uploads and u want someone to double-check ur vibes before u hit send, this is literally her. she's giving main character energy for Ubuntu-specific packaging policy, and i'm obsessed. let's get into it โœจ


โœจ NAME โœจ

ubuntu-lint โ€” packaging linter for Ubuntu uploads ๐ŸŽ€


๐ŸŒธ SYNOPSIS ๐ŸŒธ

ubuntu-lint [--help] [--verbose] [--json] [--source-dir DIR]
[--changelog FILE] [--changes-file FILE] [--all=(auto|off|warn|fail)]
[--<linter>=(auto|off|warn|fail)]...

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

so ubuntu-lint is a packaging linter and she is focused on Ubuntu-specific policies and conventions. she inspects Debian source package directories, changelogs, and .changes files, and then runs modular lint checks on them. no cap.

if u run her with no explicit context flags and there's a debian/ directory hanging around, ubuntu-lint will infer context from the changelog and the most recent .changes file. like she just knows. ๐Ÿ”ฎ but if u wanna tell her explicitly, use the context options down below.

bestie, the best part: most lint checks have an associated dput-ng hook defined for easy linting at upload time. so the linter can just. show up. when u upload. iconic. ๐Ÿ‘‘


๐Ÿ’œ OPTIONS ๐Ÿ’œ

  • --help, -h โ€” show help and exit. very demure, very mindful.
  • --verbose โ€” enable verbose output. for when u want the tea โ˜•
  • --json โ€” print results as JSON.

๐Ÿ“ CONTEXT OPTIONS ๐Ÿ“

  • --source-dir DIR โ€” path to the Debian source package directory to use as context.
  • --changelog FILE โ€” path to debian/changelog to use as context.
  • --changes-file FILE โ€” path to a source .changes file to use as context.

๐ŸŒˆ LINTER OPTIONS ๐ŸŒˆ

every lint has a corresponding flag, --<linter-name>=, and it accepts exactly one of: auto, off, warn, fail.

  • auto โ€” use the lint's default behavior, depending on whether the target is a development or stable release.
  • warn โ€” treat detected issues as warnings.
  • fail โ€” treat detected issues as failures.
  • off โ€” disable the check. (she's asleep ๐Ÿ˜ด)

--all= sets the default level for all linters. and any linter-specific flags that come after take precedence, so speak now or forever hold ur peace ๐Ÿ’…


๐Ÿ‘‘ AVAILABLE LINTERS ๐Ÿ‘‘

โญ distribution-invalid

detects invalid or unsupported distribution field, like incorrect distribution names.

โญ missing-bug-references

detects when the upload is missing Launchpad bug references in the changelog.

โญ missing-launchpad-bugs-fixed

detects when the upload is missing Launchpad bug references (i.e. the Launchpad-Bugs-Fixed field) in the .changes file.

โญ missing-git-ubuntu-references

detects when the changes file is missing git-ubuntu metadata (i.e. the Vcs-Git, Vcs-Git-Commit, Vcs-Git-Ref fields).

โญ git-ubuntu-references-mismatch

checks that if present, the git-ubuntu metadata in the changes file is consistent with the remote. like bestie, are u sure that's where u said u were? ๐Ÿ˜ญ

โญ missing-pending-changelog-entry

detects when an upload's changelog is missing the entry of a pending change โ€” for example, an upload that is still in -proposed.

โญ missing-ubuntu-maintainer

detects when the changes file has not set the Maintainer field to Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>.

โญ sru-bug-missing-template

for SRU uploads, checks if the associated bugs have filled out the SRU template.

โญ sru-bug-missing-release-tasks

for SRU uploads, checks if the associated bugs have the correct release tasks set.

โญ sru-version-string-breaks-upgrades

for SRU uploads, checks if the version string could break upgrade paths. ๐Ÿšจ

โญ sru-version-string-convention

for SRU uploads, checks if the version string follows Ubuntu and SRU conventions.

โญ release-mismatch

attempts to detect inconsistencies in the version string and series name. e.g. 1.2.3-0ubuntu1~22.04.1 and noble โ€” because the ~22.04.1 looks like it is meant for Ubuntu 22.04 LTS "Jammy Jellyfish", and noble refers to Ubuntu 24.04 LTS "Noble Numbat". those two are NOT the same girl. ๐Ÿ’€

โญ missing-version-suffix

detects when an upload for Ubuntu is missing an appropriate version string suffix, e.g. "ubuntuX" or "buildX".

โญ merge-missing-new-debian-changelog

for package merge uploads, checks that the changes file includes the new Debian changelog entries. in other words, this check ensures that the source package was built with -v<previous_ubuntu_version>.

there's more where that came from โ€” see ubuntu-lint --help for the complete list. ๐Ÿซถ

๐Ÿงš DPUT-NG HOOKS ๐Ÿงš

most lint checks have an associated dput-ng hook which is shipped in /etc/dput.d/hooks/<linter>.json. if installed alongside dpug-ng, these hooks will be invoked with dput-ng's context at upload time. automatic linting, no extra effort, we love to see it. ๐Ÿ”ฅ


๐ŸŒŸ EXAMPLES ๐ŸŒŸ

run in the current directory (auto-detect context):

$ ubuntu-lint

run against an explicit source directory:

$ ubuntu-lint โ€“source-dir=/path/to/src

disable a specific linter:

$ ubuntu-lint โ€“missing-git-ubuntu-references=off

force all checks to be warnings:

$ ubuntu-lint โ€“all=warn

๐ŸŽ€ AUTHOR ๐ŸŽ€

Canonical Ltd. โ€” see project files for contributors.


๐Ÿ™ˆ BUGS ๐Ÿ™ˆ

found something cursed? report issues to the project's issue tracker: https://github.com/ubuntu/ubuntu-lint/issues.


๐Ÿ’– AUTHORS ๐Ÿ’–

Canonical Ltd..


and that's the whole page bestie, no cap. this one's ubuntu-lint(1) from the General Commands Manual, dated 2026-06-22 โ€” go forth, lint ur uploads, and slay ๐Ÿ’…โœจ๐Ÿ’œ
๐Ÿ“ฆ where this page comes from