PostgreSQL

PostgreSQL编译源码安装步骤解释及源码和安装目标路径说明

一源码路径说明

下述是1个PostgreSQL 11.11版本的源代码解压之后的路径:

[postgres@localhost postgresql-11.11]$ pwd
/home/postgres/source/postgresql-11.11
[postgres@localhost postgresql-11.11]$ ll
总用量 748
-rw-r--r--.  1 postgres postgres    490 2月   9 2021 aclocal.m4
drwxrwxr-x.  2 postgres postgres   4096 2月   9 2021 config
-rwxr-xr-x.  1 postgres postgres 565153 2月   9 2021 configure
-rw-r--r--.  1 postgres postgres  85918 2月   9 2021 configure.in
drwxrwxr-x. 56 postgres postgres   4096 2月   9 2021 contrib
-rw-r--r--.  1 postgres postgres   1192 2月   9 2021 COPYRIGHT
drwxrwxr-x.  3 postgres postgres    107 2月   9 2021 doc
-rw-r--r--.  1 postgres postgres   3937 2月   9 2021 GNUmakefile.in
-rw-r--r--.  1 postgres postgres    284 2月   9 2021 HISTORY
-rw-r--r--.  1 postgres postgres  74894 2月   9 2021 INSTALL
-rw-r--r--.  1 postgres postgres   1665 2月   9 2021 Makefile
-rw-r--r--.  1 postgres postgres   1212 2月   9 2021 README
drwxrwxr-x. 16 postgres postgres   4096 2月   9 2021 src
[postgres@localhost postgresql-11.11]$ find ./ -maxdepth 1 -type d
./
./contrib
./src
./config
./doc
[postgres@localhost postgresql-11.11]$
1 src:包含源代码的路径。同时包含有其它不同平台的makefiles。

src: This directory has most of the core code, namely, code for the backend processes, optimizer, storage, client utilities (such as psql) and code to take care of replication, and so on. It also contains the makefiles for various distributions. For example, we have the files Makefile.hpux, Makefile. linux, Makefile.openbsd, and Makefile.sco under src/makefile.

比如,我们可以从该路径下看到:

[postgres@localhost postgresql-11.11]$ ll src/
总用量 96
drwxrwxr-x. 28 postgres postgres  4096 2月   9 2021 backend
drwxrwxr-x. 20 postgres postgres  4096 2月   9 2021 bin
drwxrwxr-x.  3 postgres postgres  4096 2月   9 2021 common
-rw-r--r--.  1 postgres postgres   173 2月   9 2021 DEVELOPERS
drwxrwxr-x.  2 postgres postgres   172 2月   9 2021 fe_utils
drwxrwxr-x. 31 postgres postgres  4096 2月   9 2021 include
drwxrwxr-x.  4 postgres postgres    47 2月   9 2021 interfaces
-rw-r--r--.  1 postgres postgres  1842 2月   9 2021 Makefile
-rw-r--r--.  1 postgres postgres 33356 2月   9 2021 Makefile.global.in
drwxrwxr-x.  2 postgres postgres   263 2月   9 2021 makefiles
-rw-r--r--.  1 postgres postgres 16493 2月   9 2021 Makefile.shlib
-rw-r--r--.  1 postgres postgres  5916 2月   9 2021 nls-global.mk
drwxrwxr-x.  6 postgres postgres    78 2月   9 2021 pl
drwxrwxr-x.  2 postgres postgres  4096 2月   9 2021 port
drwxrwxr-x.  2 postgres postgres   142 2月   9 2021 template
drwxrwxr-x. 16 postgres postgres   246 2月   9 2021 test
drwxrwxr-x.  4 postgres postgres   217 2月   9 2021 timezone
drwxrwxr-x. 10 postgres postgres  4096 2月   9 2021 tools
drwxrwxr-x.  2 postgres postgres   194 2月   9 2021 tutorial
[postgres@localhost postgresql-11.11]$ ll src/makefiles/
总用量 60
-rw-r--r--. 1 postgres postgres   329 2月   9 2021 Makefile
-rw-r--r--. 1 postgres postgres  1159 2月   9 2021 Makefile.aix
-rw-r--r--. 1 postgres postgres  1294 2月   9 2021 Makefile.cygwin
-rw-r--r--. 1 postgres postgres   401 2月   9 2021 Makefile.darwin
-rw-r--r--. 1 postgres postgres   775 2月   9 2021 Makefile.freebsd
-rw-r--r--. 1 postgres postgres  1305 2月   9 2021 Makefile.hpux
-rw-r--r--. 1 postgres postgres   361 2月   9 2021 Makefile.linux
-rw-r--r--. 1 postgres postgres   484 2月   9 2021 Makefile.netbsd
-rw-r--r--. 1 postgres postgres   451 2月   9 2021 Makefile.openbsd
-rw-r--r--. 1 postgres postgres   419 2月   9 2021 Makefile.solaris
-rw-r--r--. 1 postgres postgres  2364 2月   9 2021 Makefile.win32
-rw-r--r--. 1 postgres postgres 13547 2月   9 2021 pgxs.mk
[postgres@localhost postgresql-11.11]$

