Tentando atualizar uma instância do PostgreSQL 13 para a versão 16, estou com problemas. Antes disso, eu atualizava (no local) sem problemas da versão 11 para a 13, mas agora instalar a 16 causa problemas.
Eu faço:
sudo apt install postgresql-16
e esperaria subsequentemente encontrar arquivos de configuração em /etc/postgresql/16
, mas não há tal pasta. Além disso, pg_lsclusters
retorne apenas a versão 13. Eu posso fazer sudo -u postgres /lib/postgresql/16/bin/initdb -D /var/lib/postgresql/16/main
, o que funcionará, mas então não aparece nenhum serviço (como em ) e também o cluster ainda não aparece na lista.systemctl status [email protected]
Não consigo encontrar nenhuma pista sobre o que pode ser a causa ou como proceder. Fiz uma apt purge
instalação seguida de uma nova várias vezes, mas sem sucesso. Além disso, tenho a mesma experiência ao instalar o PG 15. Quaisquer ideias são bem-vindas, obrigado!
Para referência, esta é a saída da instalação:
user@server:/etc/postgresql$ sudo apt install postgresql-16
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
postgresql-client-16
Suggested packages:
postgresql-doc-16
The following NEW packages will be installed:
postgresql-16 postgresql-client-16
0 upgraded, 2 newly installed, 0 to remove and 304 not upgraded.
Need to get 20.1 MB of archives.
After this operation, 69.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 https://apt.postgresql.org/pub/repos/apt jammy-pgdg/main amd64 postgresql-client-16 amd64 16.8-1.pgdg22.04+1 [1913 kB]
Get:2 https://apt.postgresql.org/pub/repos/apt jammy-pgdg/main amd64 postgresql-16 amd64 16.8-1.pgdg22.04+1 [18.1 MB]
Fetched 20.1 MB in 2s (9535 kB/s)
Preconfiguring packages ...
Selecting previously unselected package postgresql-client-16.
(Reading database ... 202138 files and directories currently installed.)
Preparing to unpack .../postgresql-client-16_16.8-1.pgdg22.04+1_amd64.deb ...
Unpacking postgresql-client-16 (16.8-1.pgdg22.04+1) ...
Selecting previously unselected package postgresql-16.
Preparing to unpack .../postgresql-16_16.8-1.pgdg22.04+1_amd64.deb ...
Unpacking postgresql-16 (16.8-1.pgdg22.04+1) ...
Setting up postgresql-client-16 (16.8-1.pgdg22.04+1) ...
update-alternatives: using /usr/share/postgresql/16/man/man1/psql.1.gz to provide /usr/share/man/man1/psql.1.gz (psql.1.gz) in auto mode
Setting up postgresql-16 (16.8-1.pgdg22.04+1) ...
Processing triggers for postgresql-common (274.pgdg22.04+1) ...
Building PostgreSQL dictionaries from installed myspell/hunspell packages...
Removing obsolete dictionary files:
user@server:/etc/postgresql$ ls
13
user@server:/etc/postgresql$
Editar: Espero que este seja o lugar certo para esta questão/problema. Se não, por favor, comente. Coloquei no stackexchange e ele foi fechado em minutos sem nenhum comentário. Estou feliz com qualquer contribuição, também no meu post!
Se você usar os pacotes binários em sistemas Ubuntu e Debian, é melhor seguir a configuração que o empacotador imaginou:
O diretório de dados do PostgreSQL é dividido em duas partes:
os arquivos de dados vão em
/var/lib/postgresql/16/<clustername>
os arquivos de configuração vão em
/etc/postgresql/16/<clustername>
você obtém "scripts wrapper" para criar e remover clusters que configuram automaticamente seu cluster dessa maneira
você obtém um arquivo de serviço systemd que pode iniciar e parar automaticamente os clusters sem a necessidade de configuração extra
Ao criar o cluster com bare-bones
initdb
, você está perdendo parte da configuração acima. Por um lado, os arquivos de configuração acabam no diretório de dados. Como consequência, o arquivo de serviço systemd não reconhecerá seu novo cluster.Então você deve proceder da seguinte forma:
remova o cluster que você criou
crie-o novamente usando o script wrapper:
Então tudo deve funcionar conforme o esperado.