N?? and `show PKG` now print the installed record in the package
manager's own key/value layout, after one line explaining the format:
# lines starting with > come from the upstream candidate: a differing
value, or a field the installed record lacks
After each field whose candidate value differs comes the candidate's
line prefixed with "> "; fields only the candidate has are appended the
same way; installed-only fields stay; identical fields print once.
Multi-line values (pacman Optional Deps, dnf Description, RFC-822
continuation lines) are compared as blocks and a differing candidate
block gets "> " on every line. A package that is not installed shows the
candidate alone ("# not installed: this is the upstream candidate").
Merged where the backend gives comparable records for both sides:
- pacman: -Qi vs -Si REPO/PKG, REPO = the first repository -Sl lists
- apt: dpkg-query -s (Status, Conffiles, the long description; richer
than apt-cache show PKG=<installed>, which gives the archive record
when that version is still listed) vs apt-cache show --no-all-versions;
Description-xx pairs with Description and a one-line candidate
Description equal to the installed first line counts as identical
(the archives ship the long text in Translation files)
- dnf: info --installed vs info --upgrades (--available lists other
architectures first and nothing for an up-to-date package); not
installed: --available; dnf5's differently padded keys are re-padded
zypper keeps `zypper info --requires`: rpm -qi and zypper info share
almost no keys and zypper cannot print the installed record itself.
No candidate, or not exactly one record per side, keeps the old output.
Formats verified in containers and recorded in discovery/*.md. Unit
tests replay recorded pacman, apt, dnf4 and dnf5 records; the E2E suite
checks 2?? on su-dummy-b on all 12 distros.
291 lines
9.0 KiB
Plaintext
291 lines
9.0 KiB
Plaintext
Name : su-dummy-a
|
|
Version : 1.0-1
|
|
Description : Skeptical-updater dummy package A
|
|
Architecture : any
|
|
URL : https://example.invalid/su-dummy
|
|
Licenses : custom
|
|
Groups : None
|
|
Provides : None
|
|
Depends On : su-dummy-b
|
|
Optional Deps : None
|
|
Required By : None
|
|
Optional For : None
|
|
Conflicts With : None
|
|
Replaces : None
|
|
Installed Size : 4.00 B
|
|
Packager : su-fixture <su-fixture@example.invalid>
|
|
Build Date : Tue Nov 14 22:13:20 2023
|
|
Install Date : Fri Oct 9 08:00:00 2026
|
|
Install Reason : Explicitly installed
|
|
Install Script : No
|
|
Validated By : None
|
|
|
|
Name : su-dummy-b
|
|
Version : 1.0-1
|
|
Description : Skeptical-updater dummy package B (dependency of A)
|
|
Architecture : any
|
|
URL : https://example.invalid/su-dummy
|
|
Licenses : custom
|
|
Groups : None
|
|
Provides : None
|
|
Depends On : None
|
|
Optional Deps : None
|
|
Required By : su-dummy-a
|
|
Optional For : None
|
|
Conflicts With : None
|
|
Replaces : None
|
|
Installed Size : 4.00 B
|
|
Packager : su-fixture <su-fixture@example.invalid>
|
|
Build Date : Tue Nov 14 22:13:20 2023
|
|
Install Date : Fri Oct 9 08:00:00 2026
|
|
Install Reason : Installed as a dependency for another package
|
|
Install Script : No
|
|
Validated By : None
|
|
|
|
Name : su-dummy-c
|
|
Version : 1.0-1
|
|
Description : Skeptical-updater dummy package C (independent)
|
|
Architecture : any
|
|
URL : https://example.invalid/su-dummy
|
|
Licenses : custom
|
|
Groups : None
|
|
Provides : None
|
|
Depends On : None
|
|
Optional Deps : None
|
|
Required By : None
|
|
Optional For : None
|
|
Conflicts With : None
|
|
Replaces : None
|
|
Installed Size : 4.00 B
|
|
Packager : su-fixture <su-fixture@example.invalid>
|
|
Build Date : Tue Nov 14 22:13:20 2023
|
|
Install Date : Fri Oct 9 08:00:00 2026
|
|
Install Reason : Explicitly installed
|
|
Install Script : No
|
|
Validated By : None
|
|
|
|
Name : bash
|
|
Version : 5.3.20-1
|
|
Description : The GNU Bourne Again shell
|
|
Architecture : any
|
|
URL : https://example.invalid/su-dummy
|
|
Licenses : custom
|
|
Groups : None
|
|
Provides : sh
|
|
Depends On : readline libreadline.so=8-64 glibc ncurses libncursesw.so=6-64
|
|
Optional Deps : None
|
|
Required By : None
|
|
Optional For : None
|
|
Conflicts With : None
|
|
Replaces : None
|
|
Installed Size : 4.00 B
|
|
Packager : su-fixture <su-fixture@example.invalid>
|
|
Build Date : Tue Nov 14 22:13:20 2023
|
|
Install Date : Fri Oct 9 08:00:00 2026
|
|
Install Reason : Explicitly installed
|
|
Install Script : No
|
|
Validated By : None
|
|
|
|
Name : readline
|
|
Version : 8.3.001-1
|
|
Description : GNU readline library
|
|
Architecture : any
|
|
URL : https://example.invalid/su-dummy
|
|
Licenses : custom
|
|
Groups : None
|
|
Provides : libhistory.so=8-64 libreadline.so=8-64
|
|
Depends On : glibc ncurses libncursesw.so=6-64
|
|
Optional Deps : None
|
|
Required By : bash
|
|
Optional For : None
|
|
Conflicts With : None
|
|
Replaces : None
|
|
Installed Size : 4.00 B
|
|
Packager : su-fixture <su-fixture@example.invalid>
|
|
Build Date : Tue Nov 14 22:13:20 2023
|
|
Install Date : Fri Oct 9 08:00:00 2026
|
|
Install Reason : Explicitly installed
|
|
Install Script : No
|
|
Validated By : None
|
|
|
|
Name : ncurses
|
|
Version : 6.5-4
|
|
Description : System V Release 4.0 curses emulation library
|
|
Architecture : any
|
|
URL : https://example.invalid/su-dummy
|
|
Licenses : custom
|
|
Groups : None
|
|
Provides : libncurses++w.so=6-64 libncursesw.so=6-64
|
|
Depends On : glibc gcc-libs
|
|
Optional Deps : None
|
|
Required By : bash readline
|
|
Optional For : None
|
|
Conflicts With : None
|
|
Replaces : None
|
|
Installed Size : 4.00 B
|
|
Packager : su-fixture <su-fixture@example.invalid>
|
|
Build Date : Tue Nov 14 22:13:20 2023
|
|
Install Date : Fri Oct 9 08:00:00 2026
|
|
Install Reason : Explicitly installed
|
|
Install Script : No
|
|
Validated By : None
|
|
|
|
Name : gcc-libs
|
|
Version : 15.2.1-1
|
|
Description : Runtime libraries shipped by GCC
|
|
Architecture : any
|
|
URL : https://example.invalid/su-dummy
|
|
Licenses : custom
|
|
Groups : None
|
|
Provides : None
|
|
Depends On : glibc>=2.27
|
|
Optional Deps : None
|
|
Required By : ncurses
|
|
Optional For : None
|
|
Conflicts With : None
|
|
Replaces : None
|
|
Installed Size : 4.00 B
|
|
Packager : su-fixture <su-fixture@example.invalid>
|
|
Build Date : Tue Nov 14 22:13:20 2023
|
|
Install Date : Fri Oct 9 08:00:00 2026
|
|
Install Reason : Explicitly installed
|
|
Install Script : No
|
|
Validated By : None
|
|
|
|
Name : glibc
|
|
Version : 2.42-2
|
|
Description : GNU C Library
|
|
Architecture : x86_64
|
|
URL : https://www.gnu.org/software/libc
|
|
Licenses : GPL-2.0-or-later LGPL-2.1-or-later
|
|
Groups : None
|
|
Provides : None
|
|
Depends On : linux-api-headers>=4.10 tzdata filesystem
|
|
Optional Deps : gd: for memusagestat
|
|
perl: for mtrace
|
|
Required By : bash gcc-libs ncurses
|
|
readline
|
|
Optional For : None
|
|
Conflicts With : None
|
|
Replaces : None
|
|
Installed Size : 48.71 MiB
|
|
Packager : Frederik Schwan <freswa@archlinux.org>
|
|
Build Date : Sun Sep 7 10:00:00 2026
|
|
Install Date : Fri Oct 9 08:00:00 2026
|
|
Install Reason : Installed as a dependency for another package
|
|
Install Script : Yes
|
|
Validated By : Signature
|
|
|
|
Name : linux-api-headers
|
|
Version : 6.16-1
|
|
Description : Kernel headers sanitized for use in userspace
|
|
Architecture : any
|
|
URL : https://example.invalid/su-dummy
|
|
Licenses : custom
|
|
Groups : None
|
|
Provides : None
|
|
Depends On : None
|
|
Optional Deps : None
|
|
Required By : glibc
|
|
Optional For : None
|
|
Conflicts With : None
|
|
Replaces : None
|
|
Installed Size : 4.00 B
|
|
Packager : su-fixture <su-fixture@example.invalid>
|
|
Build Date : Tue Nov 14 22:13:20 2023
|
|
Install Date : Fri Oct 9 08:00:00 2026
|
|
Install Reason : Explicitly installed
|
|
Install Script : No
|
|
Validated By : None
|
|
|
|
Name : tzdata
|
|
Version : 2026a-1
|
|
Description : Sources for time zone and daylight saving time data
|
|
Architecture : any
|
|
URL : https://example.invalid/su-dummy
|
|
Licenses : custom
|
|
Groups : None
|
|
Provides : None
|
|
Depends On : None
|
|
Optional Deps : None
|
|
Required By : glibc
|
|
Optional For : None
|
|
Conflicts With : None
|
|
Replaces : None
|
|
Installed Size : 4.00 B
|
|
Packager : su-fixture <su-fixture@example.invalid>
|
|
Build Date : Tue Nov 14 22:13:20 2023
|
|
Install Date : Fri Oct 9 08:00:00 2026
|
|
Install Reason : Explicitly installed
|
|
Install Script : No
|
|
Validated By : None
|
|
|
|
Name : filesystem
|
|
Version : 2025.10.12-1
|
|
Description : Base Arch Linux files
|
|
Architecture : any
|
|
URL : https://example.invalid/su-dummy
|
|
Licenses : custom
|
|
Groups : None
|
|
Provides : None
|
|
Depends On : iana-etc
|
|
Optional Deps : None
|
|
Required By : glibc
|
|
Optional For : None
|
|
Conflicts With : None
|
|
Replaces : None
|
|
Installed Size : 4.00 B
|
|
Packager : su-fixture <su-fixture@example.invalid>
|
|
Build Date : Tue Nov 14 22:13:20 2023
|
|
Install Date : Fri Oct 9 08:00:00 2026
|
|
Install Reason : Explicitly installed
|
|
Install Script : No
|
|
Validated By : None
|
|
|
|
Name : iana-etc
|
|
Version : 20260920-1
|
|
Description : /etc/protocols and /etc/services provided by IANA
|
|
Architecture : any
|
|
URL : https://example.invalid/su-dummy
|
|
Licenses : custom
|
|
Groups : None
|
|
Provides : None
|
|
Depends On : None
|
|
Optional Deps : None
|
|
Required By : filesystem
|
|
Optional For : None
|
|
Conflicts With : None
|
|
Replaces : None
|
|
Installed Size : 4.00 B
|
|
Packager : su-fixture <su-fixture@example.invalid>
|
|
Build Date : Tue Nov 14 22:13:20 2023
|
|
Install Date : Fri Oct 9 08:00:00 2026
|
|
Install Reason : Explicitly installed
|
|
Install Script : No
|
|
Validated By : None
|
|
|
|
|
|
Name : glib2
|
|
Version : 2.88.3-1
|
|
Description : Low level core library
|
|
Architecture : x86_64
|
|
URL : https://gitlab.gnome.org/GNOME/glib
|
|
Licenses : LGPL-2.1-or-later
|
|
Groups : None
|
|
Provides : libglib-2.0.so=0-64 libgio-2.0.so=0-64 libgirepository-2.0.so=0-64 libgmodule-2.0.so=0-64 libgobject-2.0.so=0-64 libgthread-2.0.so=0-64
|
|
Depends On : bash glibc libffi libsysprof-capture pcre2 util-linux-libs zlib libffi.so=8-64 libmount.so=1-64
|
|
Optional Deps : dconf: GSettings storage backend
|
|
glib2-devel: development tools
|
|
gvfs: most gio functionality
|
|
Required By : libsecret pinentry
|
|
Optional For : None
|
|
Conflicts With : None
|
|
Replaces : None
|
|
Installed Size : 37.89 MiB
|
|
Packager : Jan Alexander Steffens (heftig) <heftig@archlinux.org>
|
|
Build Date : Wed Jul 29 14:57:16 2026
|
|
Install Date : Sun Oct 4 00:00:00 2026
|
|
Install Reason : Installed as a dependency for another package
|
|
Install Script : No
|
|
Validated By : Signature
|