课程:2022 年下学期,秦建斌老师的《数据库内核原理与实现》课程。 示例环境:Ubuntu 20.04 LTS PostgreSQL 版本: 12.5
1. 准备 linux 环境/虚拟机/或Windows下使用wsl
Linux/Mac 用户可直接编译,Windows 用户自行搜索 wsl 教程配置后,剩余流程同 Linux 用户。
Mac 用户需要用其他方式(homebrew 或 macports)安装 configure 过程中缺少的包。
2. 登陆机器,拷贝 PGDev.zip 到用户文件夹~
中
使用 ssh/scp,或执行指令现场下载:
代码语言:txt复制wget https://ghproxy.com/https://raw.githubusercontent.com/Miigon/pgdev-zip/master/PGDev.zip -O PGDev.zip
3. 安装 unzip 和 libreadline-dev:
代码语言:javascript复制sudo apt install unzip libreadline-dev
4. 解压 PGDev.zip
代码语言:javascript复制unzip PGDev.zip
解压完成后,出现 PGDev 文件夹:
5. 进入 PGDev 文件夹,创建 pghome 与 data 文件夹,用于存储 PostgreSQL 本身以及 PostgreSQL 所产生的数据
代码语言:javascript复制cd PGDev/
mkdir pghome
mkdir data
6. 使用 nano (或 vim/gedit 等其他编辑器) 编辑 env-debug 文件:
方向键移动光标
- 将第一行的
PGHOME=/Users/jqin/PGDev/target-debug
整行改为PGHOME=~/PGDev/pghome
- 将第三行的
export PGHOST=$PGDATA
改为export PGHOST=127.0.0.1
修改后:
按 Control X,下方提示 Save modified buffer?
,按 Y,出现 File Name To Write: env-debug
直接按回车,保存退出。
7. 执行 source
代码语言:javascript复制source env-debug
这一步将前面配置好的路径导入当前 shell 的环境变量中,没有任何输出则表示执行成功
8. 执行 configure(autoconf)
cd 进入 postgresql-12.5
,执行:
./configure --prefix=$PGHOME --enable-debug
UPDATE: 2022-07 增加 –enable-debug 选项,方便后续 gdb 调试
(确保执行时路径正确)
如果一开始有装 libreadline-dev
,这里应该能执行成功:
9. 构建 & 安装
执行:
代码语言:javascript复制make -j4
这里假设机器 4 核心,如果不是可自行更改。写错了也不会影响构建结果
等待构建完成,看到这一句代表构建完成:
将编译好的 PostgreSQL 安装到 pghome 中:
代码语言:javascript复制make install
安装成功的提示:
10. 运行
- 执行
initdb
初始化数据库:
- 执行以下命令启动 PostgreSQL 服务:pg_ctl -D $PGDATA -l $PGDATA/logfile start
(注意这里的指令和上图提示的指令不同)
- 执行
createdb
创建数据库,再执行psql
进行连接: (这两个指令后面都可带参数来指定数据库名,不带则默认同用户名,建议不带参数。)
此时应该就可以正常使用了:
后记
- 这样安装后,PostgreSQL 本体会在
~/PGDev/pghome
中(PGHOME),数据会在~/PGDev/data
中(PGDATA)。 - 后续如果对源代码作出修改,只需要在
~/PGDev/postgresql-12.5
中再次执行 make 与 make install 即可。 - 建议使用 git 对
postgresql-12.5
文件夹进行版本管理,方便后续修改回退。 - 如果关闭了当前终端,打开新终端后需要先执行一次
source ~/PGDev/env-debug
,否则会提示找不到 psql 等错误。