的确,在src/makefiles路径下包含有当前版本的源代码支持的不同平台的makefile。

2 doc路径,包含源代码的文档

这个就比较少关注,只是存放的是源码的相关文档说明。

  • doc: This directory has the source for documentation written in DocBook, DocBook being an application of Standard Generalized Markup Language (SGML). It’s possible to generate documentation in an HTML format, PDF format, and a few other formats.
[postgres@localhost postgresql-11.11]$ ll doc/
总用量 20
-rw-r--r--. 1 postgres postgres 1575 2月   9 2021 bug.template
-rw-r--r--. 1 postgres postgres  163 2月   9 2021 KNOWN_BUGS
-rw-r--r--. 1 postgres postgres  469 2月   9 2021 Makefile
-rw-r--r--. 1 postgres postgres  163 2月   9 2021 MISSING_FEATURES
drwxrwxr-x. 3 postgres postgres   34 2月   9 2021 src
-rw-r--r--. 1 postgres postgres   76 2月   9 2021 TODO
[postgres@localhost postgresql-11.11]$ ll doc/src/
总用量 16
-rw-r--r--. 1 postgres postgres  209 2月   9 2021 Makefile
drwxrwxr-x. 7 postgres postgres 8192 2月   9 2021 sgml
[postgres@localhost postgresql-11.11]$
3 contrib路径,存放extension的路径
  • contrib: This directory is where many extensions are available. These are add-on modules that do not form part of the core installation, but can be installed as needed. For example, those who have to connect to other PostgreSQL databases can install the Foreign Data Wrapper extension: postgres_fdw. For those who want to access the contents of a file on the server from a table, there is the file_fdw extension.

如:

[postgres@localhost postgresql-11.11]$ ll contrib/
总用量 84
drwxrwxr-x. 4 postgres postgres  199 2月   9 2021 adminpack
drwxrwxr-x. 4 postgres postgres  166 2月   9 2021 amcheck
drwxrwxr-x. 2 postgres postgres   42 2月   9 2021 auth_delay
drwxrwxr-x. 2 postgres postgres   44 2月   9 2021 auto_explain
drwxrwxr-x. 5 postgres postgres  239 2月   9 2021 bloom
drwxrwxr-x. 4 postgres postgres  268 2月   9 2021 btree_gin
drwxrwxr-x. 5 postgres postgres 4096 2月   9 2021 btree_gist
drwxrwxr-x. 4 postgres postgres 4096 2月   9 2021 citext
-rw-r--r--. 1 postgres postgres   85 2月   9 2021 contrib-global.mk
drwxrwxr-x. 5 postgres postgres 4096 2月   9 2021 cube
drwxrwxr-x. 6 postgres postgres  269 2月   9 2021 dblink
...
drwxrwxr-x. 4 postgres postgres  206 2月   9 2021 uuid-ossp
drwxrwxr-x. 2 postgres postgres   58 2月   9 2021 vacuumlo
drwxrwxr-x. 4 postgres postgres  201 2月   9 2021 xml2
[postgres@localhost postgresql-11.11]$
4 config路径,包含执行config的相关辅助信息
  • config: This directory contains a few macros that help you configure and compile the package.
