为什么我的 Ubuntu 18.04 中有两个 PostgreSQL 版本?

为什么我的 Ubuntu 18.04 中有两个 PostgreSQL 版本?

每次我在 Ubuntu 18.04 中安装 PostgreSQL 时(即使我要求apt-get用 专门安装版本 11 sudo apt-get install postgresq-11),我的系统都会得到版本 10 和版本 11。

andre@linuxrocks:/var/lib/postgresql$ ls -la
total 48
drwxr-xr-x  5 postgres postgres  4096 jul 18 01:17 .
drwxr-xr-x 86 root     root      4096 jul  5 14:54 ..
drwxr-xr-x  3 postgres postgres  4096 abr 16 10:19 10
drwxr-xr-x  3 postgres postgres  4096 jul 13 00:37 11

数据库中的对象在这两个文件夹中重复出现。

postgres=# \! find ~ -type f -name 16563
/var/lib/postgresql/11/main/base/13132/16563
/var/lib/postgresql/10/main/base/16385/16563

我有两个postgresql.conf,每个文件夹一个,尽管 DBMS 似乎只从 11 个文件夹中获取其配置。

在执行查看所有 PostgreSQL 进程后,我发现了这种奇怪的行为ps -f -u postgres,并发现我的系统创建了重复的进程(一个来自 10 文件夹,另一个来自 11)。所以我清除并重新安装了 PostgreSQL(使用sudo apt-get install postgresq-11),现在我不再有重复的进程了。

andre@linuxrocks:~$ ps -f -u postgres
UID        PID  PPID  C STIME TTY          TIME CMD
postgres  1595     1  0 14:30 ?        00:00:00 /usr/lib/postgresql/11/bin/postgres -D /var/lib/postgresql/11/mai
postgres  1684  1595  0 14:30 ?        00:00:00 postgres: 11/main: logger   
postgres  1692  1595  0 14:30 ?        00:00:00 postgres: 11/main: checkpointer   
postgres  1693  1595  0 14:30 ?        00:00:00 postgres: 11/main: background writer   
postgres  1694  1595  0 14:30 ?        00:00:00 postgres: 11/main: walwriter   
postgres  1695  1595  0 14:30 ?        00:00:00 postgres: 11/main: autovacuum launcher   
postgres  1696  1595  0 14:30 ?        00:00:00 postgres: 11/main: stats collector   
postgres  1697  1595  0 14:30 ?        00:00:00 postgres: 11/main: logical replication launcher   
postgres 11074 11073  0 14:33 pts/0    00:00:00 bash
postgres 11078 11074  0 14:33 pts/0    00:00:00 /usr/lib/postgresql/11/bin/psql
postgres 11091  1595  0 14:33 ?        00:00:00 postgres: 11/main: postgres postgres [local] idle

即使如此,我还是有两个文件夹和重复的对象。为什么会发生这种情况?

答案1

简短的回答:发生这种情况是因为您在从其他非 Ubuntu 源安装版本 11 之前没有卸载版本 10(Ubuntu 18.04)。

查看 Ubuntu 存储库中版本 10 和 11 的可用性:

$ rmadison postgresql-10
 postgresql-10 | 10.3-1                | bionic
 postgresql-10 | 10.5-1                | cosmic
 postgresql-10 | 10.9-0ubuntu0.18.04.1 | bionic-security
 postgresql-10 | 10.9-0ubuntu0.18.04.1 | bionic-updates
 postgresql-10 | 10.9-0ubuntu0.18.10.1 | cosmic-security
 postgresql-10 | 10.9-0ubuntu0.18.10.1 | cosmic-updates

$ rmadison postgresql-11
 postgresql-11 | 11.2-1                | disco
 postgresql-11 | 11.4-0ubuntu0.19.04.1 | disco-security
 postgresql-11 | 11.4-0ubuntu0.19.04.1 | disco-updates
 postgresql-11 | 11.4-1.1~build1       | eoan

$ snap search postgresql
Name                                 Version   Publisher      Notes    Summary
postgresql95                         9.5.13    cmd✓           -        PostgreSQL is a powerful, open source object-relational database system.
postgresql96                         9.6.9     cmd✓           -        PostgreSQL is a powerful, open source object-relational database system.
postgresql10                         10.4      cmd✓           -        PostgreSQL is a powerful, open source object-relational database system.
postgresql93                         9.3.23    cmd✓           -        PostgreSQL is a powerful, open source object-relational database system.
postgresql94                         9.4.18    cmd✓           -        PostgreSQL is a powerful, open source object-relational database system.

由此我们了解到两件事:

1)版本 10 和 11 有不同的包名称。这意味着您可以并排安装多个版本。这似乎就是您所做的。您可以简单地删除大多数您的postgresql-10postgresql-10-*软件包。(警告- 误用通配符可能会损坏您的系统;请务必--simulate先运行并仔细阅读输出以确保它只删除您想要的内容)

2) 任何官方 Ubuntu 源均未提供适用于 18.04 的版本 11。这意味着您添加了一些非 Ubuntu 源。因此,在删除版本 10 时要格外小心:我们不知道您添加了什么、从哪里添加的,或者它拖入了哪些其他非 Ubuntu 依赖项。

相关内容