Install postgres from codes in linux

First, we need to create a postgres user and add it to the sudo group

1
usermod -aG sudo postgres # 注意安全,云主机不要这么设置

Get codes

1
git clone --depth=1 https://git.postgresql.org/git/postgresql.git

Compile after installing dependencies

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
sudo apt install -y \
build-essential \
libreadline-dev \
zlib1g-dev \
flex \
bison \
libxml2-dev \
libxslt1-dev \
libssl-dev \
libpam0g-dev \
libedit-dev \
libldap2-dev \
libicu-dev \
tcl-dev \
uuid-dev \
python3-dev \
libperl-dev \
llvm-dev \
clang \
libperl-dev \
libpython3-dev \
libossp-uuid-dev \
systemtap-sdt-dev \
pkg-config
./configure --enable-debug 'CFLAGS=-O0 -g' --enable-cassert --enable-depend --enable-dtrace --without-icu --with-llvm --prefix
make
make install

Modify environment variables

create a configure file

1
~/.pg_env
1
2
3
4
5
6
7
8
9
10
# 设置当前使用的 PostgreSQL 安装路径
export PG_HOME=$HOME/pgsql
export PGDATA=$HOME/pgdata
export PATH=$PG_HOME/bin:$PATH
export LD_LIBRARY_PATH=$PG_HOME/lib:$LD_LIBRARY_PATH

# 可选:显示当前 PostgreSQL 版本
echo "🔧 Loaded PG env: $(pg_config --version)"
在 ~/.bashrc 末尾加上这一行:
[ -f ~/.pg_env ] && source ~/.pg_env

initdb

1
2
sudo chown -R postgres:postgres /usr/local/pgsql
initdb

start

1
pg_ctl -D /usr/local/pgsql/data -l logfile start

About Extensions

cd contrib

1
2
make
make install

登录你要使用的数据库,然后执行:

1
2
CREATE EXTENSION pageinspect;
\dx