O Debian inclui o PostgreSQL por padrão. Para instalar o PostgreSQL no Debian, use o apt-get.
O Debian permite que vários clusters e até diferentes versões do PostgreSQL coexistam no mesmo host.
Se executarmos “apt install postgresql”, no Debian 10 buster, será instalada a versão 11 do postgresql mas já há a versão 14.
Se quiser instalar a versão que consta no repositório, nesse caso a 11, então é só executar:
sudo apt install postgresql -y
Instalando Versão Recente do PostgreSQL no Debian
Se desejar instalar uma versão mais recente então teremos que apontar nossa source.list para um outro repositório
#1 Crie a configuração do repositório de arquivos:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
#2 Importe a chave de assinatura do repositório:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
#3 Atualize as listas de pacotes:
sudo apt-get update
#4 Instale a versão mais recente ou outra que queira do PostgreSQL.
Por exemplo, se a versão mais recente for a 14 execute
sudo apt install postgresql-14 -y
Se desejar uma versão anterior, suponhamos que deseja a versão 12, então execute:
sudo apt install postgresql-12 -y
Localização dos Arquivos do Postgres no Debian
O Debian os arquivos de configuração do banco de dados em diferentes pastas ao contrário da instalação genérica do PostgreSQL que coloca tudo em um só lugar.
- Arquivos de Configuração: /etc/postgresql/[versão]/[cluster]/
- Binários(programas): /usr/lib/postgresql/[versão]
- Arquivos de Dados: /var/lib/postgresql/[versão]/[cluster]
- Logs: /var/log/postgresql/
Listando os Clusters
Use o comando pg_lsclusters para listar as instalações. No meu caso há as versões 11 e 14. A 11 havia instalado noutro momento.
elder@server01:~$ sudo pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 11 main 5432 down,binaries_missing postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log 14 main 5433 online postgres /var/lib/postgresql/14/main /var/log/postgresql/postgresql-14-main.log
pg_clt e pg_ctlcluster
As duas ferramentas são usadas para controlar o PostgreSQL. A diferença é que:
pg_ctl é um comando do PostgreSQL.
pg_ctlcluster é um programa feito pelo Debian em Perl como substituto do pg_ctl. Lembre-se disso, pois em outras distros não haverá uma ferramenta pg_ctlcluster.
Observações
Após a instalação, nos últimos textos que da instalação que aparece no terminal há informações de caminhos importantes. Abaixo alaranjei algumas linhas:
Creating new PostgreSQL cluster 14/main ... /usr/lib/postgresql/14/bin/initdb -D /var/lib/postgresql/14/main --auth-local peer --auth-host scram-sha-256 --no-instructions The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale "en_US.UTF-8". The default database encoding has accordingly been set to "UTF8". The default text search configuration will be set to "english". Data page checksums are disabled. fixing permissions on existing directory /var/lib/postgresql/14/main ... ok creating subdirectories ... ok ........
Fontes: debian/locale, debian/postgresql