[postgres@localhost postgresql-11.11]$ ll config
总用量 248
-rw-r--r--. 1 postgres postgres  3418 2月   9 2021 ac_func_accept_argtypes.m4
-rw-r--r--. 1 postgres postgres  2252 2月   9 2021 ax_prog_perl_modules.m4
-rw-r--r--. 1 postgres postgres 15900 2月   9 2021 ax_pthread.m4
-rw-r--r--. 1 postgres postgres 25535 2月   9 2021 c-compiler.m4
-rw-r--r--. 1 postgres postgres  4969 2月   9 2021 check_decls.m4
-rw-r--r--. 1 postgres postgres  9823 2月   9 2021 c-library.m4
-rw-r--r--. 1 postgres postgres 44176 2月   9 2021 config.guess
-rw-r--r--. 1 postgres postgres 35753 2月   9 2021 config.sub
-rw-r--r--. 1 postgres postgres  5281 2月   9 2021 general.m4
-rwxr-xr-x. 1 postgres postgres 13997 2月   9 2021 install-sh
-rw-r--r--. 1 postgres postgres  4214 2月   9 2021 libtool.m4
-rw-r--r--. 1 postgres postgres  4638 2月   9 2021 llvm.m4
-rw-r--r--. 1 postgres postgres   441 2月   9 2021 Makefile
-rwxr-xr-x. 1 postgres postgres  1348 2月   9 2021 missing
-rw-r--r--. 1 postgres postgres  4753 2月   9 2021 perl.m4
-rw-r--r--. 1 postgres postgres 10247 2月   9 2021 pkg.m4
-rw-r--r--. 1 postgres postgres  1252 2月   9 2021 prep_buildtree
-rw-r--r--. 1 postgres postgres  9495 2月   9 2021 programs.m4
-rw-r--r--. 1 postgres postgres  7166 2月   9 2021 python.m4
-rw-r--r--. 1 postgres postgres  3093 2月   9 2021 tcl.m4
[postgres@localhost postgresql-11.11]$

二 执行编译源代码安装过程中不同步骤的目的

1configure命令及其作用

执行编译源代码安装PostgreSQL数据库的第1步骤,是configure命令。那么,该命令的目的是什么呢?

其实是:Configuring and creating the makefile

执行完该命令之后,其实相当于在源码路径下,新建了很多文件和子路径下的文件。其中,最为明显的就是创建了config.log文件,用于记录当前configure命令执行的参数选项和结果;以及config.status,该文件是一个shell脚本,可以用于重新生成配置信息。同时,也会在其它路径下生成一些新的文件。

2 gmake world命令及其作用

该命令的作用:Building and creating the executables

用于创建和生成可执行文件。

3 gmake install-world命令及其作用

该命令的作用:Installing and moving the files to where they belong

将上一步骤中创建和生成的可执行的二进制文件,copy到目标路径下。目标路径是什么呢?就是第1步骤中configure命令执行时,指定的–prefix=/xx/yy/zz 路径。当然,如果没有指定该选项时,则默认copy到/usr/local/pgsql路径下。

例如,假定configure时指定的路径为/postgres/pg11/;那么,此时/postgres/pg11/路径应该长这样:

[postgres@localhost postgresql-11.11]$ ll /postgres/pg11/
总用量 20
drwxrwxr-x.  2 postgres postgres 4096 8月  12 15:27 bin
drwxrwxr-x.  6 postgres postgres 4096 8月  12 15:27 include
drwxrwxr-x.  4 postgres postgres 4096 8月  12 15:27 lib
drwxrwxr-x.  6 postgres postgres 4096 8月  12 15:27 share
[postgres@localhost postgresql-11.11]$

三 软件安装后目标路径的说明

上述,我们看到的软件安装到的目标路径的模样。

[postgres@localhost pg11]$ pwd
/postgres/pg11
[postgres@localhost pg11]$ ll
总用量 20
drwxrwxr-x.  2 postgres postgres 4096 8月  12 15:27 bin
drwx------. 19 postgres postgres 4096 8月  12 15:48 data
drwxrwxr-x.  6 postgres postgres 4096 10月 17 22:25 include
drwxrwxr-x.  4 postgres postgres 4096 8月  12 15:27 lib
drwxrwxr-x.  6 postgres postgres 4096 8月  12 15:27 share
[postgres@localhost pg11]$

