`man -H` table images missing

For whatever reason, man -H doesn’t format the simple tables used in many man pages into HTML, it renders them as images in the page. That’s fine with me, but sometime recently the images stopped appearing and instead I get stuff like:

Table 1. IPv4/IPv6/Inet address family hooks

!Image grohtml-2567742.png

As a guess, I’d saying this is probably some sort of timing issue with the deletion of the (very temporary) /tmp directory man outputs to – the page loads but before the images can be they’re gone.

This is on an x86-64 F37 system, mandb 2.10.2. The browser is chrome; the former has not been updated lately but the latter was in mid November, and the problem may have actually existed for a number of months without me noticing (I don’t use -H that often but it can be very useful). I have dug around a bit but to no avail (nb. searching online for “man missing images” – not recommended).

Note that Fedora 37 will be EOL before the end of December and it is suggested that you upgrade to either F38 or F39 before that happens.

From the man page for man ( man man ) I see this.

       -H[browser], --html[=browser]
              This option will cause groff to produce HTML output, and will display that output in a web browser.  The choice of
              browser is determined by the optional browser argument if one is provided, by the $BROWSER  environment  variable,
              or by a compile-time default if that is unset (usually lynx).  This option implies -t, and will only work with GNU

It seems that man, with that option, tends to use a compile time default for display unless the user has a value set for $BROWSER or specifically names the browser to be used.

On my system that variable is empty.

I have it set to google-chrome-stable (there are some other things that use it, I think).

That may or may not be correct.
Note the below:

$ ls -l /usr/bin/google-chrome*
lrwxrwxrwx. 1 root root 31 May  9  2023 /usr/bin/google-chrome -> /etc/alternatives/google-chrome
lrwxrwxrwx. 1 root root 32 Nov 27 15:02 /usr/bin/google-chrome-stable -> /opt/google/chrome/google-chrome

Those all end up at the same place, a shell script in /opt/google/chrome/ that uses the invocation name (shell $0 parameter), which will be either google-chrome or google-chrome-stable depending on the symlink used, and sets that as the zero param/exec name via bash’s exec -a to invoke the real executable, which, either way, is /opt/google/chrome/chrome.

It does some other stuff to the environment in the middle of course, but you’d have to read the chrome source to find out what the difference is between invoking it as -stable or not.

Hmmm – sheepish grin – I’m thinking in fact this was not working a long time ago. That post is from 2016, and I remember going through some shenanigans getting it to happen probably even before that, but whatever I did then eventually broke (man2html looks familiar) and I forgot about it for a bit then noticed man -H was working on a stock system, probably sans tables but I had not noticed until now.

The reason I thought something different was because I sometimes print big man pages out as pdf’s, case in point here is man nft, and my copy looks exactly like the output from man -H except the tables are there, and they aren’t images, they’re HTML tables.

When I checked the url in the page header of the printed pdf it wasn’t a local file, it was the one from the netfilter site :unamused: