APT-LISTBUGS(1)

πŸ“¦
version 0.1.47 Β· 2 versions
, in debian trixie

🐞 APT-LISTBUGS(1) β€” General Commands Manual 🐞

okay bestie sit DOWN because this is the manual page for apt-listbugs, and it's literally about saving your system from a bad install πŸ’–


✨ NAME ✨

apt-listbugs β€” Lists critical bugs before each APT installation/upgrade


🌸 SYNOPSIS 🌸

apt-listbugs [-s severities] [-T tags] [-S states] [-B bug#] [-r
release] [-D] [-u url] [-H hostname] [-p port] [-P priority] [-E title]
[-q] [-C apt.conf] [-F] [-N] [-y] [-n] [-a] [-d] command [argument ...]

apt-listbugs -h

apt-listbugs -v

πŸ’… DESCRIPTION πŸ’…

so apt-listbugs is this little icon that goes and grabs bug reports from the Debian Bug Tracking System and lists them for you. and the whole point, the vibe, is that it's meant to be called before every install or upgrade by APT (or by other compatible package managers, iykyk) so it can check whether what you're about to do is actually safe. 🫢

here's the typical scenario, bestie: you're installing or upgrading a bunch of packages with APT or some other compatible package manager. and before the install or upgrade actually happens, apt-listbugs gets invoked automatically. it goes and queries the Debian Bug Tracking System for bugs (of certain configured severities, more on that below) that the install or upgrade would drag into your system. and if it finds any, it warns you and asks how you want to proceed. 😭

among other things, you get to choose: continue, abort the whole install/upgrade, or pin some packages so the unsafe install/upgrade gets deferred. BUT β€” and this is the part nobody tells you β€” pinning is not effective immediately. it requires you to restart the APT session, which means aborting and then re-running the same APT command. periodt.

every package pin gets automatically removed by a daily cron job (or by an equivalent systemd timer) as soon as the corresponding bug is fixed in the package version available for install/upgrade, or no longer affects it. and once the pin is gone, that package can be installed or upgraded again. slay. ✨

for that automatic pin removal to actually work, the daily cron job or systemd timer has to actually run. if systemd is your init system, this should be handled automatically. otherwise, if your system is up and running almost 24/7, cron should suffice. in all other cases, installing anacron is recommended. also the Internet link has to be working while the daily job runs, and finally, your APT package lists should be kept up-to-date. like, all of this matters, don't skip it πŸ™ˆ


