Stop generating plain-text INSTALL instructions.

Up to now, our distribution tarballs have included a plain-text form
of the installation.sgml chapter.  The rationale for that was that a
recipient might not have either ready internet access or HTML-viewing
tools; a theory that seems downright quaint today.  Maintaining the
ability to generate this file is not without cost, because it puts
special requirements on installation.sgml that are often overlooked.
Moreover, we are moving in the direction of making our distribution
tarballs be pure git snapshots for traceability/reproducibility
reasons; including generated files doesn't fit into that plan.
Hence, let's just drop INSTALL and remove the infrastructure for
generating it.  The top-level README will now recommend visiting
our website to see the installation instructions.  As a useful
side-effect, we can get rid of README.git which has provoked
confusion.

Discussion: https://postgr.es/m/20231220114927.faccqqprmuyrzdip@alap3.anarazel.de
Discussion: https://postgr.es/m/e07408d9-e5f2-d9fd-5672-f53354e9305e@eisentraut.org
This commit is contained in:
Tom Lane 2023-12-22 13:32:15 -05:00
parent 8ddf9c1dc0
commit e2b73f4a4d
13 changed files with 32 additions and 421 deletions

View File

@ -109,10 +109,7 @@ distdir:
|| cp "$(top_srcdir)/$$file" "$(distdir)/$$file"; \
fi || exit; \
done
$(MAKE) -C $(distdir)/doc/src/sgml/ INSTALL
cp $(distdir)/doc/src/sgml/INSTALL $(distdir)/
$(MAKE) -C $(distdir) distclean
rm -f $(distdir)/README.git
distcheck: dist
rm -rf $(dummy)

View File

@ -17,13 +17,7 @@ all:
all check install installdirs installcheck installcheck-parallel uninstall clean distclean maintainer-clean dist distcheck world check-world install-world installcheck-world:
@if [ ! -f GNUmakefile ] ; then \
if [ -f INSTALL ] ; then \
INSTRUCTIONS="INSTALL"; \
else \
INSTRUCTIONS="README.git"; \
fi; \
echo "You need to run the 'configure' program first. See the file"; \
echo "'$$INSTRUCTIONS' for installation instructions, or visit: " ; \
echo "You need to run the 'configure' program first. Please see"; \
echo "<https://www.postgresql.org/docs/devel/installation.html>" ; \
false ; \
fi

15
README
View File

@ -9,14 +9,13 @@ that supports an extended subset of the SQL standard, including
transactions, foreign keys, subqueries, triggers, user-defined types
and functions. This distribution also contains C language bindings.
See the file INSTALL for instructions on how to build and install
PostgreSQL. That file also lists supported operating systems and
hardware platforms and contains information regarding any other
software packages that are required to build or run the PostgreSQL
system. Copyright and license information can be found in the
file COPYRIGHT. A comprehensive documentation set is included in this
distribution; it can be read as described in the installation
instructions.
Copyright and license information can be found in the file COPYRIGHT.
General documentation about this version of PostgreSQL can be found at:
https://www.postgresql.org/docs/devel/
In particular, information about building PostgreSQL from the source
code can be found at:
https://www.postgresql.org/docs/devel/installation.html
The latest version of this software, and related software, may be
obtained at https://www.postgresql.org/download/. For more information

View File

@ -1,14 +0,0 @@
(This file does not appear in release tarballs.)
In a release or snapshot tarball of PostgreSQL, a documentation file named
INSTALL will appear in this directory. However, this file is not stored in
git and so will not be present if you are using a git checkout.
If you are using a git checkout, you can view the most recent installation
instructions at:
https://www.postgresql.org/docs/devel/installation.html
Users compiling from git will also need compatible versions of Bison, Flex,
and Perl, as discussed in the install documentation. These programs are not
needed when using a tarball, since the files they are needed to build are
already present in the tarball. (On Windows, however, you need Perl anyway.)

View File

@ -6,7 +6,6 @@
/man7/
/man-stamp
# Other popular build targets
/INSTALL
/postgres-US.pdf
/postgres-A4.pdf
/postgres.html
@ -21,7 +20,5 @@
/wait_event_types.sgml
# Assorted byproducts from building the above
/postgres-full.xml
/INSTALL.html
/INSTALL.xml
/postgres-US.fo
/postgres-A4.fo

View File

