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

内网开发福音:保姆级教程,用一台能上网的Ubuntu搞定另一台机器的PostgreSQL 14离线安装

内网开发福音:保姆级教程,用一台能上网的Ubuntu搞定另一台机器的PostgreSQL 14离线安装

在企业的开发和生产环境中,内网隔离是常见的安全策略。但这也带来了一个现实问题:如何在内网机器上安装像PostgreSQL这样的关键数据库服务?本文将介绍一种高效的双机协作方案,利用一台能上网的Ubuntu机器为内网环境准备完整的PostgreSQL 14离线安装包。

1. 准备工作与环境配置

1.1 确认系统版本

首先需要确保两台机器使用相同版本的Ubuntu系统。可以通过以下命令检查:

lsb_release -a

输出示例:

No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.4 LTS Release: 20.04 Codename: focal

关键点

  • 确保两台机器的Codename一致(如都是focal)
  • 推荐使用LTS版本(20.04或22.04)

1.2 安装必要工具

在上网机器上安装后续操作所需的工具:

sudo apt update sudo apt install -y apt-rdepends wget

apt-rdepends是分析依赖关系的关键工具,而wget用于下载PG仓库密钥。

2. 构建完整的离线安装包

2.1 添加PostgreSQL官方仓库

在上网机器上执行以下命令添加PG官方仓库:

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

2.2 确定要安装的版本

检查可用的PostgreSQL版本:

apt-cache show postgresql | grep Version

典型输出:

Version: 14+243.pgdg20.04+1 Version: 12+214ubuntu0.1 Version: 12+214

2.3 分析依赖关系

使用apt-rdepends分析完整依赖树:

apt-rdepends postgresql-14 > dependencies.txt

关键依赖通常包括:

  • postgresql-client-14
  • postgresql-common
  • libpq5
  • pgdg-keyring

2.4 下载所有依赖包

创建下载脚本download.sh

#!/bin/bash packages=( postgresql-14 postgresql-client-14 postgresql-common postgresql-client-common libpq5 pgdg-keyring ) for pkg in "${packages[@]}"; do apt download $pkg done

运行脚本后,当前目录会生成所有需要的.deb文件。

3. 离线安装与问题排查

3.1 传输文件到内网机器

将下载的.deb文件打包传输:

tar czvf pg14-offline.tar.gz *.deb

然后通过U盘或内部文件共享服务将压缩包传输到内网机器。

3.2 安装顺序与依赖处理

在内网机器上按特定顺序安装:

  1. 先安装keyring:

    sudo dpkg -i pgdg-keyring_*.deb
  2. 安装common包:

    sudo dpkg -i postgresql-client-common_*.deb sudo dpkg -i postgresql-common_*.deb
  3. 处理依赖:

    sudo apt --fix-broken install
  4. 安装主程序:

    sudo dpkg -i postgresql-client-14_*.deb sudo dpkg -i libpq5_*.deb sudo dpkg -i postgresql-14_*.deb

3.3 常见问题解决

问题1:缺少标准库依赖

解决方案:

sudo apt --fix-broken install

问题2:locale配置警告

解决方法:

sudo locale-gen en_US.UTF-8

4. 验证与优化配置

4.1 验证安装

检查服务状态:

sudo systemctl status postgresql

连接测试:

sudo -u postgres psql -c "SELECT version();"

4.2 基础安全配置

修改postgres用户密码:

sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'your_password';"

调整监听地址:

sudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /etc/postgresql/14/main/postgresql.conf

4.3 性能调优建议

根据内存调整配置:

sudo nano /etc/postgresql/14/main/postgresql.conf

推荐参数(4GB内存机器):

shared_buffers = 1GB effective_cache_size = 3GB maintenance_work_mem = 256MB

5. 高级技巧与自动化方案

5.1 一键下载脚本

创建完整的下载脚本download_all.sh

#!/bin/bash set -e # 获取所有依赖 deps=$(apt-rdepends postgresql-14 | grep -v "^ " | sort | uniq) # 下载所有包 for dep in $deps; do apt download $dep 2>/dev/null || echo "Skipping $dep (not found)" done

5.2 制作本地仓库

更专业的做法是创建本地APT仓库:

sudo apt install -y dpkg-dev mkdir pg14-repo mv *.deb pg14-repo cd pg14-repo dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

在内网机器上添加源:

echo "deb [trusted=yes] file:/path/to/pg14-repo ./" | sudo tee /etc/apt/sources.list.d/pg14-local.list sudo apt update

5.3 容器化方案

对于需要频繁部署的场景,考虑使用Docker:

# 在上网机器上拉取镜像 docker pull postgres:14 # 保存镜像 docker save postgres:14 -o postgres14.tar # 在内网机器加载 docker load -i postgres14.tar
http://www.jsqmd.com/news/903597/

相关文章:

  • 5.26未做完
  • 从哑变量到One-Hot:R语言中处理分类变量的Lasso回归全攻略(含糖尿病数据案例)
  • 终极Windows硬件指纹伪装指南:EASY-HWID-SPOOFER完全解析
  • 《2026年5月徐州黄金回收哪家好?余生黄金回收连锁门店全解析》 - 润富黄金珠宝行
  • 【Linux IO模型】Linux IO模型详解:阻塞/非阻塞/IO多路复用、Epoll源码实战,吃透百万并发服务器核心原理
  • 2026支付宝立减金回收操作指南:折扣、渠道、流程全解析 - 可可收公众号
  • Claude Code 在大型代码库里的工程实践
  • 空中威胁识别 yolo数据集 无人机数据集 多旋翼无人机识别
  • LOIC:网络压力测试工具的技术架构与设计哲学深度解析
  • 春展启幕|2026 春季广交会展台搭建,品质服务商这样选 - 资讯焦点
  • 如何快速掌握VBA-JSON:面向Office开发者的终极数据转换指南
  • 2026北京搬家公司怎么选?政府央企高校都在用的标准化选型指南 - 年度推荐企业名录
  • 避坑指南:MariaDB密码插件simple_password_check配置的那些‘坑’与最佳实践
  • 2026年北京搬家公司怎么选?资质齐全、口碑权威的一站式搬迁方案深度对比指南 - 年度推荐企业名录
  • 基于LattePanda MU与Bazzite系统打造紧凑型x86游戏主机实战指南
  • 为什么你的Gemini用户第3天就流失?5类典型流失画像+实时干预SOP(附可复用埋点清单)
  • 2026年新松多可和遨博机器人及法奥机器人行业深度分析:具身智能焊接防爆协作机器人的价值抉择与生态构建 - 深度智识库
  • UWPHook:Windows UWP游戏与Steam平台无缝集成的技术解决方案
  • 告别词库焦虑!用Mac自带五笔+文本替换,打造你的专属高效输入方案
  • 快速排序代码
  • VRX自主水面舰艇仿真平台:从零开始掌握水上机器人仿真技术
  • 通达信缠论插件:让复杂技术分析变得简单直观
  • VALSE 2026 Tutorial分享|视觉基础模型:从单任务到通用模型
  • 别再写死负责人了!Flowable候选人组实战:用Java代码搞定研发部请假审批
  • Obsidian Projects:如何在纯文本环境中实现高效项目管理?
  • 2026北京搬家公司怎么选?迁禧、四通、蓝犀牛等5大品牌深度横评+避坑指南 - 年度推荐企业名录
  • 税费前置展示普及之后跨境卖家如何减少结算阶段心理落差
  • 学习笔记。
  • 揭开高频交易的神秘面纱:以CTP为例,带你全面了解期货Tick数据
  • 京东e卡回收注意事项,这几点不看准吃亏 - 京顺回收