Instalar e Configurar a santíssima trindade (PAP) no Void Linux

Compilação, instalação e configuração do Apache, PostgreSQL e PHP, últimas versões até o momento, no Void Linux.
SEQÜÊNCIA DE INSTALAÇÃO compilando os fontes: 1- Apache; 2- PostgreSQL e 3- PHP.

[ Hits: 672 ]

Por: Buckminster em 02/04/2026


PostgreSQL



$ sudo xbps-install -Su
$ cd Downloads

Acesse o link:
https://www.postgresql.org/ftp/source/v18.3/

Escolha o tar.gz da versão atual no momento:
postgresql-18.3.tar.gz

Ou use o wget:
$ wget https://ftp.postgresql.org/pub/source/v18.3/postgresql-18.3.tar.gz
$ ls

postgresql-18.3.tar.gz

Descompacte:
$ sudo tar xvf postgresql-18.3.tar.gz

Criando usuário e grupo:
$ sudo useradd -r -m -s /bin/bash -d /var/lib/postgres18 postgres18

O que essas flags fazem:
-r: Cria um usuário de sistema (ID abaixo de 1000). Isso evita que ele apareça na sua tela de login do ambiente gráfico.
-m: Cria o diretório home (o padrão no Void é não criar para usuários de sistema, mas o Postgres precisa de um lugar para arquivos de configuração e logs).
-s /bin/bash: Define o shell. Você precisará logar como ele (sudo su - postgres) para rodar o initdb.
-d /var/lib/postgres18: Define onde os dados e configurações do banco vão morar (fora do /opt, que deve guardar apenas os binários compilados).

Instalando dependências:
$ sudo xbps-install -S base-devel pkg-config readline-devel zlib-devel openssl-devel libicu-devel llvm21 llvm21-devel clang21 clang21-devel readline-devel bison flex gnupg2

Fazendo o diretório de construção:
$ mkdir -p ~/postgres18-build

