源码安装PostgreSQL 9.5
Contents
下载源码
# 安装目录
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
的工具,真的是神器….大爱.