背景介绍

在企业环境中,经常会遇到部分服务器处于内网或隔离网络环境,无法直接访问外部网络的情况。当这些服务器需要使用特定软件工具时,就需要通过离线安装的方式来部署。本文将详细介绍如何在 CentOS 7 系统中离线安装 PostgreSQL 12 客户端工具,特别是 pg_dump 工具。

环境要求

  • 操作系统:CentOS 7
  • PostgreSQL 版本:12
  • 一台可访问外网的 CentOS 7 服务器(用于下载安装包)
  • 一台无法访问外网的 CentOS 7 服务器(目标安装服务器)

操作思路

整个过程分为两个阶段:

  1. 在联网服务器上下载所需的 RPM 包
  2. 将下载的包传输到目标服务器并进行安装

详细操作步骤

第一阶段:在联网服务器上准备安装包

1. 添加 PostgreSQL 12 官方仓库

首先需要添加 PostgreSQL 官方 YUM 仓库,以便能够下载正确的 RPM 包:

# 安装 PostgreSQL 12 官方仓库
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm


2. 下载 PostgreSQL 12 客户端 RPM 包

使用 yum--downloadonly 选项只下载不安装相关包:

# 仅下载 PostgreSQL 12 客户端及相关依赖,不安装
yum install --downloadonly --downloaddir=/tmp/pg_client postgresql12


这个命令会自动解析并下载 postgresql12 包及其所有依赖项到指定目录。

3. 打包所有下载的 RPM 文件

为了方便传输,将所有下载的 RPM 文件打包成一个压缩文件:

# 创建压缩包便于传输
tar -czf pg_client.tar.gz /tmp/pg_client/*.rpm


第二阶段:在目标服务器上安装客户端

1. 传输文件

将打包好的 pg_client.tar.gz 文件通过安全的方式(如 SCP、USB 设备等)传输到目标服务器。

2. 解压并安装

在目标服务器上执行以下操作:

# 解压文件
tar -xzf pg_client.tar.gz -C /tmp/

# 安装 PostgreSQL 12 客户端
yum localinstall -y /tmp/pg_client/*.rpm


使用 yum localinstall 命令可以直接从本地文件安装 RPM 包,并自动处理依赖关系。

3. 验证安装

安装完成后,验证 pg_dump 是否正确安装:

# 检查 pg_dump 版本
pg_dump --version


如果显示类似 pg_dump (PostgreSQL) 12.x 的输出,则表示安装成功。

注意事项

  1. 确保两台服务器的架构一致(如都是 x86_64)
  2. 如果目标服务器上有其他版本的 PostgreSQL,需要注意版本冲突问题
  3. 建议在传输前校验文件完整性,确保安装包未损坏
  4. 如需其他 PostgreSQL 工具,可以在下载时指定相应的包名

总结

通过上述步骤,我们成功实现了在无外网连接的 CentOS 7 服务器上安装 PostgreSQL 12 客户端。这种方法不仅适用于 PostgreSQL,也可以推广到其他需要离线安装的软件包。掌握这种离线安装技能对于系统管理员和 DevOps 工程师来说是非常重要的。