ADEQUATE(1)

πŸ“¦
version 0.17.6 Β· 4 versions
, in debian trixie, ubuntu questing, ubuntu resolute, ubuntu stonking

Okay bestie, welcome to the adequate man page πŸŽ€ (General Commands Manual, section 1, we're serving full nerd realness today πŸ’…).

✨ NAME ✨

adequate is the Debian package quality testing tool πŸ¦‹ It's basically a vibe check for your packages.

✨ SYNOPSIS ✨

adequate [options] package-name...
adequate [options] --all
adequate [options] --apt-preinst
adequate [options] --pending
adequate --list-tags
adequate --help

✨ DESCRIPTION ✨

Okay so adequate goes through the packages installed on your system and calls out bugs and policy violations πŸ” No cap, it's giving detective energy.

✨ OPTIONS ✨

  • --all β€” Runs checks on every single installed package 🌈
  • --tags tag1[,tag2...] β€” Only emits these tags 🎯
  • --tags -tag1[,tag2...] β€” Doesn't emit these tags, so you can mute the drama 🀫
  • --debconf β€” Reports issues through debconf(7) πŸ’Œ
  • --fail β€” Exits with status 2 if at least one tag got emitted πŸ’€
  • --root directory β€” Changes the root directory (using chroot(2)) 🧚
  • --user user[:group] β€” Switches user and group before running any checks πŸ‘‘ This is most useful together with --root or --pending, which need superuser privileges.
  • --apt-preinst β€” Reads APT configuration and .deb filenames from stdin, then appends package names to /var/lib/adequate/pending for later processing (see --pending) 🫢 This one is used internally by the APT hook. The hook is disabled by default, so edit /apt/apt.conf.d/20adequate if you want to turn it on ✨
  • --pending β€” Runs checks on the packages listed in /var/lib/adequate/pending, then empties the file 🧹
  • --list-tags β€” Lists all tag names and exits πŸ“
  • --help β€” Displays help and exits πŸ™ˆ

✨ TAGS ✨

Here's the full tea on every tag β˜• Each one has its own little personality.

bin-or-sbin-binary-requires-usr-lib-library

This package ships a binary in /bin or /sbin that requires a library in /usr/lib. It's obsolete now, see https://wiki.debian.org/UsrMerge πŸ“

broken-binfmt-detector

The detector registered with update-binfmts(8) does not exist. Lowkey tragic πŸ’€

broken-binfmt-interpreter

The interpreter registered with update-binfmts(8) does not exist. Also tragic πŸ’”

This package ships a symlink that points to a file that doesn't exist πŸ”—

incompatible-licenses

The licenses of the libraries the binary is linked to are incompatible. This one is obsolete as of adequate version 0.16.19 πŸ—‘οΈ

invalid-dbus-user-or-group

A D-Bus configuration file specifies an invalid user or group 🚫

invalid-systemd-user-or-group

A systemd service unit script specifies an invalid user or group 🚫

invalid-sysvinit-user-or-group

A sysvinit script specifies an invalid user or group 🚫

ldd-failure

Running ldd -r on the file failed unexpectedly. This is most likely a bug in libc or in adequate itself 😭 See https://bugs.debian.org/710521

library-not-found

The binary is linked with a library, and that library cannot be found 🫠 Debian Policy §8.6

missing-alternative

This package is a provider of the virtual package x-terminal-emulator, but it doesn't register itself as an alternative for /usr/bin/x-terminal-emulator. Or, it's a provider of the virtual package x-window-manager, but it doesn't register itself as an alternative for /usr/bin/x-window-manager. Debian Policy Β§11.8.3, Debian Policy Β§11.8.4 πŸͺŸ

The copyright file for this package is missing πŸ“„ This often happens if /usr/share/doc// used to be a real directory in an earlier version of the package, but it's now a symlink. dpkg never replaces a directory with a symlink to a directory, so it's a whole mess. Debian Policy Β§12.5, Β§6.6

missing-pkgconfig-dependency

A dependency of a pkg-config (.pc) file shipped by this package couldn't be satisfied. Debian Policy §8.4 🧩

missing-symbol-version-information

The binary uses versioned symbols, but the library only provides unversioned ones πŸ”’

obsolete-conffile

The current version of this package no longer ships a conffile, even though it used to in the past. However, the conffile hasn't been removed on upgrade 🧹 See https://wiki.debian.org/DpkgConffileHandling and dpkg-maintscript-helper(1)

program-name-collision

This package ships a program with the same name as another program πŸ‘― Debian Policy Β§10.1

py-file-not-bytecompiled

This package ships Python modules that are not byte-compiled 🐍 Python Policy §2.6

pyshared-file-not-bytecompiled

This package ships Python modules in /usr/share/pyshared that are not byte-compiled 🐍 Python Policy §2.6, §1.5

symbol-size-mismatch

The symbol has changed size since the package was built. This might mean the library broke ABI. If ABI wasn't broken, and the library bumped shlibs (or symbols), the package should be binNMUed πŸ“

undefined-symbol

The symbol has not been found in the libraries linked with the binary. Either the binary needs to be linked with an additional shared library, or the dependency on the shared library package that provides this symbol is too weak πŸ•³οΈ Debian Policy Β§3.5, Β§8.6, Β§10.2


✨ EXAMPLES ✨

Let's get into some looks πŸ’…

adequate coreutils

Checks the coreutils package 🌸

adequate --tags obsolete-conffile --all

Checks all the packages for obsolete conffiles 🧹

adequate --tags -py-file-not-bytecompiled,pyshared-file-not-bytecompiled --all

Checks all the packages while ignoring Python bytecompilation issues πŸπŸ™ˆ

✨ EXIT STATUS ✨

  • 0 β€” No tags were emitted, or --fail wasn't set 🌈
  • 1 β€” Invalid invocation πŸ₯²
  • 2 β€” At least one tag was emitted and --fail was set 🚨

✨ REPORTING BUGS ✨

Okay, so if you find a bug with adequate, please use these usertags so the right people see it 🫢

User: debian-qa@lists.debian.org

Usertags: adequate tag-name
Real talk: adequate is not perfect, so false positives are possible πŸ™ˆ Don't report a bug unless you actually understand the underlying problem. When in doubt, ask debian-qa@lists.debian.org first, bestie πŸ’œ

✨ SEE ALSO ✨


That's the whole page, babe πŸ’– Signing off from ADEQUATE(1), the General Commands Manual, where the footer is just the name and nothing else 🌸✨

πŸ“¦ where this page comes from