每次我在 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-10
或postgresql-10-*
软件包。(警告- 误用通配符可能会损坏您的系统;请务必--simulate
先运行并仔细阅读输出以确保它只删除您想要的内容)
2) 任何官方 Ubuntu 源均未提供适用于 18.04 的版本 11。这意味着您添加了一些非 Ubuntu 源。因此,在删除版本 10 时要格外小心:我们不知道您添加了什么、从哪里添加的,或者它拖入了哪些其他非 Ubuntu 依赖项。