准备
需要准备一台能联网的相同配置的Ubuntu 24.04 机器
方法一:postgresql-16源码编译
1.
PostgreSQL源码可以从官网下载,下载地址:PostgreSQL: File Browser
2. 准备编译环境,根据官网的介绍(PostgreSQL: Documentation: 17: Chapter 17. Installation from Source Code):
# 安装编译环境(期间会选择时区,亚洲输入6,上海输入70)
sudo apt update
sudo apt install make gcc tar pkg-config libicu-dev libreadline-dev zlib1g-dev
# 解压
tar -zxf postgresql-16.9.tar.gz
# 切换目录
cd postgresql-16.9
这里环境的按照一定要按照./configure
提示来安装,缺少哪个就安装哪个
# 配置:--prefix表示存放编译后的文件目录
sudo ./configure --prefix=/opt/postgresql-16.9
# 编译
sudo make
# 安装
sudo make install
执行完成之后,把这整个目录打包一下,以后就可以把它直接发到服务器上去部署了:tar -zcf postgresql-16.9-bin.tar.gz -C /opt .
然后在没网的服务器进行部署:
# 解压到一个目录,比如我这里是/opt
sudo tar -zxf postgresql-16.9-bin.tar.gz -C /opt
# 创建数据目录
sudo mkdir -p /opt/postgresql-16.9/data /opt/postgresql-16.9/logs
# 创建用户(输入密码后一路回车)
adduser postgres
# 授权
sudo chown postgres /opt/postgresql-16.9/data /opt/postgresql-16.9/logs
# 切换用户
su - postgres
# 进行初始化
/opt/postgresql-16.9/bin/initdb -D /opt/postgresql-16.9/data
/opt/postgresql-16.9/bin/pg_ctl -D /opt/postgresql-16.9/data -l /opt/postgresql-16.9/logs/postgresql.log start
/opt/postgresql-16.9/bin/createdb test
/opt/postgresql-16.9/bin/psql test
# 启动
/opt/postgresql-16.9/bin/pg_ctl -D /opt/postgresql-16.9/data start
# 停止
/opt/postgresql-16.9/bin/pg_ctl -D /opt/postgresql-16.9/data stop
# 重启
/opt/postgresql-16.9/bin/pg_ctl -D /opt/postgresql-16.9/data restart
# 查看状态
/opt/postgresql-16.9/bin/pg_ctl -D /opt/postgresql-16.9/data status
到这里我就安装成功了,可以验证:
/opt/postgresql-16.9/bin/psql --version
以上参考的是这个大佬的帖子:Ubuntu 20.04下离线安装PostgreSQL - 没有星星的夏季 - 博客园
但是会有一个坑,就是不能直接 psql --version,似乎psql没有写进环境变量,但是export /opt/postgresql-16.9/bin到环境变量里面,也不能解决问题,最后软连接了一下:sudo ln -s /opt/postgresql-16.9/bin/psql /usr/bin/psql,这个问题解决了
方法二:下载依赖,离线安装
因为主包安装完postgresql还要安装对应的postgis,用方法一安装后的psql不在默认的安装位置,导致安装postgis扩展的时候提示找不到postgresql,所以又用方法二安装了一遍
1.用下面这个命令下载postgresql-16,gdal ,postgis的所有的依赖,但是不安装
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends postgresql-16 | grep -v i386 | grep "^\w")
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends libgdal34t64 | grep -v i386 | grep "^\w")
sudo apt-get -d install postgresql-16-postgis-3 #只下载不安装
默认下载路径:/var/cache/apt/archives/,cp到自己的路径下,打包放在没网的服务器上的自定义路径上,用dpkg安装:
sudo dpkg -i ~/postgis-offline/*.deb
安装过程可能会报错:类似于某个包依赖别的包,但是这个包没有安装,再执行下面的语句,在有网的服务器把需要的全部下载下来,再打包到相同的路径,再安装,直到没有报错
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends XXX | grep -v i386 | grep "^\w")
我到这里就安装成功了,验证安装:
#验证psql
psql --version
#验证postgis
su - postgres
psql
create extension postgis
参考:https://blog.csdn.net/E_oven/article/details/147047285