πŸ‘‘ OPTIONS πŸ‘‘

  • -s severities, --severity severities β€” filters (and sorts) bugs by severity, showing only the bugs that match the values you specified. list the severities you wanna see, comma-separated, in the order you want them. possible values are critical, grave, serious, important, normal, minor, wishlist, or the special value all to disable filtering entirely. default: critical,grave,serious. and you can change that default by setting the AptListbugs::Severities configuration option. πŸ’–
  • -T tags, --tag tags β€” filters bugs by tags, showing only bugs that match all the values you specified. list the tags you want, comma-separated. default: no filter. possible values include confirmed,l10n to show only bugs that have both of these tags. πŸŽ€
  • -S states, --stats states β€” filters (and sorts) bugs by pending-state, showing only the bugs matching the values you specified. list the pending-state categories you want, comma-separated, in the order you want them. default: pending,forwarded,pending-fixed,fixed,done. possible values are: pending (open bug), forwarded (marked as "forwarded"), pending-fixed (tagged as "pending"), fixed (tagged as "fixed"), absent (not found in this distribution/architecture), done (resolved in some version for this distribution/architecture). > note bestie: a bug can only match one such state β€” when multiple conditions on this list match, the later one takes priority β€” and pending does not mean "tagged as pending". 😭
  • -B bug#, --bugs bug# β€” filters bugs by number, showing only the bugs you directly specified. list the bug numbers you want, comma-separated (e.g. 123456,567890,135792). default: no filter. πŸ”₯
  • -r release, --distro-release release β€” filters bugs by distribution release, showing only bugs that affect the specified release. possible values are one of the release codenames listed in the output of the command distro-info --codename --all, or unstable, testing, stable, oldstable, or the special value ANY to disable filtering. default: no filter. and the default value can be changed by setting the AptListbugs::DistroRelease configuration option. 🌈
  • -D, --show-downgrade β€” shows bugs of downgraded packages. (apt mode only) πŸ‘€
  • -u url, --url url β€” specifies the SOAP URL for the Debian Bug Tracking System. default: https://bugs.debian.org:443/cgi-bin/soap.cgi. the default URL can be changed by setting the AptListbugs::URL configuration option. πŸ¦‹
  • -H hostname, --hostname hostname β€” specifies the hostname of the Debian Bug Tracking System and causes http to be used instead of https (DEPRECATED: use -u instead). default: bugs.debian.org. πŸ’€
  • -p port, --port port β€” specifies the port number of the SOAP interface of the Debian Bug Tracking System and causes http to be used instead of https (DEPRECATED: use -u instead). default: 80. πŸ’€
  • -P priority, --pin-priority priority β€” specifies the Pin-Priority value. default: 30000. πŸ“Œ
  • -E title, --title title β€” specifies the title of RSS output. ⭐
  • -q, --quiet β€” don't display the progress bar. this option is assumed if stdout is not a terminal. 🀫
  • -C apt.conf, --aptconf apt.conf β€” specifies an additional APT configuration file to use. this file gets read after the default APT configuration files. πŸ—‚οΈ
  • -F, --force-pin β€” when in apt mode, assumes you want to automatically pin all buggy packages with no prompt at all. this option is assumed if stdout is not a terminal, unless the -N command-line option is used. 🌸
  • -N, --force-no-pin β€” when in apt mode, never automatically pin any package without a prompt. this is the default behavior, as long as stdout is a terminal. πŸ™…
  • -y, --force-yes β€” assumes you select yes for all questions. when in apt mode, this implies you accept continuing with the installation/upgrade, even when bugs are found or errors occur. βœ…
  • -n, --force-no β€” assumes you select no for all questions. when in apt mode, this implies you want to abort the installation/upgrade as soon as bugs are found or errors occur. this option is assumed if stdout is not a terminal, unless the -y command-line option is used. ❌
  • -a, --force-default β€” assumes you select the default (automatic) reply for all questions. when in apt mode, this implies you accept continuing with the installation/upgrade even when bugs are found, but not when errors occur. 🎯
  • -d, --debug β€” gives extra debug output, which is important for debugging problems. please include -d when reporting problems, bestie, fr fr. πŸ›
  • -h, --help β€” prints usage help and exits. 🫢
  • -v, --version β€” prints the version number and exits. πŸ’œ

🧚 COMMANDS 🧚

  • apt β€” reads package actions from a file descriptor specified in the $APT_HOOK_INFO_FD environment variable (typically provided by APT or other compatible package managers; Pre-Install-Pkgs hook info protocol version 3 is expected β€” see apt.conf(5) for more details). πŸ‘‘
  • list [ package [ : arch ][ / version ] ... ] β€” reads package names from the arguments and just simply lists bugs of these packages. package versions may be specified with a slash, like apt/1.0 for example. package architectures may be specified with a colon, like apt:amd64 or apt:amd64/1.0 (but please note that the Debian Bug Tracking System does not distinguish the architectures, hence the same bugs will be listed regardless of the architecture you specified). 😭
  • rss [ package [ : arch ][ / version ] ... ] β€” reads package names from the arguments and lists bugs of these packages in RSS format. again, package versions may be specified with a slash and architectures with a colon. πŸ“‘

🌺 ENVIRONMENT VARIABLES 🌺

  • APT_LISTBUGS_FRONTEND β€” if this variable is set to "none", apt-listbugs will not execute at all. this might be useful if you'd like to script the use of a program that calls apt-listbugs. πŸ™ˆ
  • http_proxy β€” if $http_proxy is set, the value is used for the HTTP Proxy, unless proxy settings are found in APT configuration (see below). 🌐
  • APT_HOOK_INFO_FD β€” the file descriptor from which package actions will be read (APT or other compatible package managers are expected to write information to this file descriptor and to properly set this environment variable). πŸ“₯

