Как зафиксировать версию, о которой сообщает psql?

Я работал над сценарием 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.

1
задан 10 February 2019 в 04:52

1 ответ

Комментарий здесь полностью и полностью точен. Можно легко подтвердить это путем использования печально недогруженного Поиска Пакета Ubuntu, который для 18,04 отчетов, что psql является частью postgresql-client-common

psql сообщает версия psql, установленного как ожидалось.

Если Вы хотите видеть версию пакета, который Вы установили dpkg -l packagename полезно.

1
ответ дан 7 December 2019 в 15:07

Другие вопросы по тегам:

Похожие вопросы: