postgres postgresql install repo deb apt rpm yum dnf

Instalação

Repositórios

A escolha sobre de onde o seu PostgreSQL será instalado é o primeiro passo da instalação. Alguns fatores são muito subestimados neste ponto e isso pode causar problemas futuros para a sua solução. Mas com um pequeno planejamento consciente, é possível tornar a sua solução mais confiável que o esperado.

O grupo de desenvolvimento do PostgreSQL (PGDG - PostgreSQL Development Group) disponibiliza o PostgreSQL como código fonte e como binários. Para alguns sistemas operacionais, como Solaris, essa é a única fonte existente atualmente. Para outros, como Windows e MacOS, o PGDG redireciona para websites de terceiros, dado que o empacotamento é tão oneroso neles que a comunidade prefere não fazê-lo quando possível. Outros ainda, como FreeBSD, OpenBSD e algumas distribuições de Linux, que têm um ciclo de entregas tão próximo com o ciclo do próprio PostgreSQL, o PGDG recomenda usar os pacotes das próprias distribuições.

Contudo, as distribuições Linux mais populares são também as mais comuns em ambientes produtivos e elas não se encaixam nos casos acima. Assim, o PGDG disponibiliza repositórios próprios contendo os pacotes para elas; e as próprias distribuições também disponibilizam pacotes do PostgreSQL. Então a seguir vamos salientar as diferenças entre essas duas fontes.

Versões

De acordo com as políticas de estabilidade de algumas distribuições, não é possível absorver novas versões majoritárias do PostgreSQL em famílias já lançadas das distribuições.

Por exemplo, em RHEL/CentOS/SL/OL 7, a versão 9.2 do PostgreSQL é a única disponível (exceto pelas ferramentas de desenvolvimento no SCL).

O uso do repositório do PGDG permite que todas as versões que ainda têm suporte da comunidade sejam usadas na distribuição, ou seja, as cinco versões majoritárias lançadas mais recentemente.

Sobre distribuições específicas e seus respectivos suportes:

Suporte

Aliado ao fato da distribuição conter apenas uma versão do PostgreSQL, que normalmente não é mais suportada pela comunidade, também existe o fato de que as versões suportadas pela comunidade não são mais suportadas pelo fornecedor da distribuição.

Portanto, caso um problema seja encontrado com o PostgreSQL fornecido pelo PGDG, ele pode ser investigado e tratado por toda a comunidade de forma ativa e ágil. Mas caso um problema seja encontrado com o PostgreSQL fornecido pela distribuição, ele só será investigado pelo fornecedor da distribuição.

Especificamente, se a distribuição for RHEL, então o suporte deverá ser completamente fornecido pela Red Hat, que tem equipes internas voltadas ao PostgreSQL.

Mas se for uma distribuição comunitária, como CentOS ou Fedora, o suporte da comunidade da distribuição será ainda mais restrito, dado que eles normalmente não têm equipes dedicadas ao suporte.

Algumas empresas oferecem suporte comercial a versões passadas do PostgreSQL, mas uma das primeiras recomendações que elas dão em face a problemas é atualizar ele para uma versão suportada também pela comunidade.

Portanto, caso o suporte (profissional ou não) seja um fator decisivo para o seu negócio, o fato do PGDG fornecer apenas versões majoritárias suportadas pela comunidade faz com que a resolução de problemas seja muito mais confiável.

Atualizações

A cadência de atualizações é outro ponto importante. Dado que o PostgreSQL gera ao menos uma versão minoritária por trimestre e que essas versões minoritárias contêm correções de bugs importantes, potencialmente que tratam CVEs e problemas de corrupção, é de suma importância que essas atualizações cheguem ao seu ambiente produtivo o quanto antes.

Contudo, algumas distribuições têm um período de testes internos que pode se estender por dias, semanas ou até meses. Durante esse tempo, o seu ambiente produtivo pode estar correndo riscos de segurança e confiabilidade desnecessários.

Portanto, em Debian (e Ubuntu e outros derivados) e também em RHEL (e CentOS, Fedora e outros derivados) é recomendado usar os repositórios e pacotes disponibilizados pelo PGDG.

Atualizações automáticas

Não basta que os pacotes atualizados estejam disponíveis nos repositórios; é também importante que eles sejam usados nos seus ambientes produtivos. A forma mais simples de aplicar as atualizações é através de ferramentas como yum-cron e dnf-automatic em distribuições baseadas em rpm/yum/dnf e unattended-upgrades em distribuições baseadas em deb/apt.

São dois os passos para aplicar as atualizações:

As ferramentas acima são capazes de realizar qualquer um ou mesmo os dois passos periodicamente se configuradas para isso. Contudo, o reinício do serviço depende ou do seu negócio suportar os tempos de indisponibilidade causados por eles ou da sua solução executar o switchover (antes do reinício) ou o failover (após o reinício), acompanhado de chaveamento de um proxy entre a aplicação e o cluster de alta disponibilidade do PostgreSQL.

Extras

Além da cadência mais adequada, o uso dos repositórios PGDG também traz a vantagem de disponibilizar, a partir de uma fonte única, outros softwares relacionados ao PostgreSQL:

Código fonte

Por fim, a opção da instalação por código fonte é a menos recomendada. Ela descarta o processo de empacotamento do PostgreSQL feito pelo PGDG e pelos mantenedores das distribuições, que passa por etapas de configuração, compilação, testes e validação de qualidade, substituindo eles por um processo manual, não-reproduzível e de qualidade questionável.

Prática

CentOS/RHEL

Em distribuições baseadas em rpm/yum/dnf, siga os passos descritos em: https://www.postgresql.org/download/linux/redhat/. São eles:

1 Instale o repositório do EPEL

1.1 Centos (como root)
[root@pg-1 ~]# yum install epel-release
1.2 RHEL

Siga as instruções da Red Hat: https://access.redhat.com/solutions/3358

2 Instale o repositório do PGDG (como root)

[root@pg-1 ~]# rpm -iv https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

3 (apenas para CentOS/RHEL 8) Desabilite o módulo PostgreSQL do repositório da distribuição (como root)

[root@pg-1 ~]# dnf -qy module disable postgresql

4 Instale o PostgreSQL 16 (como root)

[root@pg-1 ~]# yum install postgresql16-server postgresql16-contrib

Debian/Ubuntu

Em distribuições baseadas em deb/apt, siga os passos descritos em: https://apt.postgresql.org/. São eles:

1 Importe a chave do repositório (como root)

root@pg-1:~# apt install curl ca-certificates gnupg
root@pg-1:~# curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

2 Adicione o repositório (como root)

root@pg-1:~# echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list

3 Busque o repositório (como root)

root@pg-1:~# apt update

4 Instale o PostgreSQL 16 (como root)

root@pg-1:~# apt install postgresql-16

Obs.: A instalação dos pacotes de servidor em Debian (e derivados) automaticamente cria uma instância, inicia e habilita o serviço. Isso é uma praticidade em alguns momentos, mas dificulta a instalação em cluster de alta disponibilidade. Portanto, o passo a seguir pode ser usado para deixar o servidor em um estado mais limpo e pronto para atividades mais complexas.

5 (Extra e opcional) Remova o cluster inicial do PostgreSQL 16 (como root ou postgres)

root@pg-1:~# pg_dropcluster 16 main --stop