其中:

1 include子路径

The include directory contains header files (.h) extension.

[postgres@localhost pg11]$ ll /postgres/pg11/include/
总用量 152
-rw-r--r--.  1 postgres postgres   572 8月  12 15:27 ecpg_config.h
-rw-r--r--.  1 postgres postgres  2544 8月  12 15:27 ecpgerrno.h
-rw-r--r--.  1 postgres postgres  2803 8月  12 15:27 ecpg_informix.h
-rw-r--r--.  1 postgres postgres  2496 8月  12 15:27 ecpglib.h
-rw-r--r--.  1 postgres postgres  2624 8月  12 15:27 ecpgtype.h
drwxrwxr-x.  3 postgres postgres    18 8月  12 15:27 informix
drwxrwxr-x.  3 postgres postgres   105 8月  12 15:27 internal
drwxrwxr-x.  2 postgres postgres    24 8月  12 15:27 libpq
-rw-r--r--.  1 postgres postgres  2211 8月  12 15:27 libpq-events.h
-rw-r--r--.  1 postgres postgres 22179 8月  12 15:27 libpq-fe.h
-rw-r--r--.  1 postgres postgres   323 8月  12 15:27 pg_config_ext.h
-rw-r--r--.  1 postgres postgres 32208 8月  12 15:27 pg_config.h
-rw-r--r--.  1 postgres postgres 11460 8月  12 15:27 pg_config_manual.h
-rw-r--r--.  1 postgres postgres  1052 8月  12 15:27 pg_config_os.h
-rw-r--r--.  1 postgres postgres   797 8月  12 15:27 pgtypes_date.h
-rw-r--r--.  1 postgres postgres   530 8月  12 15:27 pgtypes_error.h
-rw-r--r--.  1 postgres postgres   222 8月  12 15:27 pgtypes.h
-rw-r--r--.  1 postgres postgres  1032 8月  12 15:27 pgtypes_interval.h
-rw-r--r--.  1 postgres postgres  2251 8月  12 15:27 pgtypes_numeric.h
-rw-r--r--.  1 postgres postgres   945 8月  12 15:27 pgtypes_timestamp.h
-rw-r--r--.  1 postgres postgres  2239 8月  12 15:27 postgres_ext.h
drwxrwxr-x. 31 postgres postgres  4096 8月  12 15:27 server
-rw-r--r--.  1 postgres postgres   838 8月  12 15:27 sql3types.h
-rw-r--r--.  1 postgres postgres  1283 8月  12 15:27 sqlca.h
-rw-r--r--.  1 postgres postgres  1586 8月  12 15:27 sqlda-compat.h
-rw-r--r--.  1 postgres postgres   321 8月  12 15:27 sqlda.h
-rw-r--r--.  1 postgres postgres   824 8月  12 15:27 sqlda-native.h
[postgres@localhost pg11]$
2 lib子路径

The lib directory contains all the libraries to be linked dynamically (.so in the case of Linux/Unix systems and .dll in the case of Windows systems).

