Ubuntu 18.04 安装指定版本PostgreSQL数据库(14.4)
描述
Ubuntu 18.04安装14.4版本的PostgreSQL数据库,由于官方库只有最新版本的数据库,所以这里需要配置存档存储库,然后安装时指定具体的版本号,进行安装。
一.安装PostgreSQL 14.4版本
1.配置apt源
配置apt源,创建/etc/apt/sources.list.d/pgdg.list文件,添加官方存储库
deb http://apt.postgresql.org/pub/repos/apt bionic-pgdg main问题:
配置apt源后,apt update提示,签名验证失败。
166 packages can be upgraded. Run 'apt list --upgradable' to see them.
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://apt.postgresql.org/pub/repos/apt bionic-pgdg InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7FCC7D46ACCC4CF8
W: Failed to fetch http://apt.postgresql.org/pub/repos/apt/dists/bionic-pgdg/InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7FCC7D46ACCC4CF8
W: Some index files failed to download. They have been ignored, or old ones used instead.重新导入key
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -安装命令(这样安装是安装的最新的key)
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-get update
sudo apt-get -y install postgresql2.配置存档存储库
需要安装14.4版本,这里最新的包是14.7,需要配置存档存储库进行指定版本安装。
官方源只有
postgresql-14 | 14.7-1.pgdg18.04+1 | http://apt.postgresql.org/pub/repos/apt bionic-pgdg/main amd64 Packages需要配置存档存储库
# 添加旧包存档
$ cat pgdg.list
# 最新包
deb http://apt.postgresql.org/pub/repos/apt bionic-pgdg main
# 添加历史包
deb https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive main
deb-src https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive main更新apt存储库
sudo apt update查看PostgreSQL 14软件包,存在多个版本
user@KMYKDXDYYY-SYNC-001:/etc/apt/sources.list.d$ apt-cache madison postgresql-14
postgresql-14 | 14.7-1.pgdg18.04+1 | http://apt.postgresql.org/pub/repos/apt bionic-pgdg/main amd64 Packages
postgresql-14 | 14.7-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main amd64 Packages
postgresql-14 | 14.6-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main amd64 Packages
postgresql-14 | 14.5-2.pgdg18.04+2 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main amd64 Packages
postgresql-14 | 14.5-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main amd64 Packages
postgresql-14 | 14.4-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main amd64 Packages
postgresql-14 | 14.3-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main amd64 Packages
postgresql-14 | 14.2-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main amd64 Packages
postgresql-14 | 14.1-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main amd64 Packages
postgresql-14 | 14.0-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main amd64 Packages
postgresql-14 | 14~rc1-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main amd64 Packages
postgresql-14 | 14~beta3-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main amd64 Packages
postgresql-14 | 14~beta2-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main amd64 Packages
postgresql-14 | 14~beta1-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main amd64 Packages
postgresql-14 | 14~beta1-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main Sources
postgresql-14 | 14~beta2-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main Sources
postgresql-14 | 14~beta3-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main Sources
postgresql-14 | 14~rc1-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main Sources
postgresql-14 | 14.0-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main Sources
postgresql-14 | 14.1-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main Sources
postgresql-14 | 14.2-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main Sources
postgresql-14 | 14.3-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main Sources
postgresql-14 | 14.4-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main Sources
postgresql-14 | 14.5-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main Sources
postgresql-14 | 14.5-2.pgdg18.04+2 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main Sources
postgresql-14 | 14.6-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main Sources
postgresql-14 | 14.7-1.pgdg18.04+1 | https://apt-archive.postgresql.org/pub/repos/apt bionic-pgdg-archive/main Sources3.安装指定版本14.4-1.pgdg18.04+1
sudo apt install postgresql-14=14.4-1.pgdg18.04+1但是默认安装,postgresql-client-14还是14.7,指定版本安装
sudo apt install postgresql-14=14.4-1.pgdg18.04+1 postgresql-client-14=14.4-1.pgdg18.04+1安装后验证,已安装指定版本
user@localhost:/etc/apt/sources.list.d$ sudo apt install postgresql-14=14.4-1.pgdg18.04+1 postgresql-client-14=14.4-1.pgdg18.04+1
user@localhost:/etc/apt/sources.list.d$ dpkg -l|grep postgresql
rc pgdg-keyring 2018.2 all keyring for apt.postgresql.org
ii postgresql-14 14.4-1.pgdg18.04+1 amd64 The World's Most Advanced Open Source Relational Database
ii postgresql-client-14 14.4-1.pgdg18.04+1 amd64 front-end programs for PostgreSQL 14
ii postgresql-client-common 248.pgdg18.04+1 all manager for multiple PostgreSQL client versions
ii postgresql-common 248.pgdg18.04+1 all PostgreSQL database-cluster manager二.安装postgresql-server-dev-14包
1.原因
因为后续如果要安装数据库工具,可能需要postgresql-server-dev-14包进行编译。如果是联网机器,后续安装可能也比较简单,但是离线机器,后续再安装比较麻烦,所以在制作离线安装包的过程中,可以将相关的dev包一并打包。
2.安装
安装 postgresql-server-dev-14=14.4-1.pgdg18.04+1 ,依赖于 libpq-dev=14.4-1.pgdg18.04+1,libpq-dev依赖于 libpq5
因为这里想要安装相同版本的包,即14.4-1.pgdg18.04+1,但是libpq5已经默认安装了15.2-1.pgdg18.04+1,如果卸载的话,会把数据库卸载掉,不能卸载,只能降级。
libpq5已默认安装15.2-1.pgdg18.04+1版本。
user@localhost:/var/cache/apt/archives$ dpkg -l|grep libpq5
ii libpq5:amd64 15.2-1.pgdg18.04+1 amd64 PostgreSQL C client library为了版本统一,这里在安装 postgresql-server-dev-14=14.4-1.pgdg18.04+1 libpq-dev=14.4-1.pgdg18.04+1 的时候,指定了libpq5的版本(libpq5=14.4-1.pgdg18.04+1)
最终安装命令
sudo apt install postgresql-server-dev-14=14.4-1.pgdg18.04+1 libpq-dev=14.4-1.pgdg18.04+1 libpq5=14.4-1.pgdg18.04+1 -d3.效果
安装指定版本的postgresql-server-dev-14和libpq-dev,同时对libpq5降级
user@localhost:/var/cache/apt/archives$ sudo apt install postgresql-server-dev-14=14.4-1.pgdg18.04+1 libpq-dev=14.4-1.pgdg18.04+1 libpq5=14.4-1.pgdg18.04+1 -d
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
clang-6.0 lib32gcc1 lib32stdc++6 libc6-i386 libclang-common-6.0-dev libclang1-6.0 libffi-dev libffi6 libgc1c2 libjsoncpp1 libllvm6.0 libobjc-7-dev libobjc4 libomp-dev libomp5
libssl-dev libssl1.1 libtinfo-dev llvm-6.0 llvm-6.0-dev llvm-6.0-runtime
Suggested packages:
gnustep gnustep-devel clang-6.0-doc libomp-doc postgresql-doc-14 libssl-doc llvm-6.0-doc
The following NEW packages will be installed:
clang-6.0 lib32gcc1 lib32stdc++6 libc6-i386 libclang-common-6.0-dev libclang1-6.0 libffi-dev libgc1c2 libjsoncpp1 libobjc-7-dev libobjc4 libomp-dev libomp5 libpq-dev libssl-dev
libtinfo-dev llvm-6.0 llvm-6.0-dev llvm-6.0-runtime postgresql-server-dev-14
The following packages will be upgraded:
libffi6 libllvm6.0 libssl1.1
The following packages will be DOWNGRADED:
libpq5
3 upgraded, 20 newly installed, 1 downgraded, 0 to remove and 165 not upgraded.
Need to get 70.3 MB of archives.
After this operation, 321 MB of additional disk space will be used.
Do you want to continue? [Y/n] y