Я работал над сценарием Ansible для определения стандартного шаблона наших корпоративных серверов. По некоторым историческим причинам мы приняли решение придерживаться PostgreSQL 9.6 даже при том, что мы используем Ubuntu 18.04, которая идет с PostgreSQL 11. Мы намереваемся догнать последнюю версию после этапа перехода нескольких месяцев.
Эти 18,04 изображений, которые мы используем от AWS, имеют PG 11. После удаления версии 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 Packages
pg_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
будет говорить с сервером, слушающим на 5 432. Я оставил бы вещи в последовательном и явном состоянии и не рисковать некоторыми проблемами совместимости в наших сценариях.
Мой вопрос: действительно ли возможно зафиксировать версию, о которой сообщает psql так, чтобы это могло сообщить о версии, которая на самом деле присутствует?
Я чувствую, что удаление версии 11 оставило некоторые остатки, которые кажутся нежелательными мне, несмотря на задачу, которой определение производит чистку и автоудаляет.
[ОТРЕДАКТИРУЙТЕ 10.02.2019]
Комментарий @steeldriver поместил меня на правильном пути. Моя роль Ansible устанавливала postgresql-9.6
и postgresql-contrib
, который не имел смысла, потому что, поскольку я понял это без спецификации 9.6
как версия, postgresql-contrib
обозначал бы его текущий самый актуальный пакет, который является postgresql-contrib-11
, который в свою очередь имеет postgresql-11
как зависимость.
Я закончил с версиями 9.6 и 11 и ошибочно думал, что изображение Amazon имело postgresql-11 в нем. Я был неправ.
Когда я удалил postgresql-11
(с автоудаляют), удаление, все еще оставленное позади /var/lib/postgresql/11/bin
папка, где a psql
двоичный файл остался. Обертка, которая запускает двоичные файлы PostgreSQL, перечисляет версии в /var/lib/postgresql
и для каждого, проверки, ли psql
двоичный файл находится в файловой системе. Если это, то новая версия используется.
С комментариями и ответами, я теперь понимаю, что это, конечно, потому что пакет для удаления был разновидностью postgresql-client-common
и не просто postgresql-11
.
Комментарий здесь полностью и полностью точен. Можно легко подтвердить это путем использования печально недогруженного Поиска Пакета Ubuntu, который для 18,04 отчетов, что psql является частью postgresql-client-common
psql
сообщает версия psql, установленного как ожидалось.
Если Вы хотите видеть версию пакета, который Вы установили dpkg -l packagename
полезно.