Ubuntu 20.04卸载并重装 PostgreSQL
在 Ubuntu 下彻底卸载并重新安装 PostgreSQL(包括所有版本及其数据目录)的步骤
下面是一个在 Ubuntu 下彻底卸载并重新安装 PostgreSQL(包括所有版本及其数据目录)的步骤。
文章目录
- 在 Ubuntu 下彻底卸载并重新安装 PostgreSQL(包括所有版本及其数据目录)的步骤
- 一、备份(可选,但强烈推荐)
- 二、卸载 PostgreSQL 并删除残留文件
- 三、重新安装 PostgreSQL 与 PostGIS
- 四、安装postgispgpointcloud扩展
- 五、验证安装与启动状况
- 六、恢复数据(如果做了备份)
一、备份(可选,但强烈推荐)
# 切换到 postgres 用户,导出所有数据库
sudo -u postgres pg_dumpall > ~/all_databases_backup.sql
将 ~/all_databases_backup.sql
拷到安全位置。
二、卸载 PostgreSQL 并删除残留文件
# 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
# 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 索引
sudo apt update
-
搜索可用的 postgis 包
apt-cache search postgresql-17-postgis # 也可以搜 pointcloud apt-cache search postgresql-17-pgpointcloud
如果能看到类似
postgresql-17-postgis-3
、postgresql-17-pgpointcloud
的条目,直接安装它们: -
安装版本化扩展
sudo apt install -y postgresql-17-postgis-3 postgresql-17-pgpointcloud
-
重启你的 cluster
sudo pg_ctlcluster 17 main restart
-
进入 psql 创建扩展
sudo -u postgres psql -d postgis_aa CREATE EXTENSION postgis; CREATE EXTENSION pointcloud; \q
(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$
安装对应的扩展即可
sudo apt install -y postgresql-17-postgis-3 postgresql-17-postgis-3-scripts
sudo apt install -y postgresql-17-pointcloudsudo -u postgres psql -d postgis_aa
CREATE EXTENSION postgis;
CREATE EXTENSION pointcloud;
如果成功应该显示如下内容:
postgis_aa=# CREATE EXTENSION postgis;
CREATE EXTENSION
postgis_aa=# CREATE EXTENSION pointcloud;
CREATE EXTENSION
五、验证安装与启动状况
# 查看 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
里,你可以执行:
SELECT version();
\l -- 列出数据库
\q -- 退出
如果输出了 PostgreSQL 版本号,且没有报错,说明安装和集群启动都已成功。
六、恢复数据(如果做了备份)
# 作为 postgres 用户恢复所有库
sudo -i -u postgres psql < ~/all_databases_backup.sql
恢复完成后,不要忘了删除或保管好备份文件。
完成上述步骤后,你就拥有了一个全新的、正常运行的 PostgreSQL 环境,可以继续创建数据库、启用 PostGIS/pointcloud 扩展,并建表了。