Package: man-db
Version: 2.9.4-2
Severity: normal
Tags: upstream
X-Debbugs-Cc: debbug.man...@sideload.33mail.com

Searching the whole DB for a whole word requires using --regex and
then using word boundaries. So to find pages that reference the TZ
environment variable, this *should* work (in principle):

  $ man -aK --regex '\<TZ\>'

It appears to work because it finds many pages. But it misses the
“tree” package (/usr/share/man/man1/tree.1.gz).

  $ zgrep 'TZ' /usr/share/man/man1/tree.1.gz
  \fBTZ\fP                Timezone for timefmt output, see \fBstrftime\fP(3).

As you can see, the nroff language intereferes with matching the
regular expression as “TZ” is surrounded by code. Users of man-db
obviously do not intend to have their regex matched against nroff
code. Thus operations are being performed in the wrong order. The
regular expression matching needs to happen on nroff-decoded text.

  $ zcat /usr/share/man/man1/tree.1.gz | nroff -man | grep '\<TZ\>'
       TZ        Timezone for timefmt output, see strftime(3).

* Workaround *

One approach:

  $ find /usr/share/man/ -iname \*gz -exec zcat {} + | nroff -man | grep 
'\<'"$whole_word"'\>'

In rare situations such as environment variable searches, case
sensitivity can be leveraged:

  $ man -aKI --regex TZ

-- System Information:
Debian Release: 11.5
  APT prefers oldstable-updates
  APT policy: (990, 'oldstable-updates'), (990, 'oldstable-security'), (990, 
'testing'), (990, 'oldstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 5.10.0-19-amd64 (SMP w/2 CPU threads)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages man-db depends on:
ii  bsdextrautils          2.36.1-8+deb11u1
ii  debconf [debconf-2.0]  1.5.77
ii  dpkg                   1.20.12
ii  groff-base             1.22.4-6
ii  libc6                  2.31-13+deb11u5
ii  libgdbm6               1.19-2
ii  libpipeline1           1.5.3-1
ii  libseccomp2            2.5.1-1+deb11u1
ii  zlib1g                 1:1.2.11.dfsg-2+deb11u2

man-db recommends no packages.

Versions of packages man-db suggests:
ii  apparmor                          2.13.6-10
ii  elinks [www-browser]              0.13.2-1+b1
ii  firefox-esr [www-browser]         102.6.0esr-1~deb11u1
pn  groff                             <none>
ii  less                              551-2
ii  lynx [www-browser]                2.9.0dev.6-3~deb11u1
ii  ungoogled-chromium [www-browser]  90.0.4430.212-1.sid1
ii  w3m [www-browser]                 0.5.3+git20210102-6

-- debconf information:
  man-db/install-setuid: false
  man-db/auto-update: true

Reply via email to