I downloaded the latest RPM-3.0.5-9.6x, and this package breaks several things. This version of RPM calls "brc-compress" as part of the process of building a build-rooted binary RPM. The brc-compress script converts any man pages or info files in the package into compressed versions. This sounds like a good idea, but it breaks some things: * A package like ssh-1.2.30, which explicitly lists its manual pages in the spec file %files list, can't be built anymore. This is because the file list no longer matches what the build produces. In other words, the file list says there is a /usr/man/man1/ssh.1, but what's really there is /usr/man/man1/ssh.1.gz. RPM refuses to build the binary RPM because of this. I suppose you could ultimately fix this by making RPM know about brp-compress and account for it when looking at file lists, but that seems a little ugly. * Manual pages may sometimes explicitly load another manual page. For example, latin1.7 loads iso-8859-1.7, by including the text ".so iso-8859-1.7" in the latin1.7 man page. This stops working when iso-8859-1.7 is replaced by iso-8859-1.7.gz. You can't fix this one easily - unless you want to redefine how the long-established nroff/troff/groff macros work. In the end, I think you have to turn off brp-compress.
rpm is shipped with the same default configuration that is used to build Red Hat packages. You can either 0) Use rpm-3.0.4 or earlier to build. 1) Add a * at the end of each man page listed in the ssh %files 2) Change your build configuration. For example, mkdir -p /etc/rpm echo "%__spec_install_post /bin/true" >> /etc/rpm/macros will turn off all Red Hat build policies. FWIW, man already handles .so diversions correctly for compressed files.
I have to disagree with several of your points: 1. Rpm is NOT shipped with the same default configuration that was used to build RedHat. The latest update to RPM changes the default configuration from what it was on Red Hat 6.2. Previously, it did not do brc-compress, now it does. 2. You suggest going back to rpm 3.0.4 to work around the problem, but I was required to update to 3.0.5 in order to install the Red Hat 6.2 updates, which are necessary to keep my system secure. 3. As you suggest, I can add a "*" to each man page listed in the files section of the ssh spec file. But this is a spec file that has always worked in the past. How many other people will have to make the same modification to a known-good spec file, to make it work again? How many other packages will be affected similarly? This change to RPM is not documented in any way that I can find, so each person will end up wasting time tracking this down like I did. 4. As you suggest, I can change the build configuration by modifying __spec_install_post. Of course, that loses the other, benign, things that the default __spec_install_post does. And again, this is not documented anywhere, so for all I know it will break again on rpm 3.0.6. 5. I can only conclude that you didn't actually try typing "man latin1". Yes, the man program itself knows to gunzip a compressed man page before handing it to nroff. But a man page that contains a .so diversion is being interpreted by nroff directly. Nroff doesn't handle gzipped files, so a .so diversion fails if the file it points to is gzipped. I'll admit that man pages that make use of this are relatively rare, and probably should be migrated to just use symbolic links where possible. Nevertheless, this *is* something that brc-compress breaks.
*** Bug 17773 has been marked as a duplicate of this bug. ***