Обсуждение: BUG #19404: manpages are missing in 18.x source.tar.gz
The following bug has been logged on the website: Bug reference: 19404 Logged by: Marcel Hofstetter Email address: hofstetter@jomasoft.ch PostgreSQL version: 18.2 Operating system: Solaris Description: -bash-5.1$ ls -l postgresql-18.2/doc/src/sgml/man1/. postgresql-18.2/doc/src/sgml/man1/.: No such file or directory the files are there in 17.x -bash-5.1$ ls -l postgresql-17.8/doc/src/sgml/man1/. | wc -l 38
PG Bug reporting form <noreply@postgresql.org> writes:
> -bash-5.1$ ls -l postgresql-18.2/doc/src/sgml/man1/.
> postgresql-18.2/doc/src/sgml/man1/.: No such file or directory
This is an intentional change in our distribution process in v17
and later: the tarballs are now just images of our git repo,
without any derived files.
> the files are there in 17.x
Not unless you built them locally. They are certainly not in
my copy of that tarball:
$ tar tvfj postgresql-17.8.tar.bz2 | grep /man
-rw-rw-r-- root/root 23923 2026-02-09 16:51 postgresql-17.8/doc/src/sgml/manage-ag.sgml
regards, tom lane
Am 12.02.2026 um 18:25 schrieb Tom Lane: > PG Bug reporting form <noreply@postgresql.org> writes: >> -bash-5.1$ ls -l postgresql-18.2/doc/src/sgml/man1/. >> postgresql-18.2/doc/src/sgml/man1/.: No such file or directory > > This is an intentional change in our distribution process in v17 > and later: the tarballs are now just images of our git repo, > without any derived files. > >> the files are there in 17.x > > Not unless you built them locally. They are certainly not in > my copy of that tarball: > > $ tar tvfj postgresql-17.8.tar.bz2 | grep /man > -rw-rw-r-- root/root 23923 2026-02-09 16:51 postgresql-17.8/doc/src/sgml/manage-ag.sgml > gmake man fails with v18 -bash-5.1$ gmake man gmake -C doc man gmake[1]: Entering directory '/export/home/marcel/source/postgresql-18.2/doc' gmake -C src man gmake[2]: Entering directory '/export/home/marcel/source/postgresql-18.2/doc/src' gmake -C sgml man gmake[3]: Entering directory '/export/home/marcel/source/postgresql-18.2/doc/src/sgml' for file in man1/*.1; do sed -e '/^\.TH/s/"7"/"5sql"/' -e 's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man1/`basename $file` || exit; done Can't open man1/*.1 gmake[3]: *** [Makefile:250: fixed-man-stamp] Error 1 gmake[3]: Leaving directory '/export/home/marcel/source/postgresql-18.2/doc/src/sgml' gmake[2]: *** [Makefile:8: man] Error 2 gmake[2]: Leaving directory '/export/home/marcel/source/postgresql-18.2/doc/src' gmake[1]: *** [Makefile:16: man] Error 2 gmake[1]: Leaving directory '/export/home/marcel/source/postgresql-18.2/doc' gmake: *** [GNUmakefile:27: man] Error 2 but works well with v17
Marcel Hofstetter <hofstetter@jomasoft.ch> writes:
> gmake man fails with v18
> -bash-5.1$ gmake man
> gmake -C doc man
> gmake[1]: Entering directory
> '/export/home/marcel/source/postgresql-18.2/doc'
> gmake -C src man
> gmake[2]: Entering directory
> '/export/home/marcel/source/postgresql-18.2/doc/src'
> gmake -C sgml man
> gmake[3]: Entering directory
> '/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
> for file in man1/*.1; do sed -e '/^\.TH/s/"7"/"5sql"/' -e
> 's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
> man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man1/`basename
> $file` || exit; done
> Can't open man1/*.1
> gmake[3]: *** [Makefile:250: fixed-man-stamp] Error 1
> gmake[3]: Leaving directory
> '/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
> gmake[2]: *** [Makefile:8: man] Error 2
> gmake[2]: Leaving directory
> '/export/home/marcel/source/postgresql-18.2/doc/src'
> gmake[1]: *** [Makefile:16: man] Error 2
> gmake[1]: Leaving directory '/export/home/marcel/source/postgresql-18.2/doc'
> gmake: *** [GNUmakefile:27: man] Error 2
Are you working with somebody's modified version of the PG
distribution? The commands generated by "make man" look nothing
like that here:
$ make man
make -C doc man
make[1]: Entering directory '/home/postgres/REL_18/pgsql/doc'
make -C src man
make[2]: Entering directory '/home/postgres/REL_18/pgsql/doc/src'
make -C sgml man
make[3]: Entering directory '/home/postgres/REL_18/pgsql/doc/src/sgml'
{ \
echo "<!ENTITY version \"18.2\">"; \
echo "<!ENTITY majorversion \"18\">"; \
} > version.sgml
'/usr/bin/perl' ./mk_feature_tables.pl YES ../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt> features-supported.sgml
'/usr/bin/perl' ./mk_feature_tables.pl NO ../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt> features-unsupported.sgml
'/usr/bin/perl' ./generate-errcodes-table.pl ../../../src/backend/utils/errcodes.txt > errcodes-table.sgml
'/usr/bin/perl' ./generate-keywords-table.pl . > keywords-table.sgml
'/usr/bin/perl' ./generate-targets-meson.pl targets-meson.txt generate-targets-meson.pl > targets-meson.sgml
'/usr/bin/perl' ../../../src/backend/utils/activity/generate-wait_event_types.pl --docs
../../../src/backend/utils/activity/wait_event_names.txt
/usr/bin/xmllint --nonet --path . --path . --output postgres-full.xml --noent --valid postgres.sgml
/usr/bin/xsltproc --nonet --path . --path . --stringparam pg.version '18.2' stylesheet-man.xsl postgres-full.xml
touch man-stamp
make[3]: Leaving directory '/home/postgres/REL_18/pgsql/doc/src/sgml'
make[2]: Leaving directory '/home/postgres/REL_18/pgsql/doc/src'
make[1]: Leaving directory '/home/postgres/REL_18/pgsql/doc'
It's that way for quite a few versions before v18, too.
regards, tom lane
>
> Are you working with somebody's modified version of the PG
> distribution?
No. source download from yesterday.
I use the follow docbook.
-bash-5.1$ export
XML_CATALOG_FILES="/export/home/marcel/docbook-xsl-ns-1.79.1/catalog.xml
/etc/xml/catalog"
A clean build fails as follows
-bash-5.1$ gmake man
gmake -C doc man
gmake[1]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc'
gmake -C src man
gmake[2]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake -C sgml man
gmake[3]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
{ \
echo "<!ENTITY version \"18.2\">"; \
echo "<!ENTITY majorversion \"18\">"; \
} > version.sgml
'/usr/bin/perl' ./mk_feature_tables.pl YES
../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt > features-supported.sgml
'/usr/bin/perl' ./mk_feature_tables.pl NO
../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt > features-unsupported.sgml
'/usr/bin/perl' ./generate-errcodes-table.pl
../../../src/backend/utils/errcodes.txt > errcodes-table.sgml
'/usr/bin/perl' ./generate-keywords-table.pl . > keywords-table.sgml
'/usr/bin/perl' ./generate-targets-meson.pl targets-meson.txt
generate-targets-meson.pl > targets-meson.sgml
'/usr/bin/perl'
../../../src/backend/utils/activity/generate-wait_event_types.pl --docs
../../../src/backend/utils/activity/wait_event_names.txt
/usr/bin/xmllint --nonet --path . --path . --output postgres-full.xml
--noent --valid postgres.sgml
/usr/bin/xsltproc --nonet --path . --path . --stringparam pg.version
'18.2' stylesheet-man.xsl postgres-full.xml
Note: namesp. add : added namespace before processing
PostgreSQL 18.2 Documentation
Element div in namespace '' encountered in td, but no template matches.
Element div in namespace '' encountered in td, but no template matches.
Element div in namespace '' encountered in td, but no template matches.
Element acronym in namespace '' encountered in td, but no template matches.
touch man-stamp
for file in man1/*.1; do sed -e '/^\.TH/s/"7"/"5sql"/' -e
's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man1/`basename
$file` || exit; done
Can't open man1/*.1
gmake[3]: *** [Makefile:250: fixed-man-stamp] Error 1
gmake[3]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
gmake[2]: *** [Makefile:8: man] Error 2
gmake[2]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake[1]: *** [Makefile:16: man] Error 2
gmake[1]: Leaving directory '/export/home/marcel/source/postgresql-18.2/doc'
gmake: *** [GNUmakefile:27: man] Error 2
It works well with the old default Solaris docbook
-bash-5.1$ ls -l /usr/share/sgml/docbook/ | grep xsl-style
lrwxrwxrwx 1 root root 22 May 27 2024 xsl-stylesheets ->
xsl-stylesheets-1.75.2
drwxr-xr-x 23 root sys 27 May 27 2024 xsl-stylesheets-1.75.2
-bash-5.1$ unset XML_CATALOG_FILES
-bash-5.1$ gmake man
gmake -C doc man
gmake[1]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc'
gmake -C src man
gmake[2]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake -C sgml man
gmake[3]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
{ \
echo "<!ENTITY version \"18.2\">"; \
echo "<!ENTITY majorversion \"18\">"; \
} > version.sgml
'/usr/bin/perl' ./mk_feature_tables.pl YES
../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt > features-supported.sgml
'/usr/bin/perl' ./mk_feature_tables.pl NO
../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt > features-unsupported.sgml
'/usr/bin/perl' ./generate-errcodes-table.pl
../../../src/backend/utils/errcodes.txt > errcodes-table.sgml
'/usr/bin/perl' ./generate-keywords-table.pl . > keywords-table.sgml
'/usr/bin/perl' ./generate-targets-meson.pl targets-meson.txt
generate-targets-meson.pl > targets-meson.sgml
'/usr/bin/perl'
../../../src/backend/utils/activity/generate-wait_event_types.pl --docs
../../../src/backend/utils/activity/wait_event_names.txt
/usr/bin/xmllint --nonet --path . --path . --output postgres-full.xml
--noent --valid postgres.sgml
/usr/bin/xsltproc --nonet --path . --path . --stringparam pg.version
'18.2' stylesheet-man.xsl postgres-full.xml
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
Element sup in namespace '' encountered in td, but no template matches.
touch man-stamp
for file in man1/*.1; do sed -e '/^\.TH/s/"7"/"5sql"/' -e
's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man1/`basename
$file` || exit; done
for file in man3/*.3; do sed -e '/^\.TH/s/"7"/"5sql"/' -e
's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man3/`basename
$file` || exit; done
for file in man7/*.7; do sed -e '/^\.TH/s/"7"/"5sql"/' -e
's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g' $file >fixedman/man5/`basename
$file | sed s/\.7$/.5sql/` || exit; done
gmake[3]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
gmake[2]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake[1]: Leaving directory '/export/home/marcel/source/postgresql-18.2/doc'
Marcel Hofstetter <hofstetter@jomasoft.ch> writes:
> A clean build fails as follows
I realized that the bit that's failing for you only runs when
sqlmansect is not 7 (so I guess you're on Solaris?). However,
it's still fine here when I do
$ make man sqlmansect=5sql
...
/usr/bin/xmllint --nonet --path . --path . --output postgres-full.xml --noent --valid postgres.sgml
/usr/bin/xsltproc --nonet --path . --path . --stringparam pg.version '19devel' stylesheet-man.xsl postgres-full.xml
touch man-stamp
for file in man1/*.1; do sed -e '/^\.TH/s/"7"/"5sql"/' -e 's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g'$file >fixedman/man1/`basename $file` || exit; done
for file in man3/*.3; do sed -e '/^\.TH/s/"7"/"5sql"/' -e 's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g'$file >fixedman/man3/`basename $file` || exit; done
for file in man7/*.7; do sed -e '/^\.TH/s/"7"/"5sql"/' -e 's/\\fR(7)/\\fR(5)/g' -e '1s/^\.so man7/.so
man5/g;1s/^\(\.so.*\)\.7$/\1.5sql/g'$file >fixedman/man5/`basename $file | sed s/\.7$/.5sql/` || exit; done
make[3]: Leaving directory '/home/postgres/pgsql/doc/src/sgml'
I find this part of your output suspicious though:
> Note: namesp. add : added namespace before processing
> PostgreSQL 18.2 Documentation
> Element div in namespace '' encountered in td, but no template matches.
> Element div in namespace '' encountered in td, but no template matches.
> Element div in namespace '' encountered in td, but no template matches.
> Element acronym in namespace '' encountered in td, but no template matches.
I don't see any of that here, which suggests that you're using old
docbook files. Maybe they are old enough to just fail to emit the
man files entirely? What I've got is not exactly new either,
since this is RHEL8:
$ rpm -qa | grep docbook
docbook-dtds-1.0-69.el8.noarch
docbook-style-xsl-1.79.2-9.el8.noarch
docbook-style-dsssl-1.79-25.el8.noarch
> It works well with the old default Solaris docbook
Interesting. Debugging docbook problems is beyond my realm I fear.
regards, tom lane
Am 13.02.2026 um 17:21 schrieb Tom Lane:
> Marcel Hofstetter <hofstetter@jomasoft.ch> writes:
>> A clean build fails as follows
>
> I realized that the bit that's failing for you only runs when
> sqlmansect is not 7 (so I guess you're on Solaris?). However,
> it's still fine here when I do
>
> $ make man sqlmansect=5sql
Yes, I'm on Solaris
gmake man sqlmansect=5sql makes no difference here.
this one works:
gmake man sqlmansect=7
gmake -C doc man
gmake[1]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc'
gmake -C src man
gmake[2]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake -C sgml man
gmake[3]: Entering directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
{ \
echo "<!ENTITY version \"18.2\">"; \
echo "<!ENTITY majorversion \"18\">"; \
} > version.sgml
'/usr/bin/perl' ./mk_feature_tables.pl YES
../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt > features-supported.sgml
'/usr/bin/perl' ./mk_feature_tables.pl NO
../../../src/backend/catalog/sql_feature_packages.txt
../../../src/backend/catalog/sql_features.txt > features-unsupported.sgml
'/usr/bin/perl' ./generate-errcodes-table.pl
../../../src/backend/utils/errcodes.txt > errcodes-table.sgml
'/usr/bin/perl' ./generate-keywords-table.pl . > keywords-table.sgml
'/usr/bin/perl' ./generate-targets-meson.pl targets-meson.txt
generate-targets-meson.pl > targets-meson.sgml
'/usr/bin/perl'
../../../src/backend/utils/activity/generate-wait_event_types.pl --docs
../../../src/backend/utils/activity/wait_event_names.txt
/usr/bin/xmllint --nonet --path . --path . --output postgres-full.xml
--noent --valid postgres.sgml
/usr/bin/xsltproc --nonet --path . --path . --stringparam pg.version
'18.2' stylesheet-man.xsl postgres-full.xml
Note: namesp. add : added namespace before processing
PostgreSQL 18.2 Documentation
Element div in namespace '' encountered in td, but no template matches.
Element div in namespace '' encountered in td, but no template matches.
Element div in namespace '' encountered in td, but no template matches.
Element acronym in namespace '' encountered in td, but no template matches.
touch man-stamp
gmake[3]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src/sgml'
gmake[2]: Leaving directory
'/export/home/marcel/source/postgresql-18.2/doc/src'
gmake[1]: Leaving directory '/export/home/marcel/source/postgresql-18.2/doc'
>> PostgreSQL 18.2 Documentation
>> Element div in namespace '' encountered in td, but no template matches.
>> Element div in namespace '' encountered in td, but no template matches.
>> Element div in namespace '' encountered in td, but no template matches.
>> Element acronym in namespace '' encountered in td, but no template matches.
>
> I don't see any of that here, which suggests that you're using old
> docbook files. Maybe they are old enough to just fail to emit the
> man files entirely? What I've got is not exactly new either,
> since this is RHEL8:
>
> $ rpm -qa | grep docbook
> docbook-dtds-1.0-69.el8.noarch
> docbook-style-xsl-1.79.2-9.el8.noarch
> docbook-style-dsssl-1.79-25.el8.noarch
It fails with docbook-xsl-ns-1.79.1 from
https://sourceforge.net/projects/docbook/files/docbook-xsl-ns/1.79.1/
>> It works well with the old default Solaris docbook
>
> Interesting. Debugging docbook problems is beyond my realm I fear.
I think you can close this "bug".
Workaround to use the very old Solaris docbook is fine for me.
The produced manpages look ok.
Thanks,
Marcel
On 13.02.26 17:44, Marcel Hofstetter wrote: >> $ rpm -qa | grep docbook >> docbook-dtds-1.0-69.el8.noarch >> docbook-style-xsl-1.79.2-9.el8.noarch >> docbook-style-dsssl-1.79-25.el8.noarch > > It fails with docbook-xsl-ns-1.79.1 from > https://sourceforge.net/projects/docbook/files/docbook-xsl-ns/1.79.1/ You should use the non-"ns" variant. The "ns" one is not suitable for the PostgreSQL documentation.
Hi Peter Thanks a lot for this feedback. Now using the non-ns variant there are no warnings anymore and building the docs takes 3 minutes. it was 40 minutes with ns-variant. Best regards, Marcel Am 18.02.2026 um 14:41 schrieb Peter Eisentraut: > On 13.02.26 17:44, Marcel Hofstetter wrote: >>> $ rpm -qa | grep docbook >>> docbook-dtds-1.0-69.el8.noarch >>> docbook-style-xsl-1.79.2-9.el8.noarch >>> docbook-style-dsssl-1.79-25.el8.noarch >> >> It fails with docbook-xsl-ns-1.79.1 from >> https://sourceforge.net/projects/docbook/files/docbook-xsl-ns/1.79.1/ > > You should use the non-"ns" variant. The "ns" one is not suitable for > the PostgreSQL documentation. >