./configure make su make install adduser postgres mkdir -p /usr/local/pgsql/data chown postgres /usr/local/pgsql/data su - postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start /usr/local/pgsql/bin/createdb test /usr/local/pgsql/bin/psql test
A versão longa é o restante desta seção.
Configuração
A primeira etapa do procedimento de instalação é configurar a
árvore de construção para o sistema, e escolher as opções desejadas.
Isto é feito executando o script configure.
Para uma instalação padrão, basta digitar:
./configure
Este script executa vários testes para determinar valores para diversas variáveis dependentes do sistema, e detectar quaisquer peculiaridades do sistema operacional. Finalmente, cria vários arquivos na árvore de construção para registrar o que encontrou.
Também é possível executar o configure em um
diretório fora da árvore de construção e, em seguida, construir lá,
se for desejado manter o diretório de construção separado dos
arquivos de construção originais.
Este procedimento é chamado de construção VPATH.
Abaixo está mostrado como proceder:
mkdir build_dircd build_dir/caminho/para/árvore/fonte/configure [as opções vão aqui]make
A configuração padrão constrói o servidor e os utilitários, bem como
todas as aplicações e interfaces cliente que requerem apenas o
compilador C.
Todos os arquivos serão instalados no diretório
/usr/local/pgsql por padrão.
O processo de construção e instalação pode ser personalizado
fornecendo uma ou mais opções de linha de comando para o
configure.
Normalmente, é personalizado o local de instalação, ou o conjunto
de recursos opcionais criados.
O configure possui um grande número de opções,
que estão descritas em Opções do configure.
Além disso, o configure leva em consideração
certas variáveis de ambiente, conforme descrito em
Variáveis de ambiente do configure.
Estas variáveis fornecem maneiras adicionais para personalizar a
configuração.
Construção
Para iniciar a construção, deve-se executar um desses comandos:
makemake all
(Lembre-se de usar o make do GNU.) A construção levará alguns minutos, dependendo do equipamento usado.
Se for desejado construir tudo o que pode ser construído, incluindo
a documentação (páginas HTML e do manual)
e os módulos adicionais (contrib),
deve-se executar então:
make world
Se for desejado construir tudo o que pode ser construído, incluindo
os módulos adicionais (contrib), mas sem a
documentação, deve-se executar então:
make world-bin
Se for desejado iniciar a construção a partir de outro arquivo
Makefile em vez de manualmente, então
MAKELEVEL deve ser desmarcado, ou definido
como zero. Por exemplo:
build-postgresql:
$(MAKE) -C postgresql MAKELEVEL=0 all
A falha em fazer isto pode levar a mensagens de erro estranhas, geralmente sobre arquivos de cabeçalho ausentes.
Testes de regressão
Se for desejado testar o servidor recém-criado antes de instalá-lo, podem ser executados testes de regressão neste momento. Os testes de regressão são um conjunto de testes para verificar se o PostgreSQL está sendo executado na máquina da maneira que os desenvolvedores esperavam que fosse. Para isto, deve ser executado:
make check
(não funciona quando executado pelo usuário root; deve ser executado por um usuário sem privilégios.) Veja Capítulo 31 para obter informações detalhadas sobre como interpretar os resultados do teste. Este teste poderá ser repetido posteriormente executando o mesmo comando.
Instalação dos arquivos
Se estiver sendo atualizado um sistema existente, será necessário ler Atualização do agrupamento de bancos de dados do PostgreSQL, que contém instruções sobre como atualizar um agrupamento de bancos de dados (cluster).
Para instalar o PostgreSQL deve-se executar:
make install
Este comando instala os arquivos nos diretórios especificados em Configuração. Certifique-se de ter as permissões apropriadas para escrever nesta área. Normalmente, é necessário executar este passo como o usuário root. Como alternativa, podem ser criados os diretórios de destino com antecedência, e providenciada a concessão das permissões apropriadas.
Para instalar a documentação (páginas HTML e do manual), deve-se executar:
make install-docs
Se construiu tudo usando make world acima, deve-se executar:
make install-world
Este comando também instala a documentação.
Se construiu tudo, mas sem a documentação, usando
make world-bin acima, execute:
make install-world-bin
Pode ser usado make install-strip, em vez de
make install, para remover dos arquivos
executáveis e bibliotecas suas informações de depuração à medida
que são instalados.
Isto economiza algum espaço.
Se o PostgreSQL foi criado com suporte
à depuração, a remoção removerá de fato o suporte à depuração,
portanto só deverá ser feito se a depuração não for mais necessária.
A opção install-strip tenta fazer um trabalho
razoável economizando espaço, mas não tem um conhecimento perfeito
de como remover todos os bytes desnecessários de um arquivo
executável, portanto, se for desejado economizar todo o espaço
possível em disco, terá que ser feito um trabalho manual.
A instalação padrão fornece todos os arquivos de cabeçalho necessários para o desenvolvimento de aplicações cliente, bem como para o desenvolvimento de programas do lado servidor, como funções personalizadas ou tipos de dados escritos em C.
Instalação das aplicações cliente: Se for desejado instalar apenas as aplicações cliente e as bibliotecas de interface, podem ser usados os seguintes comandos:
make -C src/bin installmake -C src/include installmake -C src/interfaces installmake -C doc install
O diretório src/bin contém alguns arquivos
binários para uso somente do servidor, mas são pequenos.
Desinstalação:
Para desfazer a instalação deve ser usado o comando
make uninstall.
Entretanto, este comando não remove nenhum diretório criado.
Limpeza:
Após a instalação, pode ser liberado espaço em disco removendo
os arquivos construção da árvore do código-fonte usando o comando
make clean.
Este comando preserva os arquivos criados pelo programa
configure, para que se possa reconstruir tudo
usando o make mais tarde.
Para redefinir a árvore do código-fonte para voltar ao estado igual ao que foi
distribuída, deve ser usado o comando make distclean.
Se for feita a construção para várias plataformas na mesma árvore
de código-fonte, deverá ser executado este comando e feita a
reconfiguração para cada plataforma.
(Como alternativa, pode ser usada uma árvore de construção separada
para cada plataforma, para que a árvore do código-fonte original permaneça
inalterada.)
Se for executada a construção e depois descoberto que as opções
do configure estavam erradas, ou se for alterado
algo que o configure investiga
(por exemplo, atualizações de software), então é uma boa ideia
executar make distclean antes de reconfigurar e
reconstruir.
Sem isto, as alterações nas opções de configuração podem não ser
propagadas para todos os lugares necessários.
As opções de linha de comando do configure são
explicadas abaixo. Esta lista não é completa (deve-se executar
./configure --help para obter uma lista completa).
As opções não cobertas aqui destinam-se a casos de uso avançados,
como construção cruzada, e estão documentadas na documentação padrão
do Autoconf.
Estas opções controlam onde make install
irá colocar os arquivos. A opção --prefix é
suficiente para a maioria dos casos. Caso existam necessidades
especiais, é possível personalizar os subdiretórios de instalação
usando as outras opções descritas nesta seção.
Esteja ciente, porém, que alterar as localizações relativas dos
diferentes subdiretórios pode tornar a instalação não realocável,
significando que não poderá ser movida após a instalação.
(As localizações das páginas do manual (man)
e da documentação (doc) não são afetadas por
esta restrição.)
Para instalações relocáveis, pode-se desejar usar a opção
--disable-rpath descrita mais adiante.
--prefix=PREFIXO #
Instala todos os arquivos no diretório
PREFIXO em vez de
/usr/local/pgsql.
Os arquivos em si são instalados em vários subdiretórios;
nenhum arquivo é instalado diretamente no diretório
PREFIXO.
--exec-prefix=EXEC-PREFIXO #
Os arquivos que dependem da arquitetura podem ser instalados
em um diretório com prefixo diferente,
EXEC-PREFIXO,
diferente do definido por PREFIXO.
Isto pode ser útil para compartilhar arquivos independentes
da arquitetura entre computadores hospedeiros.
Se esta opção for omitida, então
EXEC-PREFIXO será igual a
PREFIXO, e tanto os arquivos
dependentes de arquitetura quanto os arquivos independentes
de arquitetura serão instalados na mesma árvore, que
normalmente é o que se deseja.
--bindir=DIRETÓRIO #
Define o diretório para os programas executáveis. O padrão é
,
que normalmente significa EXEC-PREFIXO/bin/usr/local/pgsql/bin.
--sysconfdir=DIRETÓRIO #
Define o diretório para vários arquivos de configuração. O padrão
é .
PREFIXO/etc
--libdir=DIRETÓRIO #
Define o diretório para instalar as bibliotecas e os módulos
carregáveis dinamicamente. O padrão é
.
EXEC-PREFIXO/lib
--includedir=DIRETÓRIO #
Define o diretório para instalar os arquivos de cabeçalho
das linguagens C e C++.
O padrão é
.
PREFIXO/include
--datarootdir=DIRETÓRIO #
Define o diretório raiz para vários tipos de arquivos de
dados somente de leitura.
Esta opção apenas define o padrão para algumas das opções a
seguir. O padrão é
.
PREFIXO/share
--datadir=DIRETÓRIO #
Define o diretório para arquivos de dados somente de leitura
usados pelos programas instalados. O padrão é
.
Note que não tem relação com onde os arquivos de
banco de dados serão colocados.
DATAROOTDIR
--localedir=DIRETÓRIO #
Define o diretório para instalação dos dados de localidade,
em particular os arquivos do catálogo de tradução de mensagens.
O padrão é
.
DATAROOTDIR/locale
--mandir=DIRETÓRIO #
As páginas do manual (man pages)
que vêm com o PostgreSQL são
instaladas neste diretório, em seus respectivos subdiretórios
man.
O padrão é
x.
DATAROOTDIR/man
--docdir=DIRETÓRIO #
Define o diretório raiz para instalar os arquivos da documentação,
exceto as man pages.
Esta opção apenas define o padrão para as opções a seguir.
O valor padrão para esta opção é
.
DATAROOTDIR/doc/postgresql
--htmldir=DIRETÓRIO #
A documentação para o PostgreSQL
no formato HTML é instalada neste
diretório. O padrão é
.
DATAROOTDIR
Foram tomados cuidados para possibilitar a instalação do
PostgreSQL em locais de instalação
compartilhados (como /usr/local/include)
sem interferir no espaço de nomes do resto do sistema.
Primeiro, a cadeia de caracteres
“/postgresql”
é anexada automaticamente a datadir,
sysconfdir e docdir,
a menos que o nome do diretório totalmente expandido já contenha
a cadeia de caracteres “postgres”,
ou “pgsql”.
Por exemplo, se for escolhido /usr/local
como prefixo, a documentação será instalada em
/usr/local/doc/postgresql, mas se o prefixo
for /opt/postgres, então será instalada em
/opt/postgres/doc.
Os arquivos de cabeçalho C públicos das
interfaces cliente são instalados em
includedir, e são limpos quanto a espaço de nomes.
Os arquivos de cabeçalho internos, e os arquivos de cabeçalho do
servidor, são instalados em diretórios privados em
includedir.
Consulte a documentação de cada interface para obter informações
sobre como acessar seus arquivos de cabeçalho.
Finalmente, também é criado um subdiretório privado, caso seja
apropriado, em libdir, para módulos carregáveis
dinamicamente.
As opções descritas nesta seção permitem a construção de vários recursos do PostgreSQL que não são construídos por padrão. A maioria não faz parte do padrão por requerer software adicional, conforme descrito em Requisitos.
--enable-nls[=IDIOMAS] #
Ativa o suporte ao idioma nativo
(Native Language Support,
NLS), ou seja, a capacidade do programa
mostrar as mensagens em um idioma diferente do inglês.
IDIOMAS é uma lista opcional contendo
os códigos de idioma, separados por espaços, que se deseja dar
suporte. Por exemplo --enable-nls='de fr'.
(A interseção entre esta lista e o conjunto de traduções
realmente fornecidas será calculada automaticamente.)
Se a lista não for especificada, serão instaladas todas as
traduções disponíveis.
Para usar esta opção é necessária uma implementação da API do Gettext.
--with-perl #Constrói a linguagem do lado servidor PL/Perl.
--with-python #Constrói a linguagem do lado servidor PL/Python.
--with-tcl #Constrói a linguagem do lado servidor PL/Tcl.
--with-tclconfig=DIRETÓRIO #
O Tcl instala o arquivo
tclConfig.sh, contendo as informações
de configuração necessárias para construir os módulos que fazem
interface com o Tcl.
Este arquivo é normalmente encontrado automaticamente em um
local conhecido, mas se for desejado usar uma versão diferente
do Tcl, pode ser especificado o diretório
onde procurar por tclConfig.sh.
--with-llvm #Constrói com suporte para compilação JIT baseada em LLVM (veja Compilação Just-in-Time (JIT)). Isto requer a instalação da biblioteca LLVM. A versão mínima requerida da LLVM é no momento a 14.
O llvm-config
será usado para encontrar as opções de compilação requeridas.
O llvm-config será procurado no
PATH.
Se isto não resultar no programa desejado, deve-se usar
LLVM_CONFIG para especificar o caminho para o
llvm-config correto.
Por exemplo
./configure ... --with-llvm LLVM_CONFIG='/caminho/para/llvm/bin/llvm-config'
O suporte ao LLVM requer um
compilador clang compatível (especificado, se
necessário, usando a variável de ambiente CLANG),
e um compilador C++ funcionando (especificado,
se necessário, usando a variável de ambiente CXX).
--with-lz4 #Constrói com suporte a compressão LZ4.
--with-zstd #Constrói com suporte a compressão Zstandard.
--with-ssl=BIBLIOTECA
#
Constrói com suporte para conexões SSL
(encriptadas).
A única BIBLIOTECA com suporte é a
openssl, que é usada tanto pelo
OpenSSL quanto pela
LibreSSL.
Isto requer a instalação do pacote
OpenSSL.
O configure irá verificar os arquivos de
cabeçalho e bibliotecas requeridos para garantir que a
instalação do OpenSSL seja
adequada antes de prosseguir.
--with-openssl #
Forma obsoleta equivalente a --with-ssl=openssl.
--with-gssapi #
Constrói com suporte para autenticação
GSSAPI.
É necessário instalar o
MIT Kerberos
para instalar o GSSAPI.
Em muitos sistemas operacionais, o sistema GSSAPI
(uma parte da instalação do MIT Kerberos)
não está instalado em um local procurado por padrão
(por exemplo, /usr/include ou
/usr/lib),
então é necessário usar as opções
--with-includes e
--with-libraries além dessa opção.
O configure irá verificar os arquivos de
cabeçalho e bibliotecas requeridos para garantir que a
instalação do GSSAPI seja
adequada antes de prosseguir.
--with-ldap #
Constrói com suporte ao
LDAP
para autenticação e procura de parâmetros de conexão
(veja LDAP Lookup of Connection Parameters
e a Autenticação LDAP para obter mais informações).
No Unix, esta opção
requer a instalação do pacote OpenLDAP.
No Windows, é usada a
biblioteca padrão WinLDAP.
O configure verifica os arquivos de
cabeçalho e bibliotecas necessários para garantir que a
instalação do OpenLDAP esteja
adequada antes de prosseguir.
--with-pam #Constrói com suporte ao PAM (Pluggable Authentication Modules).
--with-bsd-auth #Constrói com suporte para autenticação BSD. (No momento, a estrutura de autenticação BSD está disponível apenas no OpenBSD.)
--with-systemd #Constrói com suporte para notificações de serviço systemd. Isto melhora a integração se o servidor for iniciado sob o systemd, mas não tem impacto caso contrário; veja Ativação do servidor de banco de dados para obter mais informações. Para usar esta opção, é necessário instalar a libsystemd e os arquivos de cabeçalho associados.
--with-bonjour #Constrói com suporte para descoberta automática de serviços Bonjour. Isto requer suporte ao Bonjour no sistema operacional. Recomendado no macOS.
--with-uuid=BIBLIOTECA #
Constrói o módulo uuid-ossp
(que fornece funções para gerar UUIDs),
usando a biblioteca UUID especificada.
A BIBLIOTECA deve ser uma entre:
bsd para usar as funções de UUID encontradas
no FreeBSD e em alguns
outros sistemas derivados do BSD.
e2fs para usar a biblioteca UUID criada
pelo projeto e2fsprogs;
esta biblioteca está presente na maioria dos sistemas
Linux e no
macOS, e também
pode ser obtida para outras plataformas.
ossp para usar a biblioteca OSSP UUID
--with-ossp-uuid #
Forma obsoleta equivalente a --with-uuid=ossp.
--with-libcurl #
Constrói com suporte para
libcurl
para fluxos de cliente
OAuth 2.0.
É necessária a versão 7.61.0, ou posterior, da
Libcurl para utilizar esta funcionalidade.
Ao construir, será verificado se os arquivos de cabeçalho e
bibliotecas necessários estão presentes para garantir que a
instalação do Curl seja adequada
antes de prosseguir.
--with-libnuma #
Constrói com suporte para libnuma para
suporte básico a
NUMA (Non-Uniform Memory Access).
Tem suporte apenas nas plataformas onde a biblioteca
libnuma esteja implementada.
--with-liburing #
Constrói com liburing, ativando o suporte a
io_uring
para E/S assíncrona.
Para detectar as opções necessárias do compilador e do vinculador,
o PostgreSQL irá consultar o
pkg-config.
Para usar uma instalação da liburing que
esteja em um local não usual, pode-se definir variáveis de
ambiente relacionadas ao pkg-config
(veja a documentação).
--with-libxml #
Constrói com libxml2, ativando o suporte
a SQL/XML.
É requerida a versão 2.6.23, ou posterior, da
Libxml2
para esta funcionalidade.
Para detectar as opções necessárias do compilador e do vinculador,
o PostgreSQL irá consultar o
pkg-config, caso este esteja instalado e
conheça a biblioteca libxml2.
Caso contrário, será usado o programa xml2-config,
instalado pela libxml2, se este for encontrado.
É preferível o uso do pkg-config, porque
ele lida melhor com instalações em múltiplas arquiteturas.
Para usar uma instalação da libxml2 que
esteja em um local não usual, pode-se definir variáveis de
ambiente relacionadas ao pkg-config
(veja a documentação), ou definir a variável de ambiente
XML2_CONFIG para apontar para o programa
xml2-config pertencente à instalação da
libxml2, ou definir as variáveis de ambiente
XML2_CFLAGS e XML2_LIBS.
(Se o pkg-config estiver instalado,
então para sobrescrever sua ideia de onde está a
libxml2, deve-se definir
XML2_CONFIG, ou definir XML2_CFLAGS
e XML2_LIBS como cadeias de caracteres não vazias.)
--with-libxslt #
Constrói com a libxslt, ativando o módulo
xml2 para realizar transformações
XSL de XML.
A opção --with-libxml também deve ser
especificada.
--with-selinux #Constrói com suporte a SELinux, ativando a extensão sepgsql.
As opções descritas nesta seção permitem desativar certos recursos do PostgreSQL que são integrados por padrão, mas que podem precisar ser desativados caso o software ou os recursos de sistema necessários não estejam disponíveis. O uso dessas opções não é recomendado, a menos que seja realmente necessário.
--without-icu #Constrói sem suporte para a biblioteca ICU desativando o uso dos recursos de ordenação ICU. (veja Suporte a ordenação).
--without-readline #Impede o uso da biblioteca Readline (e a libedit também). Esta opção desativa a edição da linha de comando e o histórico no psql.
--with-libedit-preferred #Favorece o uso da biblioteca libedit licenciada sob a licença BSD, em vez da Readline com licença GPL. Esta opção só é relevante havendo as duas bibliotecas instaladas; o padrão neste caso é usar a Readline.
--without-zlib #Impede o uso da biblioteca Zlib. Isto desativa o suporte para arquivos comprimidos no pg_dump e no pg_restore.
--with-includes=DIRETÓRIOS #
Onde DIRETÓRIOS é uma lista de
diretórios separados por dois pontos que serão adicionados à
lista que o compilador usa para procurar arquivos de cabeçalho.
Caso se tenha pacotes opcionais (como o
GNU Readline) instalados em um local não padrão,
é necessário usar esta opção e, provavelmente, também a opção
correspondente --with-libraries.
Exemplo: --with-includes=/opt/gnu/include:/usr/sup/include.
--with-libraries=DIRETÓRIOS #
Onde DIRETÓRIOS é uma lista de
diretórios separados por dois pontos para procurar bibliotecas.
Provavelmente será necessário usar esta opção
(e a opção correspondente --with-includes)
havendo pacotes instalados em locais não padrão.
Exemplo: --with-libraries=/opt/gnu/lib:/usr/sup/lib.
--with-system-tzdata=DIRETÓRIO
#
O PostgreSQL inclui seu próprio
banco de dados de zona horária, necessário para operações de
data e hora.
Este banco de dados de zona horária é compatível com o banco
de dados de zona horária da
IANA
fornecido por muitos sistemas operacionais, como
FreeBSD,
Linux e
Solaris, portanto,
seria redundante instalá-lo novamente.
Quando esta opção é usada, o banco de dados de zona horária
fornecido pelo sistema em DIRETÓRIO
é usado em vez do incluído na distribuição de construção do
PostgreSQL.
DIRETÓRIO deve ser especificado
como um caminho absoluto.
/usr/share/zoneinfo é um diretório
provável em alguns sistemas operacionais.
Note que a rotina de instalação não detecta dados de zona
horária incompatíveis, ou incorretos.
Se for usada esta opção, é recomendado executar os testes de
regressão para verificar se os dados de zona horária apontados
funcionam corretamente com o PostgreSQL.
Esta opção destina-se, principalmente, a distribuidores de pacotes binários que conhecem bem o sistema operacional de destino. A principal vantagem de usar esta opção, é que o pacote PostgreSQL não precisará ser atualizado sempre que qualquer uma das muitas regras locais de horário de verão mudar. Outra vantagem é que o PostgreSQL pode ser compilado de forma mais direta se os arquivos de banco de dados de zona horária não precisarem ser compilados durante a instalação.
--with-extra-version=CADEIA_DE_CARACTERES #
Acrescenta CADEIA_DE_CARACTERES
ao número da versão do PostgreSQL.
Esta opção pode ser usada, por exemplo, para marcar binários
criados a partir de instantâneos Git não
liberados, ou contendo correções personalizadas, com uma
cadeia de caracteres de versão extra, como um identificador
git describe, ou um número de versão de
distribuição do pacote.
--disable-rpath #Não marca os executáveis do PostgreSQL indicando que devem procurar por bibliotecas compartilhadas no diretório de bibliotecas da instalação (veja --libdir. Na maioria das plataformas, esta marcação usa um caminho absoluto para o diretório da biblioteca, de modo que não será útil se a instalação for realocada posteriormente. Entretanto, deve ser fornecida alguma outra maneira para os executáveis localizarem as bibliotecas compartilhadas. Normalmente, esta opção requer a configuração do vinculador dinâmico do sistema operacional para procurar pelo diretório da biblioteca; veja Bibliotecas compartilhadas para obter mais detalhes.
É bastante comum, principalmente para compilações de teste, ajustar
o número da porta padrão com --with-pgport.
As demais opções dessa seção são recomendadas apenas para usuários
avançados.
--with-pgport=NÚMERO #
Define NÚMERO como o número da porta
para o servidor e para os clientes. O padrão é 5432.
O número da porta pode sempre ser alterada posteriormente,
mas se for especificado nesta opção, tanto o servidor quanto os
clientes terão o mesmo número compilado, o que pode ser muito
conveniente.
Normalmente, o único bom motivo para escolher um valor
diferente do padrão é quando se pretende executar vários
servidores PostgreSQL na mesma máquina.
--with-krb-srvnam=NOME #
O nome padrão do serviço principal do Kerberos
usado pela GSSAPI.
O padrão é postgres.
Normalmente, não há motivo para mudar este nome, a menos que
se esteja compilando para um ambiente
Windows; neste caso,
deve ser definido como POSTGRES em maiúsculo.
--with-segsize=TAMANHO_DO_SEGMENTO #
Define o tamanho do segmento, em gigabytes.
As tabelas grandes são divididas entre vários arquivos do sistema
operacional, cada um com tamanho igual ao tamanho do segmento,
evitando problemas com limites de tamanho de arquivo que
existem em muitas plataformas.
O tamanho de segmento padrão, 1 gigabyte, é seguro em todas as
plataformas onde há suporte.
Se o sistema operacional tem suporte para “largefile”
(o que a maioria tem, hoje em dia), pode ser usado um tamanho
de segmento maior.
Esta opção pode ser útil para reduzir o número de descritores de
arquivo consumidos ao trabalhar com tabelas muito grandes.
Mas deve-se tomar cuidado para não selecionar um valor maior
do que o com suporte pela plataforma e pelos sistemas de arquivos
que se pretende usar.
Outras ferramentas que se pode querer usar, como o
tar, também podem definir limites
no tamanho do arquivo utilizável.
Recomenda-se, embora não seja absolutamente obrigatório,
que este valor seja uma potência de 2.
Note que alterar este valor quebra a compatibilidade do
banco de dados no nível de arquivo, significando que não se
pode usar o pg_upgrade para atualizar para
uma compilação com tamanho de segmento diferente.
--with-blocksize=TAMANHO_DO_BLOCO #
Define o tamanho do bloco, em kilobytes.
Esta é a unidade de armazenamento e E/S dentro das tabelas.
O padrão, 8 kilobytes, é adequado para a maioria das situações;
mas outros valores podem ser úteis em casos especiais.
O valor deve ser uma potência de 2, entre 1 e 32 (kilobytes).
Note que alterar este valor quebra a compatibilidade do
banco de dados no nível de arquivo, significando que não se
pode usar o pg_upgrade para atualizar para
uma compilação com tamanho de bloco diferente.
--with-wal-blocksize=TAMANHO_DO_BLOCO #
Define o tamanho do bloco do WAL,
em kilobytes. Esta é a unidade de armazenamento e E/S no
registro do WAL.
O padrão, 8 kilobytes, é adequado para a maioria das situações;
mas outros valores podem ser úteis em casos especiais.
O valor deve ser uma potência de 2, entre 1 e 64 (kilobytes).
Note que alterar este valor quebra a compatibilidade do
banco de dados no nível de arquivo, significando que não se
pode usar o pg_upgrade para atualizar para
uma compilação com tamanho do bloco do WAL diferente.
A maioria das opções presentes nesta seção são de interesse apenas
para desenvolver ou depurar o PostgreSQL.
Estas opções não são recomendados para compilações de produção,
exceto para --enable-debug, podendo ser útil para
habilitar relatórios detalhados de bugs no caso de azar de se
encontrar um bug.
Nas plataformas que oferecem suporte a
DTrace,
também pode ser razoável usar --enable-dtrace
em produção.
Ao construir uma instalação que será usada para desenvolver código
interno do servidor, recomenda-se usar pelo menos as opções
--enable-debug e --enable-cassert.
--enable-debug #Constrói todos os programas e bibliotecas com símbolos de depuração, significando ser possível executar os programas em um depurador para analisar problemas. Esta opção aumenta consideravelmente o tamanho dos executáveis instalados e, em compiladores não GCC, geralmente também desativa a otimização do compilador, causando lentidão. Entretanto, ter os símbolos disponíveis é extremamente útil para lidar com quaisquer problemas que possam surgir. No momento, esta opção é recomendada para instalações de produção somente se for usado o GCC. Mas esta opção deve ser usada sempre que se fizer um trabalho de desenvolvimento, ou se estiver sendo executada uma versão beta.
--enable-cassert #Ativa verificações de asserção (assertion) no servidor, que testam muitas condições que “não podem ocorrer”. Isto é inestimável para fins de desenvolvimento de código, mas os testes podem diminuir muito a velocidade do servidor. Além disso, ter os testes ativados não melhora necessariamente a estabilidade do servidor! As verificações de asserção não são categorizadas por gravidade, portanto, o que pode ser um bug relativamente inofensivo ainda leva a reinicialização do servidor se acionar uma falha de asserção. Esta opção não é recomendada para uso em produção, mas deve ser ativada para trabalho de desenvolvimento, ou ao executar uma versão beta.
--enable-tap-tests #Ativa testes usando as ferramentas Perl TAP. Esta opção requer uma instalação do Perl e do módulo Perl IPC::Run. Veja Seção 31.4 para obter mais informações.
--enable-depend #
Ativa o rastreamento automático de dependências.
Com esta opção, os arquivos Makefile
são configurados para que todos os arquivos de objetos afetados
sejam reconstruídos quando qualquer arquivo de cabeçalho for
alterado.
Esta opção é útil quando se está fazendo um trabalho de
desenvolvimento, mas é apenas uma sobrecarga desperdiçada
quando o que se pretende é compilar apenas uma vez e instalar.
No momento, esta opção só funciona com o GCC.
--enable-coverage #Quando se está usando o GCC, todos os programas e bibliotecas são compilados com instrumentação de teste de cobertura de código. Quando executados, geram arquivos no diretório de compilação com métricas de cobertura de código. Veja Seção 31.5 para obter mais informações. Esta opção destina-se apenas ao uso com o GCC e durante trabalhos de desenvolvimento.
--enable-profiling #
Quando se está usando o GCC, todos os
programas e bibliotecas são compilados para poderem ser
analisados.
Na saída do processo servidor, será criado um subdiretório
com o arquivo gmon.out contendo os dados
do perfil.
Esta opção é para ser usada apenas com o GCC,
e ao se fazer trabalho de desenvolvimento.
--enable-dtrace #Constrói o PostgreSQL com suporte para a ferramenta de rastreamento dinâmico DTrace. Veja Rastreamento dinâmico para obter mais informações.
Para apontar para o programa dtrace,
pode ser definida a variável de ambiente DTRACE.
Geralmente é necessário definir esta variável, porque o
dtrace é normalmente instalado em
/usr/sbin, que pode não estar na
variável de ambiente PATH.
Podem ser especificadas opções extras de linha de comando
para o programa dtrace na variável
de ambiente DTRACEFLAGS.
No Solaris,
para incluir suporte ao DTrace em um binário de 64 bits, deve
ser especificado DTRACEFLAGS="-64".
Por exemplo, usando o compilador GCC:
./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ...
Usando o compilador da Sun:
./configure CC='/opt/SUNWspro/bin/cc -xtarget=native64' --enable-dtrace DTRACEFLAGS='-64' ...
--enable-injection-points #Constrói o PostgreSQL com suporte para pontos de injeção no servidor. Os pontos de injeção permitem executar código definido pelo usuário a partir do servidor em caminhos de código predefinidos. Isto ajuda nos testes e na investigação de cenários de concorrência de forma controlada. Esta opção está desativada por padrão. Veja Pontos de injeção para obter mais informações. Esta opção destina-se a ser utilizada apenas por desenvolvedores para fins de teste.
--with-segsize-blocks=SEGSIZE_BLOCKS #
Especifica o tamanho do segmento da relação em blocos.
Se a opção --with-segsize e esta opção forem
especificadas, esta opção irá prevalecer.
Esta opção destina-se apenas a desenvolvedores, para testar
código relacionado ao segmento.
Além das opções comuns de linha de comando descritas acima, o
configure responde a diversas variáveis de
ambiente.
Podem ser especificadas variáveis de ambiente na linha de comando
do configure. Por exemplo:
./configure CC=/opt/bin/gcc CFLAGS='-O2 -pipe'
Neste uso, uma variável de ambiente é um pouco diferente de uma opção de linha de comando. Estas variáveis também podem ser definidas de antemão:
export CC=/opt/bin/gccexport CFLAGS='-O2 -pipe'./configure
Este uso pode ser conveniente, porque os scripts de configuração de muitos programas respondem a estas variáveis de maneira semelhante.
As variáveis de ambiente mais usadas são CC e
CFLAGS.
Se preferir um compilador C diferente daquele
escolhido por configure, pode ser definida a
variável CC apontando para o programa de sua escolha.
Por padrão, o configure escolhe o
gcc, se estiver disponível, senão o padrão da
plataforma (geralmente cc).
Da mesma forma, podem ser substituídos os sinalizadores padrão do
compilador, se for necessário, usando a variável CFLAGS.
A seguir encontra-se uma lista de variáveis importantes que podem ser definidas dessa maneira:
BISON #programa Bison
CC #compilador C
CFLAGS #opções para passar para o compilador C
CLANG #
caminho para o programa clang usado para
processar o código-fonte para
inlining ao compilar com --with-llvm
CPP #pré-processador C
CPPFLAGS #opções para passar para o pré-processador C
CXX #compilador C++
CXXFLAGS #opções para passar para o compilador C++
DTRACE #
localização do programa dtrace
DTRACEFLAGS #
opções para passar para o programa dtrace
FLEX #programa Flex
LDFLAGS #opções para usar ao vincular (link) executáveis e bibliotecas compartilhadas
LDFLAGS_EX #opções adicionais válidas apenas ao vincular (link) executáveis
LDFLAGS_SL #opções adicionais válidas apenas ao vincular (link) bibliotecas compartilhadas
LLVM_CONFIG #
programa llvm-config usado para localizar
a instalação do LLVM
MSGFMT #
programa msgfmt para suporte ao idioma nativo
PERL #
programa interpretador Perl,
usado para determinar as dependências para construir o
PL/Perl.
O padrão é perl.
PYTHON #
programa interpretador Python.
Será usado para determinar as dependências para a construção
do PL/Python.
Caso esta opção não seja definida, as seguintes opções serão
verificadas nesta ordem:
python3 python.
TCLSH #
Programa interpretador Tcl,
usado para determinar as dependências para construir o
PL/Tcl.
Se esta variável não estiver definida, os itens a seguir serão
testados nesta ordem: tclsh tcl tclsh8.6 tclsh86
tclsh8.5 tclsh85 tclsh8.4 tclsh84.
XML2_CONFIG #
programa xml2-config usado para localizar a
instalação da biblioteca libxml2.
Às vezes, adicionar sinalizadores do compilador ao conjunto que
foi escolhido pelo configure após o fato
(after-the-fact), pode ser útil.
Um exemplo importante diz respeito à opção -Werror
do gcc, que não pode ser incluída na
varável CFLAGS passada para o
configure, porque quebraria muitos dos testes
internos do configure.
Para adicionar estes sinalizadores, os mesmos devem ser incluídos
na variável de ambiente COPT enquanto se executa o
make.
O conteúdo de COPT é adicionado às opções
CFLAGS, CXXFLAGS e
LDFLAGS definidas pelo configure.
Por exemplo, pode ser feito
make COPT='-Werror'
ou
export COPT='-Werror'make
Quando se está usando o GCC, é melhor compilar
com um nível de otimização de pelo menos -O1,
porque não usar nenhuma otimização (-O0) desativa
alguns avisos importantes do compilador
(como o uso de variáveis não inicializadas).
Entretanto, níveis de otimização diferentes de zero podem complicar
a depuração, porque percorrer o código compilado geralmente não
corresponderá um a um com as linhas do código-fonte.
Se ficar confuso ao tentar depurar o código otimizado, deve-se
recompilar os arquivos específicos de interesse com -O0.
Uma maneira fácil de fazer isto é passando uma opção para o
make:
make PROFILE=-O0 file.o.
As variáveis de ambiente COPT e
PROFILE são tratadas de forma idêntica pelos
arquivos Makefile do
PostgreSQL.
Qual usar é uma questão de preferência, mas um hábito comum entre
os desenvolvedores é definir PROFILE para ajustes
momentâneos, enquanto COPT pode ser mantida
definida o tempo todo.