Eu compilei e instalei com sucesso a versão mais recente do PostgreSQL (17.4) no Ubuntu ARM32.

Os comandos neste artigo vêm principalmente da documentação oficial do PostgreSQL. Testei na prática todos os comandos deste artigo.

Pode ver aqui os sistemas onde a instalação é bem-sucedida PostgreSQL Build Farm

Compilar e instalar o PostgreSQL 17.4

1. Criar e entrar no diretório

mkdir postgresql && cd postgresql
  • mkdir postgresql: Cria um novo diretório chamado postgresql.
  • cd postgresql: Entra no diretório postgresql recém-criado.

2. Descarregar o código fonte do PostgreSQL

wget https://ftp.postgresql.org/pub/source/v17.4/postgresql-17.4.tar.bz2
  • wget: Descarrega o ficheiro do URL especificado.
  • https://..../postgresql-17.4.tar.bz2: Link de descarregamento do pacote de código fonte comprimido da versão 17.4 do PostgreSQL. Se o link estiver inativo, pode procurar um novo link você mesmo.

3. Descomprimir o pacote de código fonte

tar xjf postgresql-17.4.tar.bz2
  • tar: Usado para processar ficheiros comprimidos .tar.

  • xjf: Opções para extrair ficheiros tar:

    • x: Extrair ficheiros.
    • j: Usar o formato de compressão bzip2 (.bz2).
    • f: Especifica o ficheiro a ser extraído.
  • postgresql-17.4.tar.bz2: Nome do ficheiro a ser extraído.

4. Entrar no diretório do código fonte extraído

cd postgresql-17.4
  • Entrar no diretório do código fonte do PostgreSQL 17.4 extraído.

5. Instalar os pacotes de dependência

sudo apt install libssl-dev libsystemd-dev libxml2-dev libreadline-dev
  • sudo apt install: Usar o gerenciador de pacotes apt para instalar pacotes.
  • libssl-dev, libsystemd-dev, libxml2-dev, libreadline-dev: Instalar as bibliotecas de desenvolvimento necessárias para compilar o PostgreSQL, que são as bibliotecas SSL, Systemd, XML e Readline, respetivamente.

6. Configurar as opções de compilação

./configure --prefix=/usr/local/pgsql --with-openssl --with-libxml --with-systemd
  • ./configure: Preparar o ambiente de compilação do PostgreSQL.
  • --prefix=/usr/local/pgsql: Especificar o diretório de instalação do PostgreSQL como /usr/local/pgsql.
  • --with-openssl: Ativar o suporte OpenSSL.
  • --with-libxml: Ativar o suporte XML.
  • --with-systemd: Ativar o suporte Systemd.

7. Compilar o código fonte

make -j$(nproc)
  • make: Iniciar o processo de compilação.
  • -j$(nproc): Usar nproc (o número de núcleos de CPU do sistema) para executar tarefas de compilação em paralelo, acelerando o processo de compilação.

8. Instalar o PostgreSQL

sudo make install
  • sudo make install: Usar sudo para executar a instalação com permissões de administrador, make install instala os ficheiros compilados no sistema, instalando-os no diretório /usr/local/pgsql especificado no comando ./configure anterior.

9. Configurar as variáveis de ambiente

Usar um editor de texto 1. Editar o ficheiro /etc/profile:

sudo nano /etc/profile
  • sudo: Indica que o comando é executado com permissões de superutilizador (administrador). A modificação do ficheiro /etc/profile requer permissões de administrador.
  • nano: Este é um editor de texto frequentemente usado em ambientes de terminal para editar ficheiros.
  • /etc/profile: Este é um ficheiro de configuração global usado para definir variáveis de ambiente em todo o sistema e configurações de inicialização. Todos os utilizadores executam as configurações neste ficheiro ao iniciar sessão no sistema.
  1. Adicionar variáveis de ambiente:
export PATH=/usr/local/pgsql/bin:$PATH
  • export: Usado para definir uma variável de ambiente para que esteja disponível no processo atual e nos subprocessos.
  • PATH: Esta é uma variável de ambiente que contém uma lista de diretórios de ficheiros executáveis no sistema. Ao executar um comando, o sistema procura o comando com base nos diretórios listados na variável PATH.
  • /usr/local/pgsql/bin: Este é o diretório de ficheiros executáveis do banco de dados PostgreSQL, adicioná-lo significa que os ficheiros executáveis neste diretório (como psql) serão reconhecidos pelo sistema.
  • :$PATH: Aqui, $PATH representa o caminho existente, adicionando o novo caminho /usr/local/pgsql/bin antes do PATH original. Desta forma, o sistema verifica primeiro o novo diretório e, em seguida, verifica o caminho original.

Esta linha de comandos serve para adicionar o diretório de ficheiros executáveis do PostgreSQL à variável de ambiente do sistema PATH, garantindo que os comandos PostgreSQL (como psql) podem ser executados diretamente na linha de comandos sem fornecer o caminho completo. As configurações modificadas entrarão em vigor para todos os utilizadores

Inicializar a base de dados PostgreSQL

