课程: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/pghome
export 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 等错误。