PostgreSql源码方式安装

一 、源码安装

1. Redhat7 修改主机名:
[root@localhost ~]# hostnamectl set-hostname ygg

检查:

[root@localhost ~]# hostnamectl
   Static hostname: ygg
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 19e8c6b6164b453b8816e1a002badeec
           Boot ID: b9793f1a2e8c4dbcbf99f9f011563fe6
    Virtualization: vmware
  Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.2:GA:server
            Kernel: Linux 3.10.0-327.el7.x86_64
      Architecture: x86-64
[root@localhost ~]#



2. 安装依赖包:
yum install gcc* gcc-c++* zlib-devel* readline-devel* perl-ExtUtils-Embed* pam-devel* libxml2-devel* libxslt-devel* openldap-devel* python-devel* openssl-devel* cmake* readline* flex* bison* tcl* -y


3. Linux系统内核调整:
vi /etc/sysctl.conf
#add
kernel.shmmax = 68719476736                  #最大共享内存段大小(默认)
kernel.shmall = 4294967296                       #可以使用的共享内存的总量(默认)
kernel.shmmni = 4096                             #整个系统共享内存段的最大数目
kernel.sem = 50100 64128000 50100 1280           #每个信号对象集的最大信号对象数;系统范围内
                                                 #最大信号对象数;每个信号对象支持的最大操作数;
                                                 #系统范围内最大信号对象集数
fs.file-max = 7672460                            #文件句柄的最大数量,文件句柄设置表示在linux系统中可以打开的文件数量
net.ipv4.ip_local_port_range = 9000 65000        #应用程序可使用的IPv4端口范围
net.core.rmem_default = 1048576                  #套接字接收缓冲区大小的缺省值
net.core.wmem_default = 262144                   #套接字发送缓冲区大小的缺省值
net.core.wmem_max = 1048576                      #套接字发送缓冲区大小的最大值


内核参数生效:

sysctl -p
4. 关闭防火墙及selinux
5. 创建用户:
[root@ygg soft]# useradd postgresql
[root@ygg soft]# passwd postgresql



6. 解压并安装:
(1)解压文件:
[root@ygg soft]# su - postgresql
[postgresql@ygg ~]$ cd /soft/
postgresql-10.3.tar.gz  rlwrap-0.43rlwrap-0.43.tar.gz
[postgresql@ygg soft]$ gunzip postgresql-10.3.tar.gz
[postgresql@ygg soft]$ tar -xf postgresql-10.3.tar
[postgresql@ygg soft]$ cd postgresql-10.3/
[postgresql@ygg postgresql-10.3]$ ll
total 672
-rw-r--r--.1 postgresql postgresql    457 Feb 27  2018 aclocal.m4
drwxrwxr-x.2 postgresql postgresql   4096 Feb 27  2018 config   源码安装的配置脚本
-rwxr-xr-x.1 postgresql postgresql 498962 Feb 272018 configure
-rw-r--r--.1 postgresql postgresql  76915 Feb 27  2018 configure.in
drwxrwxr-x. 55 postgresql postgresql   4096 Feb 27  2018 contrib   已打包到PG源码中的第三方贡献的插件源码
-rw-r--r--.1 postgresql postgresql   1192 Feb 27  2018 COPYRIGHT
drwxrwxr-x.3 postgresql postgresql    101 Feb 27  2018 doc       文档
-rw-r--r--.1 postgresql postgresql   3638 Feb 27  2018 GNUmakefile.in
-rw-r--r--.1 postgresql postgresql    284 Feb 27  2018 HISTORY     版本变更的历史记录
-rw-r--r--.1 postgresql postgresql  71584 Feb 27  2018 INSTALL     安装说明
-rw-r--r--.1 postgresql postgresql   1682 Feb 27  2018 Makefile
-rw-r--r--.1 postgresql postgresql   1212 Feb 27  2018 README
drwxrwxr-x. 16 postgresql postgresql   4096 Feb 272018 src       源代码
(2)配置编译安装:
配置帮助:
[postgresql@ygg postgresql-10.3]$ ./configure --help
`configure' configures PostgreSQL 10.3 to adapt to many kinds of systems.
 
Usage: ./configure [OPTION]... [VAR=VALUE]...
 
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.
 
Defaults for the options are specified in brackets.
 
Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print `checking ...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for `--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or `..']
 
Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local/pgsql]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]
 