@ -36,6 +36,8 @@ ifndef FOP
FOP = $(missing) fop
endif
PANDOC = pandoc
XMLINCLUDE = --path . --path $(srcdir)
ifdef XMLLINT
@ -113,25 +115,6 @@ wait_event_types.sgml: $(top_srcdir)/src/backend/utils/activity/wait_event_names
targets-meson.sgml: targets-meson.txt $(srcdir)/generate-targets-meson.pl
$(PERL) $(srcdir)/generate-targets-meson.pl $^ > $@
##
## Generation of some text files.
##
ICONV = iconv
PANDOC = pandoc
INSTALL: % : %.html
$(PANDOC) -t plain -o $@.tmp $<
$(ICONV) -f utf8 -t us-ascii//TRANSLIT $@.tmp > $@
rm $@.tmp
INSTALL.html: %.html : stylesheet-text.xsl %.xml
$(XMLLINT) --noout --valid $*.xml
$(XSLTPROC) $(XSLTPROCFLAGS) $(XSLTPROC_HTML_FLAGS) $^ >$@
INSTALL.xml: standalone-profile.xsl standalone-install.xml postgres-full.xml
$(XSLTPROC) $(XMLINCLUDE) $(XSLTPROCFLAGS) --xinclude $(wordlist 1,2,$^) >$@
##
## HTML
@ -284,13 +267,9 @@ check-tabs:
# keeping the dependencies satisfied.
.SECONDARY: $(GENERATED_SGML)
.SECONDARY: postgres-full.xml
.SECONDARY: INSTALL.html INSTALL.xml
.SECONDARY: postgres-A4.fo postgres-US.fo
clean:
# text --- these are shipped, but not in this directory
rm -f INSTALL
rm -f INSTALL.html INSTALL.xml
# single-page output
rm -f postgres.html postgres.txt
# print

View File

@ -393,28 +393,6 @@ LOGLEVEL=-Dorg.apache.commons.logging.simplelog.defaultlog=WARN
</para>
</sect2>
<sect2 id="docguide-build-plain-text">
<title>Plain Text Files</title>
<para>
The installation instructions are also distributed as plain text,
in case they are needed in a situation where better reading tools
are not available. The <filename>INSTALL</filename> file
corresponds to <xref linkend="installation"/>, with some minor
changes to account for the different context. To recreate the
file, change to the directory <filename>doc/src/sgml</filename>
and enter <userinput>make INSTALL</userinput>. Building text output
requires <productname>Pandoc</productname> version 1.13 or newer as an
additional build tool.
</para>
<para>
In the past, the release notes and regression testing instructions
were also distributed as plain text, but this practice has been
discontinued.
</para>
</sect2>
<sect2 id="docguide-build-syntax-check">
<title>Syntax Check</title>

View File

