一、源码获取
1.源码路径可从官网直接下载对应版本的代码,此为官网下载地址https://www.postgresql.org/ftp/source/,我采用的是此路径。
2.可从gituhub仓库克隆下来,克隆命令为
git clone git://git.postgresql.org/git/postgresql.git
源码的目录(11.5版本)如下:
二、requirements
官方源码包:
1. GNU make >= 3.80,可通过make --version查看版本(有时make也被gmake名称代替),若没有,请安装。
2.ISO/ANSI C编译器,C89及其之后版本,可通过如下相关命令之一查看
cc -v
gcc -v
clang -v
3.GNU Readline库,有时又命名为libedit,libreadline,没有该库可以在安装“configure”中设置“--without-readline”选项,后面会提及。
4.zlib 压缩库,以上两个依赖库一般存在于/usr/lib下,同样可以设置“-without-zlib”。
Git克隆源码:
如果是通过git下来的源码,除以上要求,还需要:
1. Flex >=2.5.31
2. Bison>=1.875
3. Perl >=5.8.3
三、安装(可自行参照源码包里的INSTALL,里面有官方详细讲解)
1.运行configure检查系统环境。
可以选择在configure执行
./configure
也可单独新建一个文件夹然后在该目录下运行configure(推荐这种方式,因为安装过程中会新生成一些文件,后面可删除)
mkdir build_dir
cd build_dir
// build_dir里运行configure
运行部分截图如下:
2.make编译。
在编译阶段可有多种选项选择(例如上文提到的缺失库情况),若有相关要求,自行参照INSTALL文件配置选项。
通常,make语句即可。
make
运行截图如下,若成功,最后一句话应该为“All of PostgreSQL successfully made. Ready to install.”
若需要安装说明文档(HTML and man pages)和contrib模块,可以执行以下语句
make world
3.回归检验(可跳过此步)
运行命令
make check
运行截图
4.安装
运行命令
make install
部分截图
若在前面编译阶段选了make world命令,此处可执行以下命令安装说明文档。
make install-world
部分截图
ok,到此postgresql已经安装成功了!安装目录在/usr/local/pgsql。但是,要想安心使用,还需要后面的配置步骤。
四、配置
1.共享库配置
postgresql里提供了一些库函数以供调用,它们在/usr/localpgsql/lib下,如下所示:
需要配置环境变量LD_LIBRARY_PATH。可选择在shell命令行("sh", "ksh","bash", "zsh")输入以下命令:
LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH
若是 "csh" or "tcsh",则输入:
setenv LD_LIBRARY_PATH /usr/local/pgsql/lib
但以上命令仅仅使LD_LIBRARY_PATH存活在shell生存期,关闭命令行,也就失效。因此,可以写到系统环境配置/etc/profile或用户环境配置~/.bash_profile文件中去(推荐后者)。输入以下命令:
vim ~/.bash_profile
在打开文件中添加上述两行命令代码:
LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH
2.环境变量配置
postgresql安装于/usr/local/pgsql下,为了使用方便,应该为其配置环境变量。同上面包配置一样,为了长期生效,应将环境变量配置于文件中,执行以下命令:
vim ~/.bash_profile
在文件中添加以下代码:
PATH=$PATH:/usr/local/pgsql/bin
如果安装了说明文档,再添加两行代码:
MANPATH=/usr/local/pgsql/share/man:$MANPATH
export MANPATH
3.检查配置
退出当前shell,重开命令台,输入命令,检查配置是否都正确。
export -p
五、使用数据库
1.需要为PostgreSQL server配置一个用户
若在linux下,可以使用以下命令(配置一个名为postgres的用户):
adduser postgres
在root模式下:
root# mkdir /usr/local/pgsql/data
root# chown postgres /usr/local/pgsql/data
root# su - postgres
但是,由于Mac os没有adduser命令,其添加用户通过dscl命令。
sudo dscl . -create /Users/postgres
通过以下命令,可查看是否成功
dscl . -list /Users
不过,我用户添加成功之后,问题来了,当我使用以下命令
sudo chown postgres /usr/local/pgsql/data
报错如下:
没办法,我只能把当前电脑使用用户slp进行chown命令(还望知道该问题原因的大佬能留言告诉一下,谢谢):
sudo slp postgres /usr/local/pgsql/data
su - slp
2. 用户定权之后,执行initdb语句:
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
其中-D指向了数据的存储地址为/usr/local/pgsql/data下。
3.开启服务器
- 以前台方式开启:
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
运行如图:
- 以后台方式运行:
sudo nohup /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data </dev/null >>server.log 2>&1 </dev/null &
4. 创建数据库
createdb testdb
5.连接数据库
psql testdb
运行如图:
ok,先记录到这吧