By default, `make install' will install all the files in
`/usr/local/pgsql/bin', `/usr/local/pgsql/lib' etc.  You can specify
an installation prefix other than `/usr/local/pgsql' using `--prefix',
for instance `--prefix=$HOME'.
 
For better control, use the options below.
 
Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/postgresql]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]
 
System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
 
Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --disable-integer-datetimes
                          obsolete option, no longer supported
  --enable-nls[=LANGUAGES]
                          enable Native Language Support
  --disable-rpath         do not embed shared library search path in
                          executables
  --disable-spinlocks     do not use spinlocks
  --disable-atomics       do not use atomic operations
  --disable-strong-random do not use a strong random number source
  --enable-debug          build with debugging symbols (-g)
  --enable-profiling      build with profiling enabled
  --enable-coverage       build with coverage testing instrumentation
  --enable-dtrace         build with DTrace support
  --enable-tap-tests      enable TAP tests (requires Perl and IPC::Run)
  --enable-depend         turn on automatic dependency tracking
  --enable-cassert        enable assertion checks (for debugging)
  --disable-thread-safety disable thread-safety in client libraries
  --disable-largefile     omit support for large files
  --disable-float4-byval  disable float4 passed by value
  --disable-float8-byval  disable float8 passed by value
 
Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-extra-version=STRING
                          append STRING to version
  --with-template=NAME    override operating system template
  --with-includes=DIRS    look for additional header files in DIRS
  --with-libraries=DIRS   look for additional libraries in DIRS
  --with-libs=DIRS        alternative spelling of --with-libraries
  --with-pgport=PORTNUM   set default port number [5432]
  --with-blocksize=BLOCKSIZE
                          set table block size in kB [8]
  --with-segsize=SEGSIZE  set table segment size in GB [1]
  --with-wal-blocksize=BLOCKSIZE
                          set WAL block size in kB [8]
  --with-wal-segsize=SEGSIZE
                          set WAL segment size in MB [16]
  --with-CC=CMD           set compiler (deprecated)
  --with-icu              build with ICU support
  --with-tcl              build Tcl modules (PL/Tcl)
  --with-tclconfig=DIR    tclConfig.sh is in DIR
  --with-perl             build Perl modules (PL/Perl)
  --with-python           build Python modules (PL/Python)
  --with-gssapi           build with GSSAPI support
  --with-krb-srvnam=NAME  default service principal name in Kerberos (GSSAPI)
                          [postgres]
  --with-pam              build with PAM support
  --with-bsd-auth         build with BSD Authentication support
  --with-ldap             build with LDAP support
  --with-bonjour          build with Bonjour support
  --with-openssl          build with OpenSSL support
  --with-selinux          build with SELinux support
  --with-systemd          build with systemd support
  --without-readline      do not use GNU Readline nor BSD Libedit for editing
  --with-libedit-preferred
                          prefer BSD Libedit over GNU Readline
  --with-uuid=LIB         build contrib/uuid-ossp using LIB (bsd,e2fs,ossp)
  --with-ossp-uuid        obsolete spelling of --with-uuid=ossp
  --with-libxml           build with XML support
  --with-libxslt          use XSLT support when building contrib/xml2
  --with-system-tzdata=DIR
                          use system time zone data in DIR
  --without-zlib          do not use Zlib
  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
 
Some influential environment variables:
  CCC compiler command
  CFLAGSC compiler flags
  LDFLAGSlinker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBSlibraries to pass to the linker, e.g. -l<library>
  CPPFLAGS(Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  CPPC preprocessor
  PKG_CONFIGpath to pkg-config utility
  PKG_CONFIG_PATH
              directories to add to pkg-config's search path
  PKG_CONFIG_LIBDIR
              path overriding pkg-config's built-in search path
  ICU_CFLAGSC compiler flags for ICU, overriding pkg-config
  ICU_LIBSlinker flags for ICU, overriding pkg-config
  LDFLAGS_EXextra linker flags for linking executables only
  LDFLAGS_SLextra linker flags for linking shared libraries only
 
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
 
Report bugs to <[email protected]>.


 配置参数注释:
[postgresql @ ygg postgresql-10.3] $ ./configure --help
`configure'配置PostgreSQL 10.3以适应多种系统。

