今天安装 Postgresql14 遇到一个问题, 目标服务器只有内网, 内网提供标准的apt仓库, 但是因为不能连接外网, 所以没法添加第三方仓库, 这样安装pg14就成了问题.

从pg的官网看, https://www.postgresql.org/download/, 对于Linux, pg只提供仓库和源码两种方式, 因此不能访问外网时, 貌似只有源码编译这条路. 因为源码编译费时费力并且安装阶段需要自行配置, 容易出错. 对于机器上只需要安装一个实例的场景, 能用仓库还是用仓库.

如果还有一台安装了同样发行版, 并且可以上网的机器, 可以通过这台机器将离线安装包下载下来, 再传到目标机器上安装. 下载离线安装包和中转机器是否已经安装此软件无关, 即使已经安装, 也可以下载

步骤一: 按正常安装方式添加第三方仓库

# Create the file repository configuration:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' # Import the repository signing key:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - # Update the package lists:
sudo apt-get update

这时候通过下面的命令可以看到postgresql的安装候选

$ apt-cache show postgresql
Package: postgresql
Source: postgresql-common (243.pgdg20.04+1)
Version: 14+243.pgdg20.04+1
Architecture: all
Maintainer: Debian PostgreSQL Maintainers <team+postgresql@tracker.debian.org>
Installed-Size: 70
Depends: postgresql-14
Suggests: postgresql-doc
Priority: optional
Section: database
Filename: pool/main/p/postgresql-common/postgresql_14+243.pgdg20.04+1_all.deb
Size: 67068
... Package: postgresql
Architecture: all
Version: 12+214ubuntu0.1
Priority: optional
Section: database
Source: postgresql-common (214ubuntu0.1)
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian PostgreSQL Maintainers <team+postgresql@tracker.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 66
Depends: postgresql-12
Suggests: postgresql-doc
Filename: pool/main/p/postgresql-common/postgresql_12+214ubuntu0.1_all.deb
Size: 3924
... Package: postgresql
Architecture: all
Version: 12+214
Priority: optional
Section: database
Source: postgresql-common (214)
...

可以看到, 有三个候选, 其中版本14排在最前面, 如果apt install, 会安装最前面这个

步骤二: 查看依赖

前一步确定了默认安装的版本是需要的版本14后, 就可以通过apt-rdepends命令查看安装包的软件依赖关系, 这是一个很长的列表, 下面省略了大部分的内容, 仅列出一些和pg安装相关的包

$ apt-rdepends postgresql
Reading package lists... Done
Building dependency tree
Reading state information... Done
postgresql
Depends: postgresql-14
postgresql-14
Depends: debconf (>= 0.5)
...
Depends: locales-all
Depends: postgresql-client-14
Depends: postgresql-common (>= 229~)
Depends: ssl-cert
Depends: tzdata
Depends: zlib1g (>= 1:1.1.4)
debconf
PreDepends: perl-base (>= 5.20.1-3~)
perl-base
libpq5
postgresql-client-14
Depends: postgresql-client-common (>= 182~)
postgresql-client-common
Depends: pgdg-keyring
postgresql-common
Depends: postgresql-client-common (= 243.pgdg20.04+1)
...
libattr1
Depends: libc6 (>= 2.4)

步骤三: 下载deb安装包

通过这个依赖关系, 能大概确定第一步需要下载的安装包, 然后通过apt download命令下载

apt download postgresql-14 postgresql-client-14 postgresql-common postgresql-client-common

下载之后的文件

$ ll
total 17316
-rw-r--r-- 1 milton milton 15785632 Aug 11 09:35 postgresql-14_14.5-1.pgdg20.04+1_amd64.deb
-rw-r--r-- 1 milton milton 1617564 Aug 11 09:35 postgresql-client-14_14.5-1.pgdg20.04+1_amd64.deb
-rw-r--r-- 1 milton milton 91896 Sep 8 14:07 postgresql-client-common_243.pgdg20.04+1_all.deb
-rw-r--r-- 1 milton milton 231472 Sep 8 14:07 postgresql-common_243.pgdg20.04+1_all.deb

步骤四: 安装并补充下载

这些文件传到目标机器上后, 按依赖关系逆序安装,

sudo dpkg -i pgdg-keyring_2018.2_all.deb
sudo dpkg -i postgresql-client-common_243.pgdg20.04+1_all.deb
sudo dpkg -i postgresql-common_243.pgdg20.04+1_all.deb
sudo apt -f install
sudo dpkg -i postgresql-client-14_14.5-1.pgdg20.04+1_amd64.deb
sudo dpkg -i libpq5_14.5-1.pgdg20.04+1_amd64.deb
sudo dpkg -i postgresql-client-14_14.5-1.pgdg20.04+1_amd64.deb
sudo dpkg -i postgresql-14_14.5-1.pgdg20.04+1_amd64.deb
sudo apt -f install

安装的过程中, 会提示依赖缺失, 这会有两种情况, 一种是在标准仓库中存在的, 可以直接通过下面的命令自动安装

sudo apt -f install

另一种是在标准仓库中不存在的, 需要在中转机器上通过apt download下载之后再传到目标机器安装. 对应pg14, 最后完整的下载文件列表为