Entrando e mimetizando:
$ cd ~/postgres18-build
$ cp -r ~/Downloads/postgresql-18.3/* .
$ ls

Criando o diretório (dê o nome que quiser):
$ sudo mkdir -p /opt/postgres18

Configurando
$ ./configure --prefix=/opt/postgres18 \
--with-openssl \
--with-icu \
--with-llvm \
--with-readline \
--with-zlib \
--with-system-tzdata=/usr/share/zoneinfo \
LLVM_CONFIG='/usr/lib/llvm/21/bin/llvm-config' \
CLANG='/usr/lib/llvm/21/bin/clang' \
CFLAGS="-O3 -march=native" \
CPPFLAGS="-I/usr/lib/llvm/21/include" \
LDFLAGS="-L/usr/lib/llvm/21/lib"
Terminará sem aviso de erros:
...
config.status: linking src/include/port/linux.h to src/include/pg_config_os.h
config.status: linking src/makefiles/Makefile.linux to src/Makefile.port


$ make -j$(nproc)
Aguarde terminar.
Terminará sem erros:
...
make[2]: Saindo do diretório '/home/kluster/postgres18-build/src/backend/jit/llvm'
make[1]: Saindo do diretório '/home/kluster/postgres18-build/src'


Sempre se deve rodar "make install" com "sudo":
$ sudo make install
Terminará sem erros:
...
/usr/bin/mkdir -p '/opt/postgres18/lib/pgxs/config'
/usr/bin/install -c -m 755 ./install-sh '/opt/postgres18/lib/pgxs/config/install-sh'
/usr/bin/install -c -m 755 ./missing '/opt/postgres18/lib/pgxs/config/missing'
make[1]: Saindo do diretório '/home/kluster/postgres18-build/config'


--with-openssl: Habilita o suporte a conexões criptografadas (SSL/TLS). Essencial para segurança em rede e autenticação via certificados.
--with-icu: Ativa a biblioteca International Components for Unicode. Melhora o suporte a ordenação (collation) e busca de textos em diferentes idiomas e alfabetos complexos.
--with-llvm: Habilita a compilação JIT (Just-In-Time). O Postgres usa o LLVM para acelerar a execução de consultas SQL complexas, transformando-as em código de máquina em tempo de execução.
--with-readline: Permite o uso da biblioteca Readline no terminal psql. Isso habilita o histórico de comandos (setas para cima/baixo) e o autocompletar (Tab).
--with-zlib: Habilita compressão de dados. É usado principalmente pelo utilitário pg_dump e para compressão de logs de transação (WAL).
--with-system-tzdata: Diz ao PostgreSQL para usar o banco de dados de fusos horários do sistema (/usr/share/zoneinfo) em vez de compilar e usar uma cópia própria. Isso facilita a atualização de horários de verão pelo SO.
CFLAGS="-O3 -march=native":
-O3: Aplica o nível máximo de otimização do compilador (GCC/Clang), priorizando velocidade de execução.
-march=native: Faz o compilador gerar código específico para as instruções do seu processador atual. Isso extrai o máximo de performance da sua CPU, mas torna o binário incompatível com outros modelos de processador.

Como instalamos em /opt, o sistema não vai achar as bibliotecas dinâmicas (.so) do Postgres automaticamente quando você tentar rodar o php ou o psql, então, cria-se um arquivo de configuração para o linkador:
$ echo "/opt/postgres18/lib" | sudo tee /etc/ld.so.conf.d/postgres18.conf
$ sudo ldconfig
/opt/postgres18/lib

Isso evita aquele erro clássico de "error while loading shared libraries: libpq.so.5: cannot open shared object file".

Permissionando:
$ sudo chown -R postgres18:postgres18 /opt/postgres18

Cria a estrutura de pastas caso não exista:
$ sudo mkdir -p /var/lib/postgres18/data

Define o usuário 'postgres18' como dono de tudo:
$ sudo chown -R postgres18:postgres18 /var/lib/postgres18

Ajusta as permissões (obrigatório para o initdb não reclamar):
$ sudo chmod 700 /var/lib/postgres18/data

Inicializando os dados:
$ sudo su - postgres18

[postgres18@servidor ~]$ /opt/postgres18/bin/initdb -D /var/lib/postgres18/data --locale=pt_BR.UTF-8 --encoding=UTF8

Success. You can now start the database server using:
/opt/postgres18/bin/pg_ctl -D /var/lib/postgres18/data -l logfile start


[postgres18@servidor ~]$ exit

Quando quiser mudar o locale, execute num comando só:
$ sudo su - postgres18 -c "/opt/postgres18/bin/initdb -D /var/lib/postgres18/data --locale=pt_BR.UTF-8 --encoding=UTF8"

The files belonging to this database system will be owned by user "postgres18".
This user must also own the server process.

The database cluster will be initialized with locale "pt_BR.UTF-8".
The default text search configuration will be set to "portuguese".

Data page checksums are enabled.

initdb: error: directory "/var/lib/postgres18/data" exists but is not empty
initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgres18/data" or run initdb with an argument other than "/var/lib/postgres18/data".


Nota: Confira o arquivo /etc/default/libc-locales.

O PostgreSQL 18 está oficialmente inicializado e pronto para rodar.

Criando o Serviço no Runit (o Init do Void)

$ sudo mkdir -p /etc/sv/postgres18
$ sudo vim /etc/sv/postgres18/run

Copie e cole o conteúdo abaixo:
#!/bin/sh
# Garante que o log de erros seja visivel se o serviço falhar
exec 2>&1

# Define as variaveis de ambiente necessarias
export LD_LIBRARY_PATH=/opt/postgres18/lib
export PATH=/opt/postgres18/bin:$PATH

# Executa o postgres como o usuario correto (-u)
# O sinalizador -D aponta para o diretorio de dados que voce definiu
exec chpst -u postgres18 /opt/postgres18/bin/postgres18 -D /var/lib/postgres18/data
Salve e saia.

$ sudo chmod +x /etc/sv/postgres18/run
$ sudo ln -s /etc/sv/postgres18 /var/service/
$ sudo sv enable postgres18
$ sudo sv start postgres18
ok: run: postgres18: (pid 21369) 0s

Verificar status: sudo sv status postgres18
Reiniciar: sudo sv restart postgres18
Parar: sudo sv stop postgres18

Para usar o comando psql direto no seu terminal de usuário, adicione esta linha ao seu ~/.bashrc (ou .zshrc):
export PATH="/opt/postgres18/bin:$PATH"

Para ver logs e configurações no Postgres faça como usuário postgres18:
$ sudo su - postgres18

[postgres18@servidor ~]$ cd /var/lib/postgres18/data/
[postgres18@servidor data]$ ls
PG_VERSION pg_hba.conf pg_replslot pg_subtrans postgresql.auto.conf
base pg_ident.conf pg_serial pg_tblspc postgresql.conf
global pg_logical pg_snapshots pg_twophase postmaster.opts
pg_commit_ts pg_multixact pg_stat pg_wal postmaster.pid
pg_dynshmem pg_notify pg_stat_tmp pg_xact

[postgres18@servidor data]$ exit

Configurando para escutar localmente:
$ sudo vim /var/lib/postgres18/data/postgresql.conf

Na linha ~60, descomente e mude:
#listen_addresses = 'localhost' # what IP address(es) to listen on;
listen_addresses = '127.0.0.1' # what IP address(es) to listen on;
Salve e saia.

Vamos editar o arquivo pg_hba.conf (Host-Based Authentication), ele está em /var/lib/postgres18/data/pg_hba.conf.
$ sudo -u postgres18 vim /var/lib/postgres18/data/pg_hba.conf
Linux: Instalar e Configurar a santíssima trindade (PAP) no Void Linux
Verifique se está "trust" no arquivo, caso estiver, mude para "scram-sha-256" e tente acessar.
Recarregue as configurações:
$ sudo -u postgres18 /opt/postgres18/bin/pg_ctl -D /var/lib/postgres18/data reload
server signaled

Tente entrar no banco e pedirá senha:
$ /opt/postgres18/bin/psql -U postgres18 -d postgres
Password for user postgres18:
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: fe_sendauth: no password supplied


Abra o arquivo novamente:
$ sudo vim /var/lib/postgres18/data/pg_hba.conf

Altere a linha
local all postgres18 scram-sha-256
de scram-sha-256 para trust.
Salve e saia.

$ sudo -u postgres18 /opt/postgres18/bin/pg_ctl -D /var/lib/postgres18/data reload
server signaled

Entre sem senha:
$ /opt/postgres18/bin/psql -U postgres18 -d postgres
psql (18.3)
Type "help" for help.

Defina uma senha para o superusuário postgres18 (guarde bem a senha de acesso para não esquecer):
postgres=# ALTER USER postgres18 PASSWORD 'senha';
ALTER ROLE

postgres=# exit
Linux: Instalar e Configurar a santíssima trindade (PAP) no Void Linux
Retorne ao arquivo /var/lib/postgres18/data/pg_hba.conf e altere a linha para scram-sha-256, salve, saia e recarregue.
Ao tentar entrar com psql -U postgres18 -d postgres, ele solicitará a senha que você definiu.
Agora basta criar um banco de dados e começar.

Para gerenciar pode instalar o Dbeaver, interface gráfica que é nativa dos repositórios Void e é mais performática do que o PgAdmin:
$ sudo xbps-install dbeaver

Para Remover

$ cd /opt

Removendo o link:
$ sudo rm /var/service/postgres18

Removendo o diretório /opt/postgres18:
$ sudo rm -rf postgres18

Faça uma busca por reminiscências (remova somente as referências que instalamos):
$ sudo find / | grep postgres18 | less

Obs.: Para navegar na busca use as setas de direção e "Page Up-Page Down", para sair digite q (tecla q).

Remova:
$ sudo rm -rf /home/usuario/postgres18-build
$ sudo rm -rf /home/postgres18
$ sudo rm -rf /etc/sv/postgres18

Remova usuário e grupo:
$ sudo userdel postgres18


Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Apache
   3. PostgreSQL
   4. PHP
   5. Conclusão
Outros artigos deste autor

Como utilizar de forma correta os repositórios e pacotes Backports

Instalação do Ventoy, programa para criar pendrives inicializáveis

Encapsulando BIND 9 e Apache 2 para obter maior segurança

Compilação de Kernel

ClamAV, o kit de ferramentas antivírus

Leitura recomendada

UNIX - Definição e História

O primeiro FISL ninguém esquece!

Google AdSense vs Layout de websites

Transmissão de áudio e vídeo via Multicast

Como utilizar de forma correta os repositórios e pacotes Backports

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts