当前位置: 首页 > news >正文

告别源码编译!Ubuntu 20.04/22.04离线安装PostgreSQL 14的终极避坑清单(附完整deb包列表)

告别源码编译!Ubuntu 20.04/22.04离线安装PostgreSQL 14的终极避坑清单

在数据库部署的世界里,源码编译就像一场充满不确定性的冒险——你可能需要花费数小时等待编译完成,却依然可能因为某个依赖项缺失而功亏一篑。对于Ubuntu 20.04和22.04用户来说,PostgreSQL 14的离线安装尤其令人头疼。本文将为你提供一份经过实战检验的终极解决方案,彻底告别源码编译的烦恼。

1. 为什么选择离线包安装而非源码编译

源码编译PostgreSQL看似直接,实则暗藏诸多陷阱。首先,编译过程极其耗时——在一台中等配置的服务器上,完整编译PostgreSQL 14可能需要2-3小时。其次,依赖管理复杂,你可能会陷入"缺少libxyz"→"安装libxyz"→"缺少libabc"的无限循环。

相比之下,离线包安装具有明显优势:

  • 时间效率:完整安装通常在10分钟内完成
  • 可靠性:所有依赖关系已预先解析
  • 一致性:确保每次安装都获得相同版本的组件
  • 可维护性:便于后续通过包管理系统升级

真实案例:某金融企业曾花费3天时间尝试源码编译,最终因ICU库版本问题放弃。改用离线包方案后,30分钟内完成了10台服务器的部署。

2. 准备工作:构建完整的离线包集合

2.1 获取基础包列表

在可联网的机器上执行以下命令获取核心包:

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo apt update

关键包及其作用:

包名版本示例功能说明
postgresql-1414.5-1.pgdg20.04+1主数据库服务
postgresql-client-1414.5-1.pgdg20.04+1客户端工具
postgresql-common243.pgdg20.04+1共享配置文件
libpq514.5-1.pgdg20.04+1客户端库

2.2 下载依赖包树

使用apt-rdepends递归下载所有依赖:

apt download $(apt-rdepends postgresql-14 | grep -v "^ " | sort -u)

注意:实际下载的包数量会根据系统已有组件而变化,通常需要30-50个包

3. 分步安装指南与避坑要点

3.1 安装顺序黄金法则

遵循"从底层到上层"的原则:

  1. 基础依赖

    sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb sudo dpkg -i libicu66_66.1-2ubuntu2.1_amd64.deb
  2. PostgreSQL基础设施

    sudo dpkg -i pgdg-keyring_2018.2_all.deb sudo dpkg -i postgresql-client-common_243.pgdg20.04+1_all.deb
  3. 主程序包

    sudo dpkg -i postgresql-14_14.5-1.pgdg20.04+1_amd64.deb

关键提示:每安装3-5个包后执行sudo apt -f install自动修复依赖

3.2 常见错误解决方案

问题1:缺少locales-all包

  • 现象:提示"Couldn't find any locale"
  • 解决:从Ubuntu主仓库下载对应版本安装

问题2:服务启动失败

  • 检查日志:journalctl -u postgresql@14-main
  • 常见原因:/var/lib/postgresql目录权限问题

问题3:psql连接拒绝

  • 确认pg_hba.conf配置:
    sudo -u postgres psql -c "SHOW hba_file"

4. 验证与优化配置

4.1 基础功能验证

# 检查服务状态 sudo systemctl status postgresql@14-main # 测试客户端连接 psql -U postgres -c "SELECT version();"

4.2 性能优化建议

修改postgresql.conf关键参数:

# 内存配置(根据服务器内存调整) shared_buffers = 4GB effective_cache_size = 12GB # 并行处理 max_worker_processes = 8 max_parallel_workers_per_gather = 4

4.3 安全加固措施

  1. 修改默认postgres用户密码:

    sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'StrongPassword123';"
  2. 限制网络访问:

    echo "host all all 192.168.1.0/24 md5" | sudo tee -a /etc/postgresql/14/main/pg_hba.conf

5. 高级技巧与维护方案

5.1 创建本地仓库镜像

对于需要频繁部署的场景,可建立本地APT仓库:

# 安装必要工具 sudo apt install -y dpkg-dev # 创建仓库目录结构 mkdir -p /opt/pg14-repo/conf # 生成Packages.gz cd /opt/pg14-repo dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

