A versão do PostgreSQL que é disponibilizada para o SuSE Linux Enterprise Server 10 (SLES-10) é a 8.1. Se você quiser utilizar uma versão mais nova terá que baixar os fontes e instalar manualmente. Esse procedimento também é recomendado se você quiser um controle preciso do locale e do encoding de seu database cluster.
O procedimento que eu uso também inclui atualizar a versão da Tcl do SLES, principalmente porque a Tcl padrão do SLES não é thread-safe, mas se você não precisa dessa linguagem, esse passo pode ser pulado. O processo é o seguinte:
Instale os RPMs oficiais do PostgreSQL para o SLES
Pode parecer estranho fazer isso, já que esse iremos instalar uma versão mais nova manualmente. Mas instalar os RPMs oficiais (postgresql, postgresql-server, postgresql-devel, etc.) adianta uma série de tarefas, como criar o usuário e o grupo postgres, e os scripts de inicialização automática (que mais adiante serão modificados).
Instalação da Tcl:
Faça o download da versão mais nova da Tcl em www.tcl.tk (atualmente é a versão 8.5.6), configure e instale com os comandos:
./configure --enable-threads --prefix=/usr/local/lib/tcl8.5.6
make
make install
Instalação do PostgreSQL:
Faça o download da versão mais nova do PostgreSQL em www.postgresql.org (atualmente é a versão 8.3.7), configure e instale com os comandos:
./configure --prefix=/usr/local/pgsql --enable-nls --with-perl \
--with-python --with-tcl --with-tclconfig=/usr/local/lib/tcl8.5.6/lib \
--with-openssl --with-ldap --enable-thread-safety
make
make check
make install
Esses comandos irão instalar o PostgreSQL em /usr/local/pgsql. Agora você deve acertar o owner:group, as permissões desse diretório, e criar uma senha para o usuário postgres:
chown postgres:postgres /usr/local/pgsql -R
chmod 750 /usr/local/pgsl
passwd postgres
Ajuste o diretório /usr/local/pgsql como o HOME do usuários postgres, editando seu arquivo /etc/passwd para ficar parecido com:
postgres:x:26:26:PostgreSQL Server:/usr/local/pgsql:/bin/bash
Crie um arquivo “.bashrc” no diretório HOME do usuário postgres para alterar o PATH e a LD_LIBRARY_PATH:
export PATH=/usr/local/pgsql/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/pgsql/lib:/usr/local/lib/tcl8.5.6/lib:$LD_LIBRARY_PATH
Criação do database cluster com locale e encoding específicos:
Como usuário postgres, crie dois diretórios em seu HOME e um arquivo (server.log):
mkdir data
chmod 700 data
mkdir log
touch log/server.log
Agora crie o database cluster com locale = C e enconding padrão = UTF-8:
initdb --locale=C --encoding=utf8 -D /usr/local/pgsql/data
Com essas configurações você está dizendo que o encoding padrão é UTF-8 (opção –encoding=utf8), mas que você poderá criar bancos de dados com quaisquer outros encoding suportados pelo PostgreSQL (opção –locale=C). Teste iniciando o PostgreSQL e verificando seu status:
pg_ctl start -s -w -p /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data -l /usr/local/pgsql/log/server.log
pg_ctl status -D /usr/local/pgsql/data
Ajuste de /etc/init.d/postgresql:
A última coisa a ser feita é ajustar o arquivo /etc/init.d/postgresql apontando corretamente as variáveis para os novos diretórios. Um modelo já ajustado pode ser baixado aqui. Para que o PostgreSQL inicie automaticamente durante o boot, use o YaST e ajuste os runlevels.