Estes comandos são usados principalmente para configurar manualmente o servidor de base de dados PostgreSQL num servidor Linux, incluindo a criação de um utilizador do sistema PostgreSQL, a inicialização da base de dados, o início do serviço de base de dados e o seu registo como um serviço systemd para iniciar automaticamente na inicialização.

1. Criar utilizador PostgreSQL

sudo useradd -m -U -r -d /var/lib/postgresql -s /bin/bash postgres
  • sudo: Executar comandos com permissões de superutilizador.
  • useradd: Criar um novo utilizador.
  • -m: Criar o diretório home do utilizador.
  • -U: Criar também um grupo de utilizadores com o mesmo nome que o nome de utilizador.
  • -r: Criar um utilizador do sistema (o UID do utilizador do sistema é inferior a 1000 e não é usado para iniciar sessão).
  • -d /var/lib/postgresql: Especificar o diretório home como /var/lib/postgresql.
  • -s /bin/bash: Especificar o shell como /bin/bash.
  • postgres: Nome de utilizador.

Este comando cria um utilizador do sistema dedicado ao PostgreSQL, postgres.


2. Alterar o proprietário do diretório PostgreSQL

sudo chown postgres /usr/local/pgsql
  • chown postgres /usr/local/pgsql: Altera o proprietário do diretório /usr/local/pgsql para o utilizador postgres, permitindo-lhe ler e escrever no diretório.

3. Definir a palavra-passe do utilizador PostgreSQL

sudo passwd postgres
  • passwd postgres: Modifica a palavra-passe do utilizador postgres.

4. Mudar para o utilizador PostgreSQL

su postgres
  • su postgres: Mudar para o utilizador postgres para usar os comandos relacionados com o PostgreSQL.

5. Inicializar a base de dados

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
  • initdb -D /usr/local/pgsql/data: Inicializa o armazenamento da base de dados no diretório /usr/local/pgsql/data.

6. Iniciar a base de dados PostgreSQL

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
  • postgres -D /usr/local/pgsql/data: Inicia a base de dados com o processo postgres, com os dados armazenados no diretório /usr/local/pgsql/data.

7. Noutra sessão de terminal, entrar na base de dados

su postgres
/usr/local/pgsql/bin/psql
  • psql: Ferramenta interativa de linha de comandos do PostgreSQL para entrar no shell da base de dados.

8. Definir a palavra-passe do utilizador da base de dados

ALTER USER postgres WITH PASSWORD 'your_new_password';
  • Modifica a palavra-passe do utilizador da base de dados postgres.

9. Criar um serviço systemd

sudo nano /etc/systemd/system/postgresql.service
  • nano /etc/systemd/system/postgresql.service: Edita o ficheiro de configuração systemd para permitir que o PostgreSQL seja executado como um serviço.

Conteúdo do ficheiro de configuração:

[Unit]
Description=PostgreSQL server
#Documentation=man:postgres(1)
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=infinity

[Install]
WantedBy=multi-user.target
  • Description=PostgreSQL server: Descreve que este serviço é o servidor PostgreSQL.
  • After=network-online.target: Espera que a ligação de rede esteja disponível antes de iniciar o PostgreSQL.
  • User=postgres: É executado como o utilizador postgres.
  • ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data: Inicia o servidor PostgreSQL.
  • ExecReload=/bin/kill -HUP $MAINPID: Envia o sinal HUP ao recarregar.
  • KillMode=mixed: Modo de terminação mista.
  • KillSignal=SIGINT: Sinal para terminar o processo PostgreSQL.
  • TimeoutSec=infinity: Tempo limite definido como infinito.

10. Ativar o serviço systemd

sudo systemctl daemon-reload
sudo systemctl start postgresql
sudo systemctl status postgresql
sudo systemctl enable postgresql
  • daemon-reload: Recarrega a configuração systemd para que o novo postgresql.service entre em vigor.
  • start postgresql: Inicia o serviço PostgreSQL.
  • status postgresql: Verifica o estado de execução do PostgreSQL.
  • enable postgresql: Inicia automaticamente o PostgreSQL na inicialização.

O objetivo destes comandos é:

  1. Criar um utilizador postgres dedicado à execução do PostgreSQL.
  2. Inicializar o diretório de armazenamento da base de dados.
  3. Iniciar a base de dados PostgreSQL e entrar na linha de comandos interativa psql.
  4. Configurar systemd para executar o PostgreSQL como um serviço do sistema e suportar a execução automática no arranque.

Desta forma, o servidor PostgreSQL pode ser executado normalmente e pode ser iniciado automaticamente quando o sistema é iniciado.

Referências

PostgreSQL: Documentação: 17: Capítulo 17. Instalação a partir do código fonte

Outras versões desta página web

Este artigo tem versões em vários idiomas.

Se quiser deixar um comentário, visite a seguinte página web:

ZH EN ZH-TW JA

Estas páginas web suportam apenas a navegação e não suportam comentários ou mensagens, mas oferecem mais opções de idioma e tempos de carregamento mais rápidos:

ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO

Este artigo foi traduzido de Chinese (Simplified) para Portuguese por IA.