在 Ubuntu 下彻底卸载并重新安装 PostgreSQL(包括所有版本及其数据目录)的步骤
下面是一个在 Ubuntu 下彻底卸载并重新安装 PostgreSQL(包括所有版本及其数据目录)的步骤。
文章目录
- [在 Ubuntu 下彻底卸载并重新安装 PostgreSQL(包括所有版本及其数据目录)的步骤](#在 Ubuntu 下彻底卸载并重新安装 PostgreSQL(包括所有版本及其数据目录)的步骤)
-
- 一、备份(可选,但强烈推荐)
- [二、卸载 PostgreSQL 并删除残留文件](#二、卸载 PostgreSQL 并删除残留文件)
- [三、重新安装 PostgreSQL 与 PostGIS](#三、重新安装 PostgreSQL 与 PostGIS)
- 四、安装postgispgpointcloud扩展
- 五、验证安装与启动状况
- 六、恢复数据(如果做了备份)
一、备份(可选,但强烈推荐)
bash
# 切换到 postgres 用户,导出所有数据库
sudo -u postgres pg_dumpall > ~/all_databases_backup.sql
将 ~/all_databases_backup.sql
拷到安全位置。
二、卸载 PostgreSQL 并删除残留文件
bash
# 1. 停止服务
sudo systemctl stop postgresql
# 2. 卸载所有 postgresql 包
sudo apt purge -y postgresql* libpq-dev
# 3. 删除配置和数据目录
sudo rm -rf /etc/postgresql
sudo rm -rf /etc/postgresql-common
sudo rm -rf /var/lib/postgresql
sudo rm -rf /var/log/postgresql
sudo rm -rf /var/run/postgresql
# 4. 清理无用依赖和缓存
sudo apt autoremove -y
sudo apt autoclean
此时系统中已无 PostgreSQL 及其配置、数据残留。
三、重新安装 PostgreSQL 与 PostGIS
bash
# 1. 更新包列表
sudo apt update
# 2. 安装 PostgreSQL(默认版本)及其 contrib 扩展
sudo apt install -y postgresql postgresql-contrib
# 3. 如果需要 PostGIS 和 pointcloud 支持,一并安装:
sudo apt install -y postgis postgresql-*-pointcloud
安装完成后,APT 会自动为你创建并启动一个名为 main
的 cluster(通常对应当前系统的 PostgreSQL 主版本)。
ERROR: extension "postgis" is not available
PostgreSQL 找不到相应版本的 PostGIS 和 PointCloud 控制文件,也就是说系统里并没有为 PostgreSQL 17 安装这些扩展包。Ubuntu 默认仓库里可能只给早期版本打包,或者你还没装上对应的 "postgresql-17-postgis"、"postgresql-17-pgpointcloud" 这样的版本化包
四、安装postgispgpointcloud扩展
-
更新 apt 索引
bashsudo apt update
-
搜索可用的 postgis 包
bashapt-cache search postgresql-17-postgis # 也可以搜 pointcloud apt-cache search postgresql-17-pgpointcloud
如果能看到类似
postgresql-17-postgis-3
、postgresql-17-pgpointcloud
的条目,直接安装它们: -
安装版本化扩展
bashsudo apt install -y postgresql-17-postgis-3 postgresql-17-pgpointcloud
-
重启你的 cluster
bashsudo pg_ctlcluster 17 main restart
-
进入 psql 创建扩展
bashsudo -u postgres psql -d postgis_aa CREATE EXTENSION postgis; CREATE EXTENSION pointcloud; \q
bash
(base) zhanyong@ubuntu:~/cesium-deepsea/SLAM$ apt-cache search postgresql-17-postgis
postgresql-17-postgis-3 - Geographic objects support for PostgreSQL 17
postgresql-17-postgis-3-dbgsym - debug symbols for postgresql-17-postgis-3
postgresql-17-postgis-3-scripts - Geographic objects support for PostgreSQL 17 -- SQL scripts
(base) zhanyong@ubuntu:~/cesium-deepsea/SLAM$
安装对应的扩展即可
bash
sudo apt install -y postgresql-17-postgis-3 postgresql-17-postgis-3-scripts
sudo apt install -y postgresql-17-pointcloud
sudo -u postgres psql -d postgis_aa
CREATE EXTENSION postgis;
CREATE EXTENSION pointcloud;
如果成功应该显示如下内容:
bash
postgis_aa=# CREATE EXTENSION postgis;
CREATE EXTENSION
postgis_aa=# CREATE EXTENSION pointcloud;
CREATE EXTENSION
五、验证安装与启动状况
bash
# 查看 cluster 状态
sudo pg_lsclusters
# 启动 cluster(如果未自动启动)
sudo pg_ctlcluster $(pg_lsclusters -h | awk 'NR==1{print $1, $2}') main start
# 切换到 postgres 用户并进入 psql
sudo -i -u postgres psql
在 psql
里,你可以执行:
sql
SELECT version();
\l -- 列出数据库
\q -- 退出
如果输出了 PostgreSQL 版本号,且没有报错,说明安装和集群启动都已成功。
六、恢复数据(如果做了备份)
bash
# 作为 postgres 用户恢复所有库
sudo -i -u postgres psql < ~/all_databases_backup.sql
恢复完成后,不要忘了删除或保管好备份文件。
完成上述步骤后,你就拥有了一个全新的、正常运行的 PostgreSQL 环境,可以继续创建数据库、启用 PostGIS/pointcloud 扩展,并建表了。