[postgres@localhost pg11]$ ll /postgres/pg11/lib/
总用量 4468
-rwxr-xr-x. 1 postgres postgres   8488 8月  12 15:27 ascii_and_mic.so
-rwxr-xr-x. 1 postgres postgres  19224 8月  12 15:27 cyrillic_and_mic.so
-rwxr-xr-x. 1 postgres postgres 457152 8月  12 15:27 dict_snowball.so
-rwxr-xr-x. 1 postgres postgres  12672 8月  12 15:27 euc2004_sjis2004.so
-rwxr-xr-x. 1 postgres postgres   8512 8月  12 15:27 euc_cn_and_mic.so
-rwxr-xr-x. 1 postgres postgres  17224 8月  12 15:27 euc_jp_and_sjis.so
-rwxr-xr-x. 1 postgres postgres   8568 8月  12 15:27 euc_kr_and_mic.so
-rwxr-xr-x. 1 postgres postgres  13752 8月  12 15:27 euc_tw_and_big5.so
-rwxr-xr-x. 1 postgres postgres  13264 8月  12 15:27 latin2_and_win1250.so
-rwxr-xr-x. 1 postgres postgres  13016 8月  12 15:27 latin_and_mic.so
-rw-r--r--. 1 postgres postgres 156392 8月  12 15:27 libecpg.a
-rw-r--r--. 1 postgres postgres  18860 8月  12 15:27 libecpg_compat.a
lrwxrwxrwx. 1 postgres postgres     22 8月  12 15:27 libecpg_compat.so -> libecpg_compat.so.3.11
lrwxrwxrwx. 1 postgres postgres     22 8月  12 15:27 libecpg_compat.so.3 -> libecpg_compat.so.3.11
-rwxr-xr-x. 1 postgres postgres  24736 8月  12 15:27 libecpg_compat.so.3.11
lrwxrwxrwx. 1 postgres postgres     15 8月  12 15:27 libecpg.so -> libecpg.so.6.11
lrwxrwxrwx. 1 postgres postgres     15 8月  12 15:27 libecpg.so.6 -> libecpg.so.6.11
-rwxr-xr-x. 1 postgres postgres  94320 8月  12 15:27 libecpg.so.6.11
-rw-r--r--. 1 postgres postgres 198760 8月  12 15:27 libpgcommon.a
-rw-r--r--. 1 postgres postgres 140938 8月  12 15:27 libpgfeutils.a
-rw-r--r--. 1 postgres postgres  76610 8月  12 15:27 libpgport.a
-rw-r--r--. 1 postgres postgres 106682 8月  12 15:27 libpgtypes.a
lrwxrwxrwx. 1 postgres postgres     18 8月  12 15:27 libpgtypes.so -> libpgtypes.so.3.11
lrwxrwxrwx. 1 postgres postgres     18 8月  12 15:27 libpgtypes.so.3 -> libpgtypes.so.3.11
-rwxr-xr-x. 1 postgres postgres  77624 8月  12 15:27 libpgtypes.so.3.11
-rw-r--r--. 1 postgres postgres 416996 8月  12 15:27 libpq.a
lrwxrwxrwx. 1 postgres postgres     13 8月  12 15:27 libpq.so -> libpq.so.5.11
lrwxrwxrwx. 1 postgres postgres     13 8月  12 15:27 libpq.so.5 -> libpq.so.5.11
-rwxr-xr-x. 1 postgres postgres 298416 8月  12 15:27 libpq.so.5.11
-rwxr-xr-x. 1 postgres postgres  29608 8月  12 15:27 libpqwalreceiver.so
-rwxr-xr-x. 1 postgres postgres  19104 8月  12 15:27 pgoutput.so
drwxrwxr-x. 4 postgres postgres     31 8月  12 15:27 pgxs
drwxrwxr-x. 2 postgres postgres     86 8月  12 15:27 pkgconfig
-rwxr-xr-x. 1 postgres postgres 209768 8月  12 15:27 plpgsql.so
-rwxr-xr-x. 1 postgres postgres   8488 8月  12 15:27 utf8_and_ascii.so
-rwxr-xr-x. 1 postgres postgres 123368 8月  12 15:27 utf8_and_big5.so
-rwxr-xr-x. 1 postgres postgres  17296 8月  12 15:27 utf8_and_cyrillic.so
-rwxr-xr-x. 1 postgres postgres 213632 8月  12 15:27 utf8_and_euc2004.so
-rwxr-xr-x. 1 postgres postgres  86512 8月  12 15:27 utf8_and_euc_cn.so
-rwxr-xr-x. 1 postgres postgres 160240 8月  12 15:27 utf8_and_euc_jp.so
-rwxr-xr-x. 1 postgres postgres 111088 8月  12 15:27 utf8_and_euc_kr.so
-rwxr-xr-x. 1 postgres postgres 209392 8月  12 15:27 utf8_and_euc_tw.so
-rwxr-xr-x. 1 postgres postgres 271008 8月  12 15:27 utf8_and_gb18030.so
-rwxr-xr-x. 1 postgres postgres 156128 8月  12 15:27 utf8_and_gbk.so
-rwxr-xr-x. 1 postgres postgres   8616 8月  12 15:27 utf8_and_iso8859_1.so
-rwxr-xr-x. 1 postgres postgres  36160 8月  12 15:27 utf8_and_iso8859.so
-rwxr-xr-x. 1 postgres postgres 172528 8月  12 15:27 utf8_and_johab.so
-rwxr-xr-x. 1 postgres postgres 135824 8月  12 15:27 utf8_and_sjis2004.so
-rwxr-xr-x. 1 postgres postgres  90600 8月  12 15:27 utf8_and_sjis.so
-rwxr-xr-x. 1 postgres postgres 176608 8月  12 15:27 utf8_and_uhc.so
-rwxr-xr-x. 1 postgres postgres  39696 8月  12 15:27 utf8_and_win.so
[postgres@localhost pg11]$ 
3 bin子路径

