feat(info): show the install reason and drop the indentation
N? and `info PKG` now print three lines, none indented:
PKG: <description>
reason: explicitly installed | installed as a dependency | unknown | not installed
required by: <installed dependents, comma separated> | nothing
The reason comes from a new <be>_reason backend function: apt-mark
showauto / showmanual (dpkg decides for a package in neither list), the
Install Reason of pacman -Qi, dnf repoquery --installed %{reason} (dnf4
and dnf5 words) and the Installed line of zypper info (rpm plus libzypp's
AutoInstalled when zypper is locked). A row whose old version is "-" is
not installed and the backend is not asked. The "(installed)" qualifier
moves to --help, README and DESIGN.
The rpm E2E fixture and e2e_reset now also mark su-dummy-a and su-dummy-c
as user-installed on dnf, which records plain rpm installs as "unknown",
so 1? and 2? show both reasons on all 12 distros. The verified commands
are recorded in discovery/{apt,pacman,rpm}.md.
This commit is contained in:
1 parent
1354db6c39
commit
71d7f87aa3
21 files changed
+589
-48
No files matched your search
@@ -568,3 +568,20 @@ pman bugs (verified; relevant if the tool reuses `/etc/pacman.d/ignorepkg`):
|
||||
`pacman.conf` actually includes the file in `[options]` (silently ineffective, section 6).
|
||||
* The tool should read the effective list with `pacman-conf IgnorePkg` and write with anchored matches
|
||||
(`grep -qxF "IgnorePkg = $pkg"`, `sed -i "/^IgnorePkg = ${pkg}\$/d"` after escaping).
|
||||
|
||||
## 13. Install reason (`N?` / `info`): `Install Reason` of `pacman -Qi`
|
||||
|
||||
Verified 2026-10-10 on archlinux:latest (pacman 7.1.0), fixture `FIXTURE_ISOLATE=1 FIXTURE_ORPHAN=1 FIXTURE_SYNC=1`, `COLUMNS=0 LC_ALL=C pacman -Qi -- PKG`:
|
||||
|
||||
```
|
||||
su-dummy-a Install Reason : Explicitly installed rc 0
|
||||
su-dummy-b Install Reason : Installed as a dependency for another package rc 0 (-D --asdeps)
|
||||
su-dummy-c Install Reason : Explicitly installed rc 0
|
||||
su-dummy-orphan Install Reason : Installed as a dependency for another package rc 0 (-U --asdeps)
|
||||
no-such-pkg error: package 'no-such-pkg' was not found rc 1 (also for a package only in a sync db)
|
||||
```
|
||||
|
||||
* `pacman -D --asexplicit su-dummy-b` / `--asdeps` flip the line at once. Works as `nobody` and with `db.lck` present (-Qi takes no lock). One line, no wrapping with `COLUMNS=0`.
|
||||
* `pacman -Qi sh` answers for the provider (`bash`), like the description and `Required By` already do.
|
||||
* Mapping: `Explicitly installed` -> explicit, `Installed as a dependency for another package` -> dependency, -Qi failing -> not installed, anything else (or no such line) -> unknown.
|
||||
* Fixture: `su-dummy-b` is installed `--asdeps`, `a`/`c` explicitly; `e2e_reset` re-applies both after its `pacman -U`. No change needed.
|
||||
Reference in new issue
Block a user