@ -1,12 +1,4 @@
<!-- doc/src/sgml/installation.sgml -->
<!--
The standalone version has some portions that are different from the version
that is integrated into the full documentation set, in particular as regards
links, so that INSTALL.html can be created without links to the main
documentation. See standalone-profile.xsl for details.
-->
<chapter id="installation">
<title>Installation from Source Code</title>
@ -15,7 +7,6 @@ documentation. See standalone-profile.xsl for details.
<primary>installation</primary>
</indexterm>
<!-- See also the version of this text in standalone-install.xml -->
<para>
This chapter describes the installation of
<productname>PostgreSQL</productname> using the source code
@ -942,9 +933,7 @@ build-postgresql:
<listitem>
<para>
Build with support for <productname>LLVM</productname> based
<acronym>JIT</acronym> compilation<phrase
condition="standalone-ignore"> (see <xref
linkend="jit"/>)</phrase>. This
<acronym>JIT</acronym> compilation (see <xref linkend="jit"/>). This
requires the <productname>LLVM</productname> library to be installed.
The minimum required version of <productname>LLVM</productname> is
currently 3.9.
@ -1085,8 +1074,8 @@ build-postgresql:
for <application>systemd</application><indexterm><primary>systemd</primary></indexterm>
service notifications. This improves integration if the server
is started under <application>systemd</application> but has no impact
otherwise<phrase condition="standalone-ignore">; see <xref linkend="server-start"/> for more
information</phrase>. <application>libsystemd</application> and the
otherwise; see <xref linkend="server-start"/> for more
information. <application>libsystemd</application> and the
associated header files need to be installed to use this option.
</para>
</listitem>
@ -1224,9 +1213,8 @@ build-postgresql:
<para>
Build without support for the
<productname>ICU</productname><indexterm><primary>ICU</primary></indexterm>
library, disabling the use of ICU collation features<phrase
condition="standalone-ignore"> (see <xref
linkend="collation"/>)</phrase>.
library, disabling the use of ICU collation features (see <xref
linkend="collation"/>).
</para>
</listitem>
</varlistentry>
@ -1583,7 +1571,7 @@ build-postgresql:
<para>
Enable tests using the Perl TAP tools. This requires a Perl
installation and the Perl module <literal>IPC::Run</literal>.
<phrase condition="standalone-ignore">See <xref linkend="regress-tap"/> for more information.</phrase>
See <xref linkend="regress-tap"/> for more information.
</para>
</listitem>
</varlistentry>
@ -1610,8 +1598,8 @@ build-postgresql:
code coverage testing instrumentation. When run, they
generate files in the build directory with code coverage
metrics.
<phrase condition="standalone-ignore">See <xref linkend="regress-coverage"/>
for more information.</phrase> This option is for use only with GCC
See <xref linkend="regress-coverage"/>
for more information. This option is for use only with GCC
and when doing development work.
</para>
</listitem>
@ -1639,8 +1627,7 @@ build-postgresql:
</indexterm>
Compiles <productname>PostgreSQL</productname> with support for the
dynamic tracing tool DTrace.
<phrase condition="standalone-ignore">See <xref linkend="dynamic-trace"/>
for more information.</phrase>
See <xref linkend="dynamic-trace"/> for more information.
</para>
<para>
@ -2406,9 +2393,8 @@ ninja install
<para>
Build with support for the
<productname>ICU</productname><indexterm><primary>ICU</primary></indexterm>
library, enabling use of ICU collation features<phrase
condition="standalone-ignore"> (see <xref
linkend="collation"/>)</phrase>. Defaults to auto and requires the
library, enabling use of ICU collation features (see <xref
linkend="collation"/>). Defaults to auto and requires the
<productname>ICU4C</productname> package to be installed. The minimum
required version of <productname>ICU4C</productname> is currently 4.2.
</para>
@ -2420,8 +2406,7 @@ ninja install
<listitem>
<para>
Build with support for <productname>LLVM</productname> based
<acronym>JIT</acronym> compilation<phrase
condition="standalone-ignore"> (see <xref linkend="jit"/>)</phrase>.
<acronym>JIT</acronym> compilation (see <xref linkend="jit"/>).
This requires the <productname>LLVM</productname> library to be
installed. The minimum required version of
<productname>LLVM</productname> is currently 3.9. Disabled by
@ -2546,8 +2531,8 @@ ninja install
<application>systemd</application><indexterm><primary>systemd</primary></indexterm>
service notifications. This improves integration if the server is
started under <application>systemd</application> but has no impact
otherwise<phrase condition="standalone-ignore">; see <xref
linkend="server-start"/> for more information</phrase>. Defaults to
otherwise; see <xref
linkend="server-start"/> for more information. Defaults to
auto. <application>libsystemd</application> and the associated header
files need to be installed to use this option.
</para>
@ -3122,8 +3107,7 @@ ninja install
<para>
Enable tests using the Perl TAP tools. Defaults to auto and requires
a Perl installation and the Perl module <literal>IPC::Run</literal>.
<phrase condition="standalone-ignore">See <xref
linkend="regress-tap"/> for more information.</phrase>
See <xref linkend="regress-tap"/> for more information.
</para>
</listitem>
</varlistentry>
@ -3147,8 +3131,8 @@ ninja install
code coverage testing instrumentation. When run, they
generate files in the build directory with code coverage
metrics.
<phrase condition="standalone-ignore">See <xref linkend="regress-coverage"/>
for more information.</phrase> This option is for use only with GCC
See <xref linkend="regress-coverage"/>
for more information. This option is for use only with GCC
and when doing development work.
</para>
</listitem>
@ -3163,8 +3147,7 @@ ninja install
</indexterm>
Enabling this compiles <productname>PostgreSQL</productname> with support for the
dynamic tracing tool DTrace.
<phrase condition="standalone-ignore">See <xref linkend="dynamic-trace"/>
for more information.</phrase>
See <xref linkend="dynamic-trace"/> for more information.
</para>
<para>

View File

@ -182,43 +182,6 @@ if docs_dep.found()
endif
#
# INSTALL in html, text
#
if docs_dep.found()
# Depend on postgres_full_xml, so validity errors are raised in one place,
# and so dependencies don't need to be re-specified.
install_xml = custom_target('INSTALL.xml',
input: ['standalone-profile.xsl', 'standalone-install.xml'],
output: 'INSTALL.xml',
depfile: 'INSTALL.xml.d',
depends: postgres_full_xml,
command: [xsltproc, '-o', '@OUTPUT@', xsltproc_flags, '--xinclude', '@INPUT@'],
build_by_default: false,
)
install_html = custom_target('INSTALL.html',
input: ['stylesheet-text.xsl', install_xml],
output: 'INSTALL.html',
depfile: 'INSTALL.html.d',
command: [xsltproc, '-o', '@OUTPUT@', xsltproc_html_flags, '@INPUT@'],
build_by_default: false,
)
alldocs += install_html
if pandoc.found()
# XXX: Makefile does an iconv translit here, but unclear why?
install = custom_target('INSTALL',
input: [install_html],
output: 'INSTALL',
command: [pandoc, '-t', 'plain', '-o', '@OUTPUT@', '@INPUT@'],
build_by_default: false,
)
alldocs += install
endif
endif
#
# Man pages
#

