下载源码

# 安装目录
mkdir -p /ihome/db/postgresql/postgresql-9.5.0
# 存放解压源码的目录
mkdir -p /ihome/db/postgresql/build

cd /ihome/db/postgresql
wget -c https://ftp.postgresql.org/pub/source/v9.5.0/postgresql-9.5.0.tar.bz2
tar -xvf /ihome/db/postgresql/postgresql-9.5.0.tar.bz2 -C /ihome/db/postgresql/build

cd /ihome/db/postgresql/build/postgresql-9.5.0

安装依赖

sudo apt-get install libreadline-dev

编译

./configure --prefix=/ihome/db/postgresql/postgresql-9.5.0
make -j 8

成功后,会提示如下:

All of PostgreSQL successfully made. Ready to install.

安装

make install

cd /ihome/db/postgresql
ln -s postgresql-9.5.0 current

成功后会提示如下:

PostgreSQL installation complete.

配置环境变量

emacs ~/.zshrc

添加以下:
PG_HOME=/ihome/db/postgresql/current
PATH=$PG_HOME/bin:$PATH
export PATH

source ~/.zshrc

初始化数据库

创建数据目录(data)

mkdir /ihome/db/postgresql/postgresql-9.5.0/data

初始化数据目录

initdb /ihome/db/postgresql/current/data

启动数据库

pg_ctl -D /ihome/db/postgresql/current/data -l /ihome/db/postgresql/current/pg.start.log start

启动成功后,可以看到以下进程了:
╭─sky@sky-linux /ihome/db/postgresql
╰─➤  ps aux | grep "[p]ostgres"
sky      28448  0.0  0.1 171644 16700 pts/3    S    16:51   0:00 /ihome/db/postgresql/postgresql-9.5.0/bin/postgres -D /ihome/db/postgresql/current/data
sky      28454  0.0  0.0 171644  2876 ?        Ss   16:51   0:00 postgres: checkpointer process
sky      28455  0.0  0.0 171644  3740 ?        Ss   16:51   0:00 postgres: writer process
sky      28456  0.0  0.0 171644  2876 ?        Ss   16:51   0:00 postgres: wal writer process
sky      28457  0.0  0.0 172048  5156 ?        Ss   16:51   0:00 postgres: autovacuum launcher process
sky      28458  0.0  0.0  26652  2948 ?        Ss   16:51   0:00 postgres: stats collector process
╭─sky@sky-linux

连接到PG

╭─sky@sky-linux /ihome/db/postgresql
╰─➤  psql
psql: FATAL:  database "sky" does not exist
╭─sky@sky-linux /ihome/db/postgresql
╰─➤  psql -d postgres                                                                                                                                                                    2 ↵
psql (9.5.0)
Type "help" for help.

postgres=#

注意,默认情况下,psql是连接一个名为你当前用户名的数据库的.这时,可以指定-d postgres来连接postgres的数据库(这个是初始化时默认的)

默认的数据库只有三个:

postgres=# \l
                              List of databases
   Name    | Owner | Encoding |   Collate   |    Ctype    | Access privileges
-----------+-------+----------+-------------+-------------+-------------------
 postgres  | sky   | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |
 template0 | sky   | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/sky           +
           |       |          |             |             | sky=CTc/sky
 template1 | sky   | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/sky           +
           |       |          |             |             | sky=CTc/sky
(3 rows)

postgres=#

postgres:默认的数据库 template0:模板数据库0, 最纯洁的(就是最原始的)数据库模板.这个最好就不要做任何修改. template1:模板数据库1, 默认情况下,我们执行create database的时候,就是以template1为模板来创建数据库的.

然后创建一个与当前用户名同名的数据库:

create database sky;

下次就可以直接使用psql连接了.

停止PostgreSQL

 pg_ctl -D /ihome/db/postgresql/current/data -l /ihome/db/postgresql/current/pg.start.log stop

安装所有扩展包

cd /ihome/db/postgresql/build/postgresql-9.5.0/contrib

ls -d */ | xargs -n 1 -P 0 sh -c 'cd {}; make ; make install;'

哈哈,就一条命令,就可以执行所有的扩展包的安装啦。*nix的工具,真的是神器….大爱.