作者:IT圈黎俊杰
PostgreSQL是国外著名的开源数据库,openEuler是国内的开源操作系统品牌,当前PostgreSQL对openEuler是没有适配认证的,PostgreSQL官方更不存在提供可直接在openEuler操作系统上安装的RPM软件包了。
在PostgreSQL官网上,有介绍在redhat流派操作系统上可采用yum镜像库的方式安装。笔者在前期写过一篇《国产操作系统openEuler22.03配置yum源》的文章,文中有介绍到yum分成本地yum源和网络yum源两种。经笔者测试,在国产操作系统openEuler上,本地yum源,是无法以yum的方式安装PostgreSQL数据库的,而配置的网络yum源,则可以很轻松的安装上PostgreSQL数据库。openEuler22.03操作系统上安装的PostgreSQL数据库版本为13.3,说明openEuler官方有采用PostgreSQL的源码,在openEuler操作系统上有编译封装PostgreSQL数据库的RPM安装软件包。
为什么在国产操作系统openEuler上本地yum源无法安装PostgreSQL数据库,而配置的网络yum源却可以安装PostgreSQL数据库呢?今天笔者对其原因进行分析。
一、openEuler本地yum源无法安装PostgreSQL验证
(一)本地yum配置情况与可用性验证
1、openEuler.repo文件本地yum源配置信息
[OS] name=OS baseurl=file:///mnt/cdrom enabled=1 gpgcheck=1 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-openEuler [everything] name=everything baseurl=file:///mnt/cdrom enabled=1 gpgcheck=1 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-openEuler [EPOL] name=EPOL baseurl=file:///mnt/cdrom enabled=1 gpgcheck=1 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-openEuler [debuginfo] name=debuginfo baseurl=file:///mnt/cdrom enabled=1 gpgcheck=1 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-openEuler [source] name=source baseurl=file:///mnt/cdrom enabled=1 gpgcheck=1 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-openEuler [update] name=update baseurl=file:///mnt/cdrom enabled=1 gpgcheck=1 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-openEuler |
2、校验本地yum源可用性
#yum clean all
#yum makecache
经校验,本地yum可以正常使用。59MB-134MB/S的Metadata cache created速度,肯定是来自于本地。
(二)本地yum无法安装PostgreSQL验证
# yum install -y postgresql-server
[root@pg-p yum.repos.d]# yum install -y postgresql-server Last metadata expiration check: 0:07:32 ago on Mon 02 Jan 2023 12:46:52 PM CST. No match for argument: postgresql-server Error: Unable to find a match: postgresql-server [root@pg-p yum.repos.d]# |
找不到postgresql-server相关的安装文件。安装不成功。
二、openEuler网络yum源可以安装PostgreSQL验证
(一)网络yum配置情况与可用性验证
1、openEuler.repo文件网络yum源配置信息
[OS] name=OS baseurl=http://repo.openeuler.org/openEuler-22.03-LTS/OS/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler [everything] name=everything baseurl=http://repo.openeuler.org/openEuler-22.03-LTS/everything/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS/everything/$basearch/RPM-GPG-KEY-openEuler [EPOL] name=EPOL baseurl=http://repo.openeuler.org/openEuler-22.03-LTS/EPOL/main/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler [debuginfo] name=debuginfo baseurl=http://repo.openeuler.org/openEuler-22.03-LTS/debuginfo/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS/debuginfo/$basearch/RPM-GPG-KEY-openEuler [source] name=source baseurl=http://repo.openeuler.org/openEuler-22.03-LTS/source/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS/source/RPM-GPG-KEY-openEuler [update] name=update baseurl=http://repo.openeuler.org/openEuler-22.03-LTS/update/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler |
2、校验本地yum源可用性
#yum clean all
#yum makecache
经校验,网络yum可以正常使用。才100多KB/S的Metadata cache created速度,肯定是来自于网络了。
(二)网络yum安装PostgreSQL验证
# yum install -y postgresql-server
Last metadata expiration check: 0:09:43 ago on Mon 02 Jan 2023 01:11:39 PM CST. Dependencies resolved. ====================================================================== =============================================================== Package Architecture Version Repository Size ====================================================================== =============================================================== Installing: postgresql-server x86_64 13.3-7.oe2203 update 5.4 M Installing dependencies: postgresql x86_64 13.3-7.oe2203 update 1.6 M Transaction Summary ====================================================================== =============================================================== Install 2 Packages Total download size: 7.0 M Installed size: 29 M Downloading Packages: (1/2): postgresql-13.3-7.oe2203.x86_64.rpm 82 kB/s | 1.6 MB 00:20 (2/2): postgresql-server-13.3-7.oe2203.x86_64.rpm 88 kB/s | 5.4 MB 01:02 ------------------------------------------------------------------------------------------------------------------------------------- Total 115 kB/s | 7.0 MB 01:02 retrieving repo key for update unencrypted from http://repo.openeuler.org/openEuler-22.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler update 17 kB/s | 2.1 kB 00:00 Importing GPG key 0xB25E7F66: Userid : "private OBS (key without passphrase) " Fingerprint: 12EA 74AC 9DF4 8D46 C69C A0BE D557 065E B25E 7F66 From : http://repo.openeuler.org/openEuler-22.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler Key imported successfully Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : postgresql-13.3-7.oe2203.x86_64 1/2 Running scriptlet: postgresql-server-13.3-7.oe2203.x86_64 2/2 Installing : postgresql-server-13.3-7.oe2203.x86_64 2/2 Running scriptlet: postgresql-server-13.3-7.oe2203.x86_64 2/2 /usr/lib/tmpfiles.d/postgresql.conf:1: Line references path below legacy directory /var/run/, updating /var/run/postgresql → /run/postgresql; please update the tmpfiles.d/ drop-in file accordingly. Verifying : postgresql-13.3-7.oe2203.x86_64 1/2 Verifying : postgresql-server-13.3-7.oe2203.x86_64 2/2 Installed: postgresql-13.3-7.oe2203.x86_64 postgresql-server-13.3-7.oe2203.x86_64 Complete! [root@pg-p yum.repos.d]# |
使用网络yum源,PostgreSQL数据库安装成功。
三、两种不同结果的原因分析
上面已经通过实测验证过了,openEuler上本地yum源安装PostgreSQL数据库,提示是找不到相关匹配项的,而使用公网上的网络yum源,却成功安装了PostgreSQL数据库。
(一)分析本地yum源不能安装的原因
要通过yum安装,那么yum源里一定要有所有安装软件及其依赖的RPM软件包。先来从不能安装成功的本地yum源里,看是否能够寻找到postgresql-server及相关依赖的RPM包。
通过对本地yum中使用的openEuler-22.03-LTS-x86_64-dvd.iso文件进行解压缩,进入生成的openEuler-22.03-LTS-x86_64-dvd目录内,能看到的目录结构如下:
上面内容,如果要与openEuler.repo文件里的配置做匹配的话,匹配的是[OS]库。
而openEuler.repo文件里配置的[everything]、[EPOL]、[debuginfo]、[source]、[update]这五个库,在openEuler-22.03-LTS-x86_64-dvd里实际都是不存在的。
在openEuler-22.03-LTS-x86_64-dvd文件里搜索postgresql-server,是搜索不到任何文件的,说明在yum源指向的ISO里不存在postgresql-server相关RPM安装文件,所以是不可能以yum方式成功安装postgresql的。
(二)分析网络yum源能安装成功的原因
本文中配置的网络yum源为openEuler官方镜像仓库,那就进入公网的http://repo.openeuler.org/openEuler-22.03-LTS内,其内目录结构如下:
可以看到在openEuler.repo文件里配置的 [OS]、[everything]、[EPOL]、[debuginfo]、[source]、[update]这六个库,都网络yum源镜像库中都是存在的,最起码可以直接证明,网络yum源所包含的文件比本地yum源(openEuler-22.03-LTS-x86_64-dvd.iso)要丰富得多。
再来看一下通过网络yum源安装postgresql-server时,是否可以找得到相关的RPM软件包:
从上图中可以看出,postgresql-server及其依赖的相关RPM包,是从yum源的update库中搜寻到的。
再来满足一下好奇之心,顺腾摸瓜,进入网络yum源的update库中,搜寻一下postgresql,果然能搜到好多针对openEuler2203编译好的RPM软件包,其中就有postgresql-server-13.3-7.oe2203.x86_64.rpm。
上面看到的版本号是postgresql-server-13.3,而PostgreSQL数据库软件的最新版是15.1,那我们通过这个yum源可以安装得了postgresql-server-15.1吗?试试看:
#yum install postgresql-server-15*
[root@pg-p yum.repos.d]# yum install postgresql-server-15* Last metadata expiration check: 1:56:20 ago on Mon 02 Jan 2023 01:55:22 PM CST. No match for argument: postgresql-server-15* Error: Unable to find a match: postgresql-server-15* |
结果显然是不可能的,因为yum源里没有postgresql-server-15*相关的RPM软件包呀。
(三)对比本地与网络yum源的库存储差异
序号 | 库名 | 本地yum源中 是否存在 | 网络yum源中 是否存在 |
1 | OS | √ | √ |
2 | everything | ╳ | √ |
3 | EPOL | ╳ | √ |
4 | debuginfo | ╳ | √ |
5 | source | ╳ | √ |
6 | update | ╳ | √ |
原因分析结论:
通过实际验证过程中的输出信息,以及将openEuler.repo配置文件里的配置项,和本地yum源的ISO介质中实际存储内容,以及进入网络yum源中的各个库中展开研究与对比分析,得出结论为:
(1)本地yum源的openEuler-22.03-LTS-x86_64-dvd.iso介质里,只是存放在有[OS]基本库,远远不如网络镜像仓库里的库丰富。openEuler官方把编译生成的postgresql-serve相关RPM包,存放在了[update]库中,这个库没有存入openEuler-22.03-LTS-x86_64-dvd.iso介质里,所以通过本地yum源当然就安装不了postgresql数据库。
(2)网络yum源的repo.openeuler.org/openEuler-22.03-LTS仓库里,对应openEuler.repo配置文件里的 [OS]、[everything]、[EPOL]、[debuginfo]、[source]、[update]六个库均实际存在,而postgresql-serve相关RPM包就存放在[update]库中,所以通过网络yum源能够成功的安装postgresql数据库。
坚持原创发表,如发现有不妥与不正确之处,欢迎指正。IT圈黎俊杰虚心向大家学习!