用法:./ configure [OPTION] ... [VAR = VALUE] ...

要分配环境变量(例如CC,CFLAGS ...),请将它们指定为
VAR = VALUE。有关某些有用变量的说明,请参见下文。

选项的默认值在方括号中指定。

组态:
  -h,--help显示此帮助并退出
      --help =简短显示此软件包的选项
      --help = recursive显示所有包含的软件包的简短帮助
  -V,--version显示版本信息并退出
  -q,-quiet,-silent不打印“检查中...”消息
      --cache-file = FILE缓存测试结果在FILE中[已禁用]
  -C,“-cache-file = config.cache”的--config-cache别名
  -n,--no-create不创建输出文件
      --srcdir = DIR在DIR中找到源[configure dir或`..']

安装目录:
  --prefix = PREFIX在PREFIX中安装与体系结构无关的文件
                          [/ usr / local / pgsql]
  --exec-prefix = EPREFIX在EPREFIX中安装与体系结构相关的文件
                          [字首]

默认情况下,“ make install”将安装所有文件
/ usr / local / pgsql / bin,/ usr / local / pgsql / lib等。您可以指定
使用`--prefix'的`/ usr / local / pgsql'以外的安装前缀,
例如`--prefix = $ HOME'。

为了更好地控制,请使用以下选项。

微调安装目录:
  --bindir = DIR                用户可执行文件[EPREFIX / bin]
  --sbindir = DIR               系统管理员可执行文件[EPREFIX / sbin]
  --libexecdir = DIR            程序可执行文件[EPREFIX / libexec]
  --sysconfdir = DIR            只读单机数据[PREFIX / etc]
  --sharedstatedir = DIR        可修改的体系结构独立数据[PREFIX / com]
  --localstatedir = DIR         可修改的单机数据[PREFIX / var]
  --libdir = DIR                目标代码库[EPREFIX / lib]
  --includedir = DIR            C头文件[PREFIX / include]
  --oldincludedir =非gcc的DIR   C头文件[/ usr / include]
  --datarootdir = DIR           只读的独立于拱的数据根[PREFIX / share]
  --datadir = DIR               与架构无关的只读数据[DATAROOTDIR]
  --infodir = DIR               信息文档[DATAROOTDIR / info]
  --localedir = DIR             依赖于语言环境的数据[DATAROOTDIR / locale]
  --mandir = DIR                手册文件[DATAROOTDIR / man]
  --docdir = DIR                文档根[DATAROOTDIR / doc / postgresql]
  --htmldir = DIR               html文档[DOCDIR]
  --dvidir = DIR                dvi文档[DOCDIR]
  --pdfdir = DIR                pdf文档[DOCDIR]
  --psdir = DIR                 ps文档[DOCDIR]

系统类型:
  --build = BUILD               配置为在BUILD上构建[猜测]
  --host = HOST                 交叉编译以构建要在HOST上运行的程序[BUILD]

可选功能:
  --disable-option-checking     忽略无法识别的--enable /-with options
  --disable-FEATURE             不包含FEATURE(与--enable-FEATURE = no相同)
  --enable-FEATURE [= ARG]      包括功能[ARG = yes]
  --disable-integer-datetimes   过时的选项,不再受支持
  --enable-nls [= LANGUAGES]    启用母语支持
  --disable-rpath               不将共享库搜索路径嵌入到可执行文件
  --disable-spinlocks           不使用自旋锁
  --disable-atomics             不使用原子操作
  --disable-strong-random       不使用强随机数源
  --enable-debug                带有调试符号的构建(-g)
  --enable-profiling            构建并启用了性能分析使用覆盖率测试工具启用覆盖范围构建
  --enable-dtrace               带有DTrace支持的构建
  --enable-tap-tests            启用TAP测试(需要Perl和IPC :: Run)
  --enable-depend               打开自动依赖性跟踪
  --enable-cassert              启用断言检查(用于调试)
  --disable-thread-safety       禁用客户端库中的线程安全
  --disable-largefile           省略对大文件的支持
  --disable-float4-byval        禁用按值传递的float4
  --disable-float8-byval        禁用由值传递的float8

可选软件包:
  --with-PACKAGE [= ARG]        使用包[ARG = yes]
  --without-PACKAGE             不要使用PACKAGE(与--with-PACKAGE = no相同)
  --with-extra-version = STRING 将STRING附加到版本
  --with-template = NAME        覆盖操作系统模板
  --with-includes = DIRS        在DIRS中查找其他头文件
  --with-libraries = DIRS       在DIRS中寻找其他库
  --with-libs = DIRS            --with-libraries的替代拼写
  --with-pgport = PORTNUM       设置默认端口号[5432]
  --with-blocksize = blocksize  将表块大小设置为kB [8]
  --with-segsize = SEGSIZE      以GB为单位设置表段的大小[1]
  --with-wal-blocksize=blocksize   在kB中设置WAL块大小[8]
  --with-wal-segsize = SEGSIZE  以MB为单位设置WAL段大小[16]
  --with-CC = CMD               设置编译器(不建议使用)
  --with-icu                    在ICU支持下进行构建
  --with-tcl                    构建Tcl模块(PL / Tcl)
  --with-tclconfig = DIR        tclConfig.sh在DIR中
  --with-perl                   构建Perl模块(PL / Perl)
  --with-python                 构建Python模块(PL / Python)
  --with-gssapi                 构建具有GSSAPI支持
  --with-krb-srvnam = NAME      Kerberos(GSSAPI)中的默认服务主体名称[postgres]
  --with-pam                    建立并支持PAM
  --with-bsd-auth               构建具有BSD身份验证支持
  --with-ldap                   建立LDAP支持
  --with-bonjour                在Bonjour支持下进行构建
  --with-openssl                建立具有OpenSSL支持
  --with-selinux                构建带有SELinux支持
  --with-systemd                构建并具有systemd支持
  --without-readline            不要使用GNU Readline或BSD Libedit进行编辑
  --with-libedit-preferred      比GNU Readline更喜欢BSD Libedit
  --with-uuid = LIB             使用LIB(bsd,e2fs,ossp)构建contrib / uuid-ossp
  --with-ossp-uuid              --with-uuid = ossp的过时拼写
  --with-libxml                 建立XML支持
  --with-libxslt                在构建contrib / xml2时使用XSLT支持
  --with-system-tzdata = DIR    在DIR中使用系统时区数据
  --without-zlib                不要使用Zlib
  --with-gnu-ld                 假定C编译器使用GNU ld [default = no]

一些有影响力的环境变量:
  CC                            C编译器命令
  CFLAGS                        C编译器标志
  LDFLAGS                       链接器标志,例如-L <lib dir>(如果您在非标准目录<lib dir>LIBS库传递给链接器,例如-l <library>
  CPPFLAGS                     (客观)C / C ++预处理器标志,例如,如果-I <include dir>您在非标准目录<include dir>中具有标题
  CPP                           C预处理器
  PKG_CONFIG                    到pkg-config实用程序的路径
  PKG_CONFIG_PATH               要添加到pkg-config的搜索路径的目录
  PKG_CONFIG_LIBDIR             覆盖pkg-config的内置搜索路径的路径
  ICU_CFLAGS                    ICU的C编译器标志,覆盖pkg-config
  ICU的ICU_LIBS                 链接器标志,覆盖pkg-config
  LDFLAGS_EX                    额外的链接器标志,仅用于链接可执行文件
  LDFLAGS_SL                    额外的链接器标志,仅用于链接共享库

使用这些变量来覆盖`configure'所做的选择或提供帮助
查找具有非标准名称/位置的库和程序。

向<[email protected]>报告错误。



当前配置如下:
./configure --prefix=/home/postgresql/postgresql10/prefix --exec-prefix=/home/postgresql/postgresql10/execprefix --htmldir=/home/postgresql/postgresql10/html --with-pgport=1922  --with-openssl --with-perl --with-tcl --with-python --with-pam --without-ldap --with-libxml --with-libxslt --enable-thread-safety --with-wal-blocksize=16 --with-blocksize=8 --enable-dtrace --enable-debug


 

完成不报错如下:

4.png


如果报错缺少依赖包,根据提示yum相关包,重新配置

编译:
gmake world              --包括第三方插件全部编译


 结果如下:

5.png

gmake check-world    --这个需要使用普通用户执行,可选,耗时较长


 结果如下:

6.png

 安装:
gmake install-world    -- 包括第三方插件全部安装

7.png

7. 配置环境变量:

8.png


根据当前配置安装完成后,相关目录结构如下:

[postgresql@ygg ~]$ tree -d
.
`-- postgresql10
    |-- data
    |-- execprefix
    |   |-- bin
    |   `-- lib
    |       |-- pgxs
    |       |   |-- config
    |       |   `-- src
    |       |       |-- makefiles
    |       |       `-- test
    |       |           `-- regress
    |       `-- pkgconfig
    |-- html
    |   `-- html
    `-- prefix
        |-- include
        |   |-- informix
        |   |   `-- esql
        |   |-- internal
        |   |   `-- libpq
        |   |-- libpq
        |   `-- server
        |       |-- access
        |       |-- bootstrap
        |       |-- catalog
        |       |-- commands
        |       |-- common
        |       |-- datatype
        |       |-- executor
        |       |-- fe_utils
        |       |-- foreign
        |       |-- lib
        |       |-- libpq
        |       |-- mb
        |       |-- nodes
        |       |-- optimizer
        |       |-- parser
        |       |-- port
        |       |   |-- atomics
        |       |   |-- win32
        |       |   |   |-- arpa
        |       |   |   |-- netinet
        |       |   |   `-- sys
        |       |   `-- win32_msvc
        |       |       `-- sys
        |       |-- portability
        |       |-- postmaster
        |       |-- regex
        |       |-- replication
        |       |-- rewrite
        |       |-- snowball
        |       |   `-- libstemmer
        |       |-- statistics
        |       |-- storage
        |       |-- tcop
        |       |-- tsearch
        |       |   `-- dicts
        |       `-- utils
        `-- share
            |-- doc
            |   `-- extension
            |-- extension
            |-- man
            |   |-- man1
            |   |-- man3
            |   `-- man7
            |-- timezone
            |   |-- Africa
            |   |-- America
            |   |   |-- Argentina
            |   |   |-- Indiana
            |   |   |-- Kentucky
            |   |   `-- North_Dakota
            |   |-- Antarctica
            |   |-- Arctic
            |   |-- Asia
            |   |-- Atlantic
            |   |-- Australia
            |   |-- Brazil
            |   |-- Canada
            |   |-- Chile
            |   |-- Etc
            |   |-- Europe
            |   |-- Indian
            |   |-- Mexico
            |   |-- Pacific
            |   `-- US
            |-- timezonesets
            `-- tsearch_data

二、卸载:

编译安装后如何卸载

一般的,清除安装目录,再次安装可以尝试重新指定路径(安装时指定安装目录)在安装的时候加 prefix ,不然的话虽然用find命令可以找出一些相关文件,但是对于修改了配置,比如加入启动项之类的操作就不好根除通常只能用find去手动清除。所以软件通常都会提供uninstall的程序来执行卸载操作。

三、仅仅安装客户端

如果只想安装客户端应用程序和接口库,则可以使用以下命令

 
make -C src/bin install
make -C src/include install
make -C src/interfaces install
make -C doc install


猜你喜欢

转载自blog.51cto.com/14588685/2445502