$ ll
total 17500
-rw-r--r-- 1 milton milton 172828 Aug 11 09:34 libpq5_14.5-1.pgdg20.04+1_amd64.deb
-rw-r--r-- 1 milton milton 10666 Nov 15 2018 pgdg-keyring_2018.2_all.deb
-rw-r--r-- 1 milton milton 15785632 Aug 11 09:35 postgresql-14_14.5-1.pgdg20.04+1_amd64.deb
-rw-r--r-- 1 milton milton 1617564 Aug 11 09:35 postgresql-client-14_14.5-1.pgdg20.04+1_amd64.deb
-rw-r--r-- 1 milton milton 91896 Sep 8 14:07 postgresql-client-common_243.pgdg20.04+1_all.deb
-rw-r--r-- 1 milton milton 231472 Sep 8 14:07 postgresql-common_243.pgdg20.04+1_all.deb

Ubuntu20.04和22.04离线安装PostgreSQL14的更多相关文章

  1. 从零到一,利用kubeadm在ubuntu server 16.04 64位系统离线安装kubernetes v1.10.0

    说明 初步接触kubernets,记录学习过程 本教程目的利用kubeadm在ubuntu server 16.04 64位系统离线安装kubernets v1.10.0 环境信息 节点IP地址 角色 ...

  2. Ubuntu14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]

    目录 [TOC] 1.CDH介绍 1.1.什么是CDH和CM? CDH一个对Apache Hadoop的集成环境的封装,可以使用Cloudera Manager进行自动化安装. Cloudera-Ma ...

  3. ubuntu16.04(liunx) 离线安装 xgboost (anaconda3,anaconda2共存)

    服务器ubuntu 系统同时安装了 anaconda3,anaconda2 ,但服务器没有连接外网,所以 想在python3 环境下安装离线安装xgboost. 主要分2步: 0:进入py3环境  ( ...

  4. Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...

  5. Ubuntu16.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...

  6. Ubuntu14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]-old

    用markdown重写,请稳步这里http://www.cnblogs.com/lion.net/p/5477899.html

  7. 解决ubuntu 20.04、22.04 即新版本 fcitx 无法使用的问题

    前提 已在系统设置中将fcitx设置为默认 fcitx开机自启 配置的过程不在本文讨论范围之内 开机自启可通过安装gnome-tweaks配置实现 问题分析流程 手动启动fcitx时提示设置XMODI ...

  8. Ubuntu14.04下Mongodb官网安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 在这篇博客里,我采用了非官网的安装步骤,来进行安装.走了弯路,同时,也是不建议.因为在大数据领域和实际生产里,还是要走正规的为好. Ubuntu14.04下Mongodb(离线安 ...

  9. Ubuntu16.04下Mongodb官网安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 在这篇博客里,我采用了非官网的安装步骤,来进行安装.走了弯路,同时,也是不建议.因为在大数据领域和实际生产里,还是要走正规的为好. Ubuntu16.04下Mongodb(离线安 ...

  10. CentOS7.6离线安装docker

    2019/10/24,docker 摘要:CentOS 7.6中离线安装docker 18.06.3以及docker-compose 1.24.1 在线安装可参照 文档 所需环境 1.CentOS 7 ...

随机推荐

  1. Prime Time-02

    Timing Constrain clk3和clk4 - 异步 clk2和clk1 - 同步 有四个clk,所以要设置四个clk的周期 latency - Net delay,走线的延时 uncert ...

  2. 【面试题精讲】你知道MySQL中有哪些隔离级别吗

    有时博客内容会有变动,首发博客是最新的,其他博客地址可能未同步,请认准https://blog.zysicyj.top 首发博客地址 系列文章地址 脏读(Dirty Read)是指一个事务读取到了另一 ...

  3. [转帖]Split Region 使用文档

    https://docs.pingcap.com/zh/tidb/stable/sql-statement-split-region 在 TiDB 中新建一个表后,默认会单独切分出 1 个 Regio ...

  4. [转帖]修改jmeter内存配置(win&mac&linux)

    目录 一.背景: 二.win环境下修改jmeter内存 三.mac&linux环境下修改jmeter内存 四.验证内存是否修改成功 一.背景: 在进行大数据.高并发压测的过程性,有时会遇上JM ...

  5. 【转帖】Linux开发工具 — readelf、objdump、hexdump

    本博文的主要内容是:1)readelf工具查看ELF文件的信息:2)hexdump工具查看这块内存:3)objdump工具对文件进行反汇编. 前一段时间对Linux不熟,所以很多命令不知道.学习C时候 ...

  6. [转帖]What is Pstate

    https://www.jianshu.com/p/342480d917e3 When someone refers to a P-state, generally only the frequenc ...

  7. 【转帖】linux 内核分析工具 Dtrace、SystemTap、火焰图、crash等

    << System语言详解 >> 关于 SystemTap 的书. 我们在分析各种系统异常和故障的时候,通常会用到 pstack(jstack) /pldd/ lsof/ tc ...

  8. Harbor简单搭建以及异常排查的过程与思路

    Harbor简单搭建以及异常排查的过程与思路 前言 我发现我总是能够遇到别人遇不到的问题. 本来搭建十分钟就可以搭建完成 结果我硬生生的搭建了四十分钟. 为了保证下次不再浪费时间. 这里加单总结一下遇 ...

  9. 神通奥斯卡数据库是否兼容Oracle, 以及参数修改的办法

    1. 最近公司要适配神通数据库, 但是因为一些功能异常.参数可能存在风险. 为了减少问题, 想着简单描述一下这些的处理. 开发和客户给的默认参数建议 1. 不选择 兼容oracle模式 2. 字符集选 ...

  10. Python 潮流周刊第 29 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...