From Bugzilla Helper: User-Agent: Mozilla/4.77 [en] (X11; U; Linux 2.2.19-7.0.1 i686) Description of problem: Per Redhard Security Advisory RHSA-2001:069-02, I installed the man-1.5i-4 update. It caused the apropos and whatis commands to stop working properly. They stopped listing anything unless at least one hit was found in /var/cache/man or /usr/lib, but _excluding_ hits that should have been found in $manpath. Scripts /usr/bin/whatis and /usr/bin/apropos are almost identical and were both broken by this update on the line 71. In the previous man package (man-1.5h1), line 71 was: for d in $manpath /usr/lib In man-1.5i-4 (and also in Rawhide man-1.5i-6), the intent was to add /var/cache/man, but in doing so $manpath was inadvertently dropped, leaving line 71 as: for d in /var/cache/man /usr/lib The correct line 71 should be: for d in /var/cache/man $manpath /usr/lib How reproducible: Always Steps to Reproduce: 1. Verify that man page xmbind is not in /var/cache/man. 2. Execute command: apropos xmbind Actual Results: Nothing is listed Expected Results: A line should have been shown for the xmbind man page.
Looks to me like apropos and whatis are fine, but makewhatis is broken both in the man-1.5i-4 rpm and the man-1.5i-8 off rawhide. Here's the output of makewhatis -w -v: about to enter /usr/local/man adding ./java.1 adding ./keytool.1 adding ./rmid.1 adding ./rmiregistry.1 adding ./tnameserv.1 about to enter /usr/share/man skipping /usr/share/man - we did it already about to enter /usr/kerberos/man skipping /usr/kerberos/man - we did it already about to enter /usr/X11R6/man skipping /usr/X11R6/man - we did it already about to enter /usr/lib/perl5/man skipping /usr/lib/perl5/man - we did it already about to enter /usr/man skipping /usr/man - we did it already about to enter /usr/local/man about to enter /usr/share/man about to enter /usr/kerberos/man about to enter /usr/X11R6/man about to enter /usr/lib/perl5/man about to enter /usr/man Everything after the first directory in the manpath is skipped. It looks like the offending line in makewhatis is 146: if [ -s /var/cache/man/whatis -a $pages = man -a x$update = x ]; then After the first entry in manpath is evaluated, this will always return true and the other entries are skipped. This line was formally: if [ -s ${mandir}/whatis -a $pages = man -a x$update = x ]; then This is intended to detect if a given man dir needs to be updated in the whatis table, but with the move to /var/cache/man/whatis breaks things badly. I don't see an easy fix for this. There is not a good way to detect if a given man directory needs to be updated in the whatis database with a single database file. IMHO, The whole idea of a single whatis database in /var/cache/man/whatis is a bad one. It not only causes problems with knowing what to update, but I can no longer set the default man path on a system to exclude man directories that I don't want the average user to see. In fact I would like to see an sman directory where the man pages for stuff from sbin would go. I don't see any reason for the average user to see the man pages for things they shouldn't be running anyway.
Oops. Yes. I retract my statements about whatis and apropos. I didn't look into things deeply enough to realize one would have to do a fresh makewhatis run because of the new whatis caching. Please consider _my_ bug report closed. I won't mark the this report itself as closed myself (leaving that to the judgement of Redhat) because of the subsequent comments by benj, which effectively turn this into a different bug report.
seems to be fixed with the next to-be released errata.
Fixed in 1.5i2-*