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: 652 ]

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

Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET

Resolver problemas de Internet

IPv6, DNSv6 e DHCPv6

Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário

VMD no Debian - Instalação e configuração

Leitura recomendada

O Linux e eu - uma parceria ideológica, funcional e divertida

Ultimate Boot CD - Um Fantástico "Canivete Suíço" para recuperar seu Linux

Linux: Executando comandos utilizando a tecnologia biométrica de reconhecimento de voz

Tutorial de instalação LTSP 4.2 (Linux Terminal Server Project) no OpenSuSE 10.2

O que fazer com o BASIC LINUX

  
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