
课程:2022 年下学期,秦建斌老师的《数据库内核原理与实现》课程。 示例环境:Ubuntu 20.04 LTS PostgreSQL 版本: 12.5
Linux/Mac 用户可直接编译,Windows 用户自行搜索 wsl 教程配置后,剩余流程同 Linux 用户。
Mac 用户需要用其他方式(homebrew 或 macports)安装 configure 过程中缺少的包。
~中使用 ssh/scp,或执行指令现场下载:
wget https://ghproxy.com/https://raw.githubusercontent.com/Miigon/pgdev-zip/master/PGDev.zip -O PGDev.zip

sudo apt install unzip libreadline-dev

unzip PGDev.zip

解压完成后,出现 PGDev 文件夹:

cd PGDev/
mkdir pghome
mkdir data

方向键移动光标

PGHOME=/Users/jqin/PGDev/target-debug 整行改为 PGHOME=~/PGDev/pghomeexport PGHOST=$PGDATA 改为 export PGHOST=127.0.0.1修改后:

按 Control + X,下方提示 Save modified buffer?,按 Y,出现 File Name To Write: env-debug 直接按回车,保存退出。
source env-debug
这一步将前面配置好的路径导入当前 shell 的环境变量中,没有任何输出则表示执行成功

cd 进入 postgresql-12.5,执行:
./configure --prefix=$PGHOME --enable-debug
UPDATE: 2022-07 增加 –enable-debug 选项,方便后续 gdb 调试

(确保执行时路径正确)
如果一开始有装 libreadline-dev,这里应该能执行成功:

执行:
make -j4
这里假设机器 4 核心,如果不是可自行更改。写错了也不会影响构建结果
等待构建完成,看到这一句代表构建完成:

将编译好的 PostgreSQL 安装到 pghome 中:
make install
安装成功的提示:

initdb 初始化数据库:

(注意这里的指令和上图提示的指令不同)
createdb 创建数据库,再执行 psql 进行连接:
(这两个指令后面都可带参数来指定数据库名,不带则默认同用户名,建议不带参数。)

此时应该就可以正常使用了:

~/PGDev/pghome 中(PGHOME),数据会在 ~/PGDev/data 中(PGDATA)。~/PGDev/postgresql-12.5 中再次执行 make 与 make install 即可。postgresql-12.5 文件夹进行版本管理,方便后续修改回退。source ~/PGDev/env-debug,否则会提示找不到 psql 等错误。