πŸ› οΈ CONFIGURATION FILE πŸ› οΈ

so apt-listbugs literally reads the APT configuration (peep apt.conf(5) if u wanna go deeper, bestie). these are the config options it recognizes, no cap:

  • Acquire::http::Proxy β€” the Default HTTP Proxy setting, and it overrides any $http_proxy environment variable value, so it's giving main character energy in the proxy department. An empty string, or the special keyword "DIRECT", will disable the proxy entirely. bye proxy πŸ’…
  • Acquire::http::Proxy-Auto-Detect β€” Automatic HTTP Proxy discovery, and it overrides the default HTTP Proxy setting and any $http_proxy environment variable value (yes it's that girl). u can use it to specify an external command that's expected to output the proxy on stdout.
  • Acquire::http::Proxy::bugs.debian.org β€” a Specific HTTP Proxy setting, and it overrides any other proxy setting. super useful for setting the HTTP proxy just for apt-listbugs. the special keyword "DIRECT" will disable the proxy.
  • AptListbugs::URL β€” the Default SOAP URL for the Debian Bug Tracking System. when this option is not set, the SOAP URL is "https://bugs.debian.org:443/cgi-bin/soap.cgi", unless it gets explicitly altered by using the -u command-line option (or the deprecated -H and -p command-line options). but when this option is set, the SOAP URL is its value, unless it's explicitly altered by using the command-line options. periodt.
  • AptListbugs::Severities β€” the Default (comma-separated) list of bug severities to be shown. when this option isn't set, the list is "critical,grave,serious", unless it's explicitly altered by using the -s command-line option. when it is set, the list of severities is its value, unless explicitly altered by using the -s command-line option.
  • AptListbugs::DistroRelease β€” the Default distribution release to consider for affected bugs to be shown. when this option isn't set, or is set to "ANY", no filtering by release is performed, unless explicitly enabled by using the -r command-line option. when it is set, the distribution release is its value, unless explicitly altered by using the -r command-line option.
  • AptListbugs::IgnoreRegexp β€” Bugs to ignore when in apt mode. this gets evaluated using Ruby regular expressions: if the bug title matches, the bug is ignored. Default: nothing. a possible suggested value is "FTBFS", since those bugs tend to not affect the user. slay, honestly.
  • AptListbugs::QueryStep β€” the Maximum number of packages to be queried (on the Debian Bug Tracking System) in a single batch. Default value is 200. the query operation is performed in batches of at most QueryStep packages, for performance reasons; setting a lower value may slow down apt-listbugs, but may increase reliability on poor network links. 🌐
  • AptListbugs::ParseStep β€” the Maximum number of bug reports to be queried (on the Debian Bug Tracking System) and parsed in a single batch. Default value is 200. the query and parse operation is performed in batches of at most ParseStep bugs, for performance reasons; setting a lower value may slow down apt-listbugs, but may increase reliability on poor network links.
  • AptListbugs::DebugFile β€” the File for the debug output. Default value is stderr. when set, the specified file will be overwritten with the debug output, if the -d option has been passed. πŸ›
  • AptListbugs::TimerOutputMail β€” a Boolean option for the systemd timer output. when set to "false", the output of the systemd timer will not be sent to root via local mail, but to the logs. when this option isn't set (or is set to "true", which is the default value), the output of the systemd timer will be sent to root via local mail, as long as a sendmail compatible Mail Transport Agent (MTA) is found on the system. πŸ“¬

🌈 OUTPUT EXAMPLE 🌈

this is the vibe, bestie:

              [bug severity] bugs of [package] ([current version] -> [package version to be installed]) <[state of bug report]>
               [bN] - [#bug] - [bug title] [(Fixed: fixed version, if it's fixed in a future version)]
              Summary:
               [package]([number of] bugs)

e.g.:

              important bugs of apt-listbugs (0.0.47 -> 0.0.49) <Outstanding>
               b1 - #332442 - apt-listbugs: Apt-listbugs doesn't actually download any bug reports
               b2 - #389903 - apt-listbugs: Does not offer to exit if timeout occurs fetching reports
              Summary:
               apt-listbugs(2 bugs)

iconic output tbh πŸ’–


πŸšͺ EXIT STATUS πŸšͺ

  1. 0 β€” If the program ran successfully and (when in apt mode) you decided to continue with the installation/upgrade. Or otherwise, if a SIGUSR1 was received (for instance because you issued the command killall -USR1 apt-listbugs). ✨
  2. 1 β€” If an error occurred. 😭
  3. 10 β€” If the program ran successfully in apt mode, but you decided to abort the installation/upgrade. πŸ›‘
  4. 130 β€” If a SIGINT was received (for instance because you pressed [Ctrl+C]).
N.B.: When the program is invoked by APT, any non-zero exit status will cause the installation/upgrade to be aborted. like, do not pass go, do not collect $200 πŸ’€

πŸ“ FILES πŸ“

  • /etc/apt/preferences.d/apt-listbugs β€” Version preferences file fragment for APT managed by apt-listbugs: this is where the package pins are added by the apt-listbugs program and removed by its daily cron job or systemd timer. This file is managed automatically and there's normally no need to modify it by hand. πŸ™…β™€οΈ
  • /var/lib/apt-listbugs/ignore_bugs β€” Automatic list of bug numbers to be ignored by apt-listbugs: this is where the program saves the bug numbers that the user decided to ignore. This file is managed automatically and there's normally no need to modify it by hand.
  • /etc/apt/listbugs/ignore_bugs β€” User list of bug numbers and packages to be ignored by apt-listbugs: this is where the (root) user may manually add bug numbers or package names that apt-listbugs will ignore. This file is only read by apt-listbugs, but never modified: the (root) user has to edit it by hand. The format is: one bug number or package name per line; lines whose first non-blank character is '#' are treated as comments and skipped entirely. so keep those comments cute bestie πŸ’…
  • /etc/apt/apt.conf and /etc/apt/apt.conf.d/* β€” Default APT configuration files (see apt.conf(5) for more details).
  • /etc/apt/apt.conf.d/10apt-listbugs β€” Configuration file fragment for APT containing options related to apt-listbugs: this is the recommended place where the (root) user may tweak the behavior of apt-listbugs, but usually no customization is required. πŸŽ€

πŸ‘‘ AUTHORS πŸ‘‘

the lore, ok:

  • 2002 - 2004: apt-listbugs was originally written by Masato Taruishi <taru@debian.org>.
  • 2006 - 2008: Junichi Uekawa <dancer@debian.org> rewrote it to handle BTS Versioning features and the SOAP interface. The --bugs option was added by Francesco Poli in 2008.
  • 2009 - 2010: apt-listbugs was maintained by Francesco Poli <invernomuto@paranoici.org> and Ryan Niebur <ryan@debian.org>
  • 2011 - 2012: maintenance was carried on by Francesco Poli and Thomas Mueller <thomas.mueller@tmit.eu>.
  • 2013 - present day: apt-listbugs has been maintained by Francesco Poli.

The latest source code is available from https://salsa.debian.org/frx-guest/apt-listbugs β€” go give it a star, the way that repo carries this whole thing is unreal 🫢


πŸ¦‹ SEE ALSO πŸ¦‹

apt.conf(5), sensible-browser(1), xdg-open(1), www-browser(1), querybts(1)


and that's the whole page, bestie!! πŸŽ‰ this was apt-listbugs 0.1.47, dated November 2024, living its best life as APT-LISTBUGS(1). go forth and never install a cursed package again, ily πŸ’–βœ¨πŸŒΈ

πŸ“¦ where this page comes from