Hey Guillem. On Fri, 2024-02-16 at 05:26 +0100, Guillem Jover wrote: > > Thanks!
Well rather: thank you, for your constant efforts to DPKG and the whole ecosystem. > > At least it seems to make it impossible to definitely find out > > whether a package > > is not installed (respectively not existant). > > Exactly. Maybe it would also be worth to elaborate on: 1 The requested query failed either fully or partially, due to no file or package being found (except for --control-path, --control-list and --control-show were such errors are fatal). My understanding would have been, that e.g. when searching for a package, 1 would in practise mean that it doesn't exist at all (when looking from APT’s PoV) respectively is in the state 'not-installed'. So I guess for end-users it might be helpful to be told that, i.e. that these two things (non-existing from APT) and non-installed are the same from DPKG’s PoV, and would trigger 1. Also perhaps notifying somewhere that 'not-installed' will never really show up anywhere as a printed query result. > This is used for field names, be them real or virtual, so erroring > out > on fields that do not exist would seem bad. But there's the > distinction between the real fields and virtual ones, where the > latter > always contain a colon. So I guess I could make the latter, at least > warn if they do not exist. My main concern with making them errors, > is > that this would break backwards and/or forwards compatibility, where > you could not use a new or renamed field with old or new releases. Warnings are at last difficult to use when scripting. And btw: it also succeeds if there's no colon, e.g.: $ dpkg-query --showformat='${foobar}' --show 2>/dev/null ; echo $? 0 Thanks, Chris. PS: In the dpkg-query manpage, there's: Desired action: u = Unknown i = Install h = Hold r = Remove p = Purge Package status: n = Not-installed c = Config-files H = Half-installed U = Unpacked F = Half-configured W = Triggers-awaiting t = Triggers-pending i = Installed Error flags: <empty> = (none) R = Reinst-required I think, when these are actually printed, the full names are all lowercase, i.e. installed not Installed ... might perhaps make sense to align that?