17.3. Construção e instalação com Autoconf e Make #

17.3.1. Versão curta
17.3.2. Procedimento de instalação
17.3.3. Opções do configure
17.3.4. Variáveis de ambiente do configure

17.3.1. Versão curta #

./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.

17.3.2. Procedimento de instalação #

  1. 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_dir
    cd 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.

  2. Construção

    Para iniciar a construção, deve-se executar um desses comandos:

    make
    make 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.

  3. 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.

  4. Instalação dos arquivos

    Nota

    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 install
    make -C src/include install
    make -C src/interfaces install
    make -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.

17.3.3. Opções do configure #

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.

17.3.3.1. Locais de instalação #

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 é EXEC-PREFIXO/bin, que normalmente significa /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 é DATAROOTDIR. Note que não tem relação com onde os arquivos de banco de dados serão colocados.

--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 manx. O padrão é 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.

Nota

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.

17.3.3.2. Funcionalidades do PostgreSQL #

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.

17.3.3.3. Anti-funcionalidades #

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.

17.3.3.4. Detalhes do processo de construção #

--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.

17.3.3.5. Diversos #

É 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.

17.3.3.6. Opções do desenvolvedor #

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.

17.3.4. Variáveis de ambiente do configure #

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/gcc
export 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

Nota

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.