这个最简单,一定是可以执行的文件。

The bin directory, of course, contains executables.

[postgres@localhost pg11]$ ll /postgres/pg11/bin/
总用量 11648
-rwxr-xr-x. 1 postgres postgres   63592 8月  12 15:27 clusterdb
-rwxr-xr-x. 1 postgres postgres   63408 8月  12 15:27 createdb
-rwxr-xr-x. 1 postgres postgres   64128 8月  12 15:27 createuser
-rwxr-xr-x. 1 postgres postgres   58776 8月  12 15:27 dropdb
-rwxr-xr-x. 1 postgres postgres   58752 8月  12 15:27 dropuser
-rwxr-xr-x. 1 postgres postgres  966440 8月  12 15:27 ecpg
-rwxr-xr-x. 1 postgres postgres  132472 8月  12 15:27 initdb
-rwxr-xr-x. 1 postgres postgres   30344 8月  12 15:27 pg_archivecleanup
-rwxr-xr-x. 1 postgres postgres  116328 8月  12 15:27 pg_basebackup
-rwxr-xr-x. 1 postgres postgres  154464 8月  12 15:27 pgbench
-rwxr-xr-x. 1 postgres postgres   33856 8月  12 15:27 pg_config
-rwxr-xr-x. 1 postgres postgres   42800 8月  12 15:27 pg_controldata
-rwxr-xr-x. 1 postgres postgres   58216 8月  12 15:27 pg_ctl
-rwxr-xr-x. 1 postgres postgres  412584 8月  12 15:27 pg_dump
-rwxr-xr-x. 1 postgres postgres   94680 8月  12 15:27 pg_dumpall
-rwxr-xr-x. 1 postgres postgres   58768 8月  12 15:27 pg_isready
-rwxr-xr-x. 1 postgres postgres   74920 8月  12 15:27 pg_receivewal
-rwxr-xr-x. 1 postgres postgres   79808 8月  12 15:27 pg_recvlogical
-rwxr-xr-x. 1 postgres postgres   53000 8月  12 15:27 pg_resetwal
-rwxr-xr-x. 1 postgres postgres  169192 8月  12 15:27 pg_restore
-rwxr-xr-x. 1 postgres postgres   91312 8月  12 15:27 pg_rewind
-rwxr-xr-x. 1 postgres postgres   35128 8月  12 15:27 pg_test_fsync
-rwxr-xr-x. 1 postgres postgres   30024 8月  12 15:27 pg_test_timing
-rwxr-xr-x. 1 postgres postgres  134592 8月  12 15:27 pg_upgrade
-rwxr-xr-x. 1 postgres postgres   43472 8月  12 15:27 pg_verify_checksums
-rwxr-xr-x. 1 postgres postgres   90040 8月  12 15:27 pg_waldump
-rwxr-xr-x. 1 postgres postgres 7940952 8月  12 15:27 postgres
lrwxrwxrwx. 1 postgres postgres       8 8月  12 15:27 postmaster -> postgres
-rwxr-xr-x. 1 postgres postgres  582952 8月  12 15:27 psql
-rwxr-xr-x. 1 postgres postgres   63688 8月  12 15:27 reindexdb
-rwxr-xr-x. 1 postgres postgres   68408 8月  12 15:27 vacuumdb
[postgres@localhost pg11]$
4 share子路径

