我一直在开发一个Ansible脚本来定义我们公司服务器的标准模板。出于一些历史原因,我们选择使用PostgreSQL 9.6,尽管我们使用的是PostgreSQL 11附带的Ubuntu18.04,我们打算在几个月的过渡阶段之后赶上最新版本。
我们从AWS使用的18.04映像具有PG 11。在卸载version 11并在我们的测试服务器上安装9.6之后,psql --version的结果仍然是:
psql (PostgreSQL) 11.1 (Ubuntu 11.1-3.pgdg18.04+1)但是,apt-cache policy postgresql-11给了我以下内容:
postgresql-11:
Installed: (none)
Candidate: 11.1-3.pgdg18.04+1
Version table:
11.1-3.pgdg18.04+1 500
500 http://apt.postgresql.org/pub/repos/apt bionic-pgdg/main amd64 Packagespg_lsclusters产量:
Ver Cluster Port Status Owner Data directory Log file
9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log我发现所有这些都具有误导性,即使考虑到psql将与监听5432的服务器进行对话。我希望事情保持一致和明确的状态,而不是在脚本中冒一些兼容性问题的风险。
我的问题是:是否可以修复psql报告的版本,以便它能够报告一个实际存在的版本?
我觉得,删除版本11留下了一些残余物,似乎对我来说是多余的,尽管任务指定清除和自动删除。
编辑2019-02-10
@steeldriver的评论让我走上了正确的道路。我的角色是安装postgresql-9.6和postgresql-contrib,这是没有意义的,因为据我所知,如果没有9.6作为版本的规范,postgresql-contrib将代表其最新的软件包,即postgresql-contrib-11,而后者又将postgresql-11作为依赖项。
最后,我得到了9.6和11版本,错误地认为Amazon映像中包含PostgreSQL11。我错了。
当我删除postgresql-11 (使用自动删除)时,卸载仍然保留在/var/lib/postgresql/11/bin文件夹中,其中保留了一个psql二进制文件。启动PostgreSQL二进制文件的包装器枚举/var/lib/postgresql中的版本,并对每个版本检查psql二进制文件是否在文件系统上。如果是,则使用最新版本。
有了这些评论和回答,我现在明白了,这当然是因为要删除的包是postgresql-client-common的味道,而不仅仅是postgresql-11。
发布于 2019-02-06 14:16:14
这里的评论是完全准确的。您可以很容易地通过使用可悲的未充分使用的Ubuntu包搜索来确认这一点,18.04报告说psql是postgresql-客户端-公共的一部分。
psql正在报告按预期安装的psql版本。
如果您想查看已安装的包的版本,dpkg -l packagename是有用的。
https://askubuntu.com/questions/1116101
复制相似问题