tl: dr; não é necessário desinstalar clusters antigos. Em vez disso, coloque o seguinte em ~/.postgresqlrc
<version> <clustername> <defaultdb>
,
por exemplo, 9.6 main *
Não é necessário desinstalar clusters antigos. Eu olhei em /usr/share/postgresql-common/pg_wrapper
, que tem estas linhas:
# for psql we always want the latest version, as this is backwards
compatible
# to every major version that that we support
if ($cmdname eq 'pg_wrapper') {
error "pg_wrapper should not be called directly, but through a symlink";
} elsif ($cmdname =~ /^(psql|pg_archivecleanup|pg_isready)$/) {
$cmd = get_program_path ($cmdname, get_newest_version);
} else {
$cmd = get_program_path ($cmdname, $version);
}
Em outras palavras, comandos como psql
sempre serão executados com a última versão instalada instalada em sua máquina, mas comandos como pg_dump
não serão.
No topo de pg_wrapper
é uma dica:
# Call a PostgreSQL client program with the version, cluster and default
# database specified in ~/.postgresqlrc or
# /etc/postgresql-common/user_clusters.
man postgresqlrc
nos informa que ~/.postgresqlrc
deve ser formatado dessa forma:
<version> <cluster name> <default database
pg_lsclusters
me forneceu a seguinte saída:
Ver Cluster Port Status Owner Data directory Log file
9.5 main 5432 online postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
9.6 main 5433 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
O que significa que meu ~/.postgresqlrc
deve ficar assim:
9.6 main *
O que me dá a versão desejada quando eu corro pg_dump -V
.