ubuntu16.4安装postgresql

本文分享了在Ubuntu系统上安装PostgreSQL过程中遇到的问题及解决办法。包括如何配置源文件安装最新版本,解决postgresql-common安装失败的问题,以及解决无法连接数据库的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习postgresql,于是打算在电脑上把数据库装上。看了网上的教程,突出一个字简单。然而,我却遇到许多莫名其妙的问题。
具体步骤就不说了,

安装

  1. 创建文件 /etc/apt/sources.list.d/pgdg.list,根据系统版本添加下面这行
#14.04
deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main

#16.04
deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main

#17.04
deb http://apt.postgresql.org/pub/repos/apt/ zesty-pgdg main

这样能获得最新版本的postgresql,如果要安装其他版本

sudo apt install postgresql-xxx

2.安装完之后,直接输入psql,会显示以下错误

psql: could not connect to server: No such file or directory 
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

服务没有开启,输入命令:

#xx替换为版本号
sudo systemctl start postgresql@xx-main.service

安装有多版本的话

#切换到postgres用户
sudo su postgres

#列出所有分支
pg_lsclusters

如图所示

问题

接下来就是我遇到的坑了

1. ubuntu dpkg: error processing package postgresql-common (–configure)….

具体错误一大堆:

dpkg: error processing package postgresql-common (--configure):
 subprocess installed post-installation script returned error exit status 127
dpkg: dependency problems prevent configuration of postgresql-9.3:
 postgresql-9.3 depends on postgresql-common (>= 142~); however:
  Package postgresql-common is not configured yet.

dpkg: error processing package postgresql-9.3 (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of postgresql:
 postgresql depends on postgresql-9.3; however:
  Package postgresql-9.3 is not configured yet.

dpkg: error processing package postgresql (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                                      No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                  Processing triggers for ureadahead (0.100.0-16) ...
Errors were encountered while processing:
 postgresql-common
 postgresql-9.3
 postgresql
E: Sub-process /usr/bin/dpkg returned an error code (1)

然而主要错误就是,postgresql-common安装失败。如果你已经尝试了网上所有解决方案都没有解决,可以尝试下面这种:
备份/var/lib/dpkg/status文件

sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.bak

然后打开文件该文件,查找postgresql-common

Package: postgresql-common
#关键就在这里
Status: install ok half-configured
Priority: optional
Section: database

注意到报错是 not configured yet,于是我尝试将状态改为 install ok installed (参照了其他正常安装的包)。安装成功,关于这些状态区别可以去查看其他资料。

2. 关于psql: could not connect to server:

No such file or directory Is the server running locally and accepting connections on Unix domain socket “/var/run/postgresql/.s.PGSQL.5432”?
这个错误比较隐蔽,我是通过查看日志解决的。一般服务开启,端口没有被占用,数据都能正常连接。但是,我始终没法连接数据库,查看日志发现错误是无法转换localhost。我突然想起,自己曾经改过hosts文件。打开/etc/hosts,添加:

127.0.0.1 localhost

### 安装和配置 PostgreSQL 16.4 的 pg_partman 扩展 #### 准备工作 在安装 `pg_partman` 扩展之前,需要确保已正确安装并运行 PostgreSQL 16.4。如果尚未完成此操作,请先下载并安装适合您系统的 PostgreSQL 版本[^4]。 #### 获取 pg_partman 源码 可以从 GitHub 上获取最新的 `pg_partman` 源码包。以下是具体命令: ```bash cd /usr/src/ wget https://github.com/pgpartman/pg_partman/archive/refs/tags/v5.0.0.tar.gz tar -zxvf v5.0.0.tar.gz cd pg_partman-5.0.0/ ``` > **注意**: 这里假设使用的是 `v5.0.0` 版本的源码包。请根据实际需求调整版本号。 #### 编译与安装扩展 为了成功编译和安装 `pg_partman`,需确认系统中存在必要的开发工具链以及 PostgreSQL 开发头文件 (`libpq-dev`)。可以通过以下方式验证环境准备情况: ```bash which pg_config ``` 如果没有找到该命令,则可能缺少 PostgreSQL 的开发组件。对于基于 Debian 或 Ubuntu 的系统,可通过以下命令解决依赖问题: ```bash sudo apt-get update && sudo apt-get install postgresql-server-dev-16 ``` 而对于 RedHat/CentOS 系统,可尝试通过 EPEL 软件仓库安装对应的 RPM 包: ```bash yum groupinstall "Development Tools" yum install postgresql16-devel ``` 一旦依赖项满足,即可继续执行编译过程: ```bash make USE_PGXS=1 make USE_PGXS=1 install ``` 以上两步会将 `pg_partman` 构建为共享对象库,并将其复制到 PostgreSQL 的标准扩展目录下。 #### 配置 PostgreSQL 参数 为了让 PostgreSQL 加载 `pg_partman` 插件,在其全局配置文件 `postgresql.conf` 中添加如下设置: ```plaintext shared_preload_libraries = 'pg_partman' ``` 保存更改后重启服务以应用新配置: ```bash systemctl restart postgresql-16 ``` 或者手动启动实例: ```bash pg_ctlcluster 16 main restart ``` #### 创建扩展 登录目标数据库并通过 SQL 命令注册 `pg_partman` 扩展: ```sql CREATE EXTENSION IF NOT EXISTS pg_partman; ``` 此时即完成了整个安装流程。后续可根据官方文档进一步探索功能细节[^3]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值