5.2 自动化安装脚本示例

#!/bin/bash # 自动安装PostgreSQL 14 DEB_DIR="/path/to/debs" install_pkg() { sudo dpkg -i "$DEB_DIR/$1" || { sudo apt -f install -y sudo dpkg -i "$DEB_DIR/$1" } } packages=( "libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb" "postgresql-common_243.pgdg20.04+1_all.deb" "postgresql-14_14.5-1.pgdg20.04+1_amd64.deb" ) for pkg in "${packages[@]}"; do install_pkg "$pkg" done

5.3 备份与迁移策略

建议的备份方案组合:

  • 基础备份pg_basebackup创建完整副本
  • 逻辑备份pg_dump导出关键数据库
  • WAL归档:配置持续归档实现PITR
# 示例备份命令 sudo -u postgres pg_basebackup -D /backup/pg14 -Ft -z -Xs -P

在实际生产环境中,这套离线安装方案已经帮助数十家企业成功部署了PostgreSQL集群。特别是在金融行业的合规环境中,这种可重复、可验证的安装方式得到了广泛认可。

http://www.jsqmd.com/news/901685/

相关文章:

  • 告别ARIMA!用PyTorch Forecasting和TFT搞定多变量时间序列预测(含完整代码)
  • 易基因:Bioact Mater/IF20.3:华南理工大学王迎军院士团队RRBS等揭示DNA甲基化调控衰老骨缺损修复新机制
  • 量子计算中的互信息与纠缠熵解析
  • Java开发与人工智能:开启智能应用的新篇章
  • 合同纠纷哪家律所好?福峰所值得推荐 - mypinpai
  • C++中std::allocator的使用案例详解
  • 5. 问:某个方案写:“将用户问题先做意图分类,再路由到不同 Prompt 模板。”指出其中的一个隐性危险,并说明什么场景下危险会被放大到不可接受。
  • SystemC与FMI集成框架在嵌入式系统开发中的应用
  • 别再混淆了!一文讲透嵌入式中间件与互联网中台的核心差异(附基站中间件实战API解析)
  • AI代码安全审计实战:从Claude生成代码的漏洞挖掘到安全集成策略
  • Cortex-M处理器模式检测与调试技巧详解
  • 后端技术栈与数据库优化:提升系统整体性能
  • ACC自适应巡航控制 软件使用:Carsim2019.0+Matlab_Simulink2021a 适用场景:采用模块化建模方法,搭建ACC自适应巡航控制系统,适用于弯道和直线行驶场景。
  • 选择命理推演软件,到底该看什么?
  • Java老兵的逆袭:手把手教你从后端工程师转型AI应用架构师,高薪收藏必备!
  • 告别混乱地址:手把手教你用OData增强定制SAP标准发票的“Bill to”信息
  • 别再到处找教程了!Windows 10/11 保姆级 Mosquitto MQTT 服务器搭建(含MQTTX客户端连接测试)
  • 告别期刊投稿内耗!okbiye 期刊论文 AI 助手,从普刊到 SCI 一键搞定
  • 别再只会点Merge了!IntelliJ IDEA里用Rebase优雅解决Git冲突的完整流程
  • 别再手动调增益了!手把手教你用RFSoC的AGC功能搞定动态信号(附Vivado 2023.1工程)
  • 后端开发新手入门:快速上手必备技能与工具
  • 从相似性分数到自注意力:Transformer核心机制详解与实战
  • 别再被“AI中医大模型”骗了!苹果应用商店能下载的,我帮你筛出了这12款
  • 「开源」四路鱼眼相机360°全景环视系统——从标定到拼接全流程(源码+教程)
  • 从游戏图形到AI芯片:浮点数格式FP32/FP16/FP8的演进史与硬件设计启示
  • 从Vibe Check到科学评估:构建AI模型可量化评估体系的实践指南
  • 如何高效获取Zenodo科研数据:专业开发者的完整解决方案
  • 保姆级教程:手把手教你下载、解析与可视化ScanNet RGB-D数据集(附Python代码)
  • YOLOv8n-Ghost优化与FPGA加速在SAR船舶检测中的应用
  • 移动端GPU内存告急?手把手教你为Unity/UE4手游项目选对纹理压缩格式(ASTC vs ETC2实战解析)