share路径是最有意思的,大概包含:

  • 配置文件的样例文件,例如pg_hba.conf.sample,postgresql.conf.sample,recovery.conf.sample等;[postgres@localhost pg11]$ ll /postgres/pg11/share/*.sample
    -rw-r–r–. 1 postgres postgres  4427 8月  12 15:27 /postgres/pg11/share/pg_hba.conf.sample
    -rw-r–r–. 1 postgres postgres  1636 8月  12 15:27 /postgres/pg11/share/pg_ident.conf.sample
    -rw-r–r–. 1 postgres postgres   604 8月  12 15:27 /postgres/pg11/share/pg_service.conf.sample
    -rw-r–r–. 1 postgres postgres 23953 8月  12 15:27 /postgres/pg11/share/postgresql.conf.sample
    -rw-r–r–. 1 postgres postgres   278 8月  12 15:27 /postgres/pg11/share/psqlrc.sample
    -rw-r–r–. 1 postgres postgres  5762 8月  12 15:27 /postgres/pg11/share/recovery.conf.sample
    [postgres@localhost pg11]$
    • 初始化cluster时用于创建元数据的SQL脚本,如:information_schema.sql,system_views.sql等;
    [postgres@localhost pg11]$ ll /postgres/pg11/share/*.sql
    -rw-r–r–. 1 postgres postgres  76912 8月  12 15:27 /postgres/pg11/share/conversion_create.sql
    -rw-r–r–. 1 postgres postgres 111335 8月  12 15:27 /postgres/pg11/share/information_schema.sql
    -rw-r–r–. 1 postgres postgres  24452 8月  12 15:27 /postgres/pg11/share/snowball_create.sql
    -rw-r–r–. 1 postgres postgres  42375 8月  12 15:27 /postgres/pg11/share/system_views.sql
    [postgres@localhost pg11]$
    • 包含的一些文档信息,如[postgres@ppasdev postgresql-9.4.10]$ ll /postgres/9.4.10/share/doc/
      总用量 80
      drwxrwxr-x. 2 postgres postgres  4096 11月 22 2018 extension
      drwxrwxr-x. 2 postgres postgres 77824 9月  21 2018 html
      [postgres@ppasdev postgresql-9.4.10]$ 这里,给的是1个9.4版本的软件的信息。随着pg的版本不同,这里看到的信息也可能不同。当然,在11版本的pg下,源码编译安装之后的目标路径下的share子目录,就不再包含有doc和man的相关路径了。
    • 包含的可以安装使用的extension信息:如:
[postgres@localhost pg11]$ ll /postgres/pg11/share/extension/
总用量 12
-rw-r--r--. 1 postgres postgres 332 8月  12 15:27 plpgsql--1.0.sql
-rw-r--r--. 1 postgres postgres 179 8月  12 15:27 plpgsql.control
-rw-r--r--. 1 postgres postgres 381 8月  12 15:27 plpgsql--unpackaged--1.0.sql
[postgres@localhost pg11]$

The directory of interest under share is the one named extension. Here, we can see all the extensions, which we can install as per our need. Most extensions have a .control file that provides basic information, as shown here.

四参考和引用

《PostgreSQL for Data Architects》 —-Jayadevan Maymala

p31:

It is the share directory that is a bit more interesting. Here, we have a number of sample files, namely, pg_hba.conf.sample, pg_ident.conf.sample, pg_service. conf.sample, postgresql.conf.sample, psqlrc.sample, and recovery.conf. sample. Once we initialize a cluster and make changes to various configuration files and then lose track of the changes, we can compare with these files and understand what changes have been made or roll back the changes if necessary.

This directory also has a few SQL files such as information_schema.sql and system_view.sql, which go into creating metadata views when a database cluster is initialized.

At the next level of directories under share, we have the doc directory that holds the documentation, and the man directory that holds the manual pages, and so on. The directory of interest under share is the one named extension. Here, we can see all the extensions, which we can install as per our need. Most extensions have a .control file that provides basic information, as shown here:

最后,可以结合之前的文章一起来了解学习:

Linux软件包管理方式和手工编译源代码安装软件时究竟做了哪些操作?

如何在CentOS上编译源代码安装PostgreSQL数据库