View File

@ -1,170 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!--
This file contains the stand-alone installation instructions that end up in
the INSTALL file. This document stitches together parts of the installation
instructions in the main documentation with some material that only appears
in the stand-alone version.
-->
<article id="installation">
<title><productname>PostgreSQL</productname> Installation from Source Code</title>
<!-- This text replaces the introductory text of installation.sgml -->
<para>
This document describes the installation of
<productname>PostgreSQL</productname> using this source code distribution.
</para>
<para>
If you are building <productname>PostgreSQL</productname> for Microsoft
Windows, read this document if you intend to build with MinGW or Cygwin;
but if you intend to build with Microsoft's <productname>Visual
C++</productname>, see the main documentation instead.
</para>
<xi:include href="postgres-full.xml" xpointer="install-requirements" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="postgres-full.xml" xpointer="install-make" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="postgres-full.xml" xpointer="install-post" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<sect1 id="install-getting-started">
<title>Getting Started</title>
<para>
The following is a quick summary of how to get <productname>PostgreSQL</productname> up and
running once installed. The main documentation contains more information.
</para>
<procedure>
<step>
<para>
Create a user account for the <productname>PostgreSQL</productname>
server. This is the user the server will run as. For production
use you should create a separate, unprivileged account
(<quote>postgres</quote> is commonly used). If you do not have root
access or just want to play around, your own user account is
enough, but running the server as root is a security risk and
will not work.
<screen><userinput>adduser postgres</userinput></screen>
</para>
</step>
<step>
<para>
Create a database installation with the <command>initdb</command>
command. To run <command>initdb</command> you must be logged in to your
<productname>PostgreSQL</productname> server account. It will not work as
root.
<screen>root# <userinput>mkdir /usr/local/pgsql/data</userinput>
root# <userinput>chown postgres /usr/local/pgsql/data</userinput>
root# <userinput>su - postgres</userinput>
postgres$ <userinput>/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data</userinput></screen>
</para>
<para>
The <option>-D</option> option specifies the location where the data
will be stored. You can use any path you want, it does not have
to be under the installation directory. Just make sure that the
server account can write to the directory (or create it, if it
doesn't already exist) before starting <command>initdb</command>, as
illustrated here.
</para>
</step>
<step>
<para>
At this point, if you did not use the <command>initdb</command> <literal>-A</literal>
option, you might want to modify <filename>pg_hba.conf</filename> to control
local access to the server before you start it. The default is to
trust all local users.
</para>
</step>
<step>
<para>
The previous <command>initdb</command> step should have told you how to
start up the database server. Do so now. The command should look
something like:
<programlisting>/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start</programlisting>
</para>
<para>
To stop a server running in the background you can type:
<programlisting>/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data stop</programlisting>
</para>
</step>
<step>
<para>
Create a database:
<screen><userinput>/usr/local/pgsql/bin/createdb testdb</userinput></screen>
Then enter:
<screen><userinput>/usr/local/pgsql/bin/psql testdb</userinput></screen>
to connect to that database. At the prompt you can enter SQL
commands and start experimenting.
</para>
</step>
</procedure>
</sect1>
<sect1 id="install-whatnow">
<title>What Now?</title>
<para>
<itemizedlist>
<listitem>
<para>
The <productname>PostgreSQL</productname> distribution contains a
comprehensive documentation set, which you should read sometime.
After installation, the documentation can be accessed by
pointing your browser to
<filename>/usr/local/pgsql/doc/html/index.html</filename>, unless you
changed the installation directories.
</para>
<para>
The first few chapters of the main documentation are the Tutorial,
which should be your first reading if you are completely new to
<acronym>SQL</acronym> databases. If you are familiar with database
concepts then you want to proceed with part on server
administration, which contains information about how to set up
the database server, database users, and authentication.
</para>
</listitem>
<listitem>
<para>
Usually, you will want to modify your computer so that it will
automatically start the database server whenever it boots. Some
suggestions for this are in the documentation.
</para>
</listitem>
<listitem>
<para>
Run the regression tests against the installed server (using
<command>make installcheck</command>). If you didn't run the
tests before installation, you should definitely do it now. This
is also explained in the documentation.
</para>
</listitem>
<listitem>
<para>
By default, <productname>PostgreSQL</productname> is configured to run on
minimal hardware. This allows it to start up with almost any
hardware configuration. The default configuration is, however,
not designed for optimum performance. To achieve optimum
performance, several server parameters must be adjusted, the two
most common being <varname>shared_buffers</varname> and
<varname>work_mem</varname>.
Other parameters mentioned in the documentation also affect
performance.
</para>
</listitem>
</itemizedlist>
</para>
</sect1>
<xi:include href="postgres.sgml" xpointer="supported-platforms" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="postgres.sgml" xpointer="installation-platform-notes" xmlns:xi="http://www.w3.org/2001/XInclude"/>
</article>

View File

@ -1,97 +0,0 @@
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<!--
This is a preprocessing layer to convert the installation instructions into a
variant without links and references to the main documentation.
- To omit something in the stand-alone INSTALL file, give the element a
condition="standalone-ignore" attribute.
- If there is no element that exactly covers what you want to change, wrap it
in a <phrase> element, which otherwise does nothing.
- Otherwise, write a custom rule below.
-->
<xsl:output
doctype-public="-//OASIS//DTD DocBook XML V4.5//EN"
doctype-system="http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"/>
<!-- copy everything by default -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<!-- particular conversions -->
<xsl:template match="*[@condition='standalone-ignore']">
</xsl:template>
<xsl:template match="phrase/text()['chapter']">
<xsl:text>document</xsl:text>
</xsl:template>
<xsl:template match="phrase[@id='install-ldap-links']">
<xsl:text>the documentation about client authentication and libpq</xsl:text>
</xsl:template>
<xsl:template match="xref[@linkend='collation']">
<xsl:text>the documentation</xsl:text>
</xsl:template>
<xsl:template match="xref[@linkend='docguide-toolsets']">
<xsl:text>the main documentation's appendix on documentation</xsl:text>
</xsl:template>
<xsl:template match="xref[@linkend='dynamic-trace']">
<xsl:text>the documentation</xsl:text>
</xsl:template>
<xsl:template match="xref[@linkend='install-meson']">
<xsl:text>the documentation</xsl:text>
</xsl:template>
<xsl:template match="xref[@linkend='guc-default-toast-compression']">
<xsl:text>the configuration parameter default_toast_compression</xsl:text>
</xsl:template>
<xsl:template match="xref[@linkend='guc-wal-compression']">
<xsl:text>the configuration parameter wal_compression</xsl:text>
</xsl:template>
<xsl:template match="xref[@linkend='locale-providers']">
<xsl:text>the documentation</xsl:text>
</xsl:template>
<xsl:template match="xref[@linkend='plpython-python23']">
<xsl:text>the </xsl:text><application>PL/Python</application><xsl:text> documentation</xsl:text>
</xsl:template>
<xsl:template match="xref[@linkend='regress']">
<xsl:text>the file </xsl:text>
<filename>src/test/regress/README</filename>
<xsl:text> and the documentation</xsl:text>
</xsl:template>
<xsl:template match="xref[@linkend='upgrading']">
<xsl:text>the documentation</xsl:text>
</xsl:template>
<xsl:template match="xref[@linkend='uuid-ossp']">
<xsl:text>uuid-ossp</xsl:text>
</xsl:template>
<xsl:template match="xref[@linkend='xml2']">
<xsl:text>xml2</xsl:text>
</xsl:template>
<xsl:template match="xref[@linkend='sepgsql']">
<xsl:text>sepgsql</xsl:text>
</xsl:template>
</xsl:stylesheet>

View File

@ -6,5 +6,4 @@ To build from this directory use 'make all; make install'. libperl
must have been built as a shared library, which is usually not the
case in standard installations.
Consult the PostgreSQL User's Guide and the INSTALL file in the
top-level directory of the source distribution for more information.
Consult the PostgreSQL User's Guide for more information.

View File

@ -107,6 +107,9 @@ Starting a New Development Cycle
placeholder), "git rm" the previous one, and update release.sgml and
filelist.sgml to match.
* In the newly-made branch, replace "devel" with the branch's major version
number in the URLs appearing in the top-level README and Makefile files.
* In the newly-made branch, change src/backend/nodes/gen_node_support.pl
to enforce ABI stability of the NodeTag list (see "ARM ABI STABILITY
CHECK HERE" therein).