iG
iBest BrTurbo
09/01/2009 - 04:25

Corrigir idioma debian ubuntu e derivados

Se  Se você está como estive tempos atrás: irado, revolto, sem esclarecimento de como as coisas funcionam em um excelente (talvez o melhor) SGDB – Postgres e está sofrendo com os males:

1 – Encoding do Sistema Operacional Linux Debian/Ubuntu ferrados (sim, você brasileiro e a droga do locale te mostrando coisas de americanos, pode uma coisa destas?)

2 – Mudar o Encoding do Postgres.

Antemão você precisa saber que o seu sistema foi configurado por algum bestão, isto mesmo, o cara instalou o sistema americano sendo brasileiro.

Ter um Postgres que não aceita nem a pau um encoding diferente (padrão dessa tosquisse sempre é UTF8).

Todas as configurações e comandos foram executados como usuário root.

Existem vários arquivos que fazem a configuração do locale, precisamos configurar todos eles e depois executar alguns comandos, vamos lá!

Edite o arquivo /etc/environment e altere as variáveis LANG e LANGUAGE de forma que fiquem iguais ao abaixo, se não existir, acrescente:

LANG=”pt_BR”
LANGUAGE=”pt_BR:pt:en”

O arquivo /etc/default/locale também deve ser editado e seu conteúdo deve ser:

LANG=”pt_BR”
LANGUAGE=”pt_BR:pt:en”

Execute o seguinte comando:

# echo “pt_BR pt_BR.ISO-8859-1″ >> /etc/locale.alias

Este arquivo grava os aliases para os locales, isso é para facilitar as configurações.

No diretório /var/lib/locales/supported.d alguns arquivos que configuram os locales que serão gerados, por padrão existem três arquivos “en”, “pt” e “local”. Para nosso caso, pode apagar o “en” e o “pt” deixando apenas o “local”.

Feito isso, edite o arquivo local e deixe seu conteúdo como abaixo:

pt_BR.ISO-8859-1 ISO-8859-1
en_US.ISO-8859-1 ISO-8859-1

Muito bem, configuramos os arquivos necessários para a geração dos locales, agora vamos reconfigurar.

Os comandos abaixo fazem o serviço:

# localedef pt_BR -i pt_BR -f ISO-8859-1
# localedef pt_BR.ISO-8859-1 -i pt_BR -f ISO-8859-1
# localedef pt_BR.ISO8859-1 -i pt_BR -f ISO-8859-1
# dpkg-reconfigure locales
# locale-gen -purge
# locale-gen

Acredito que apenas um desses três comandos fariam o serviço, mas como eu executei os três quando estava configurando o sistema, não vou tirar algum deles, é melhor executar a mais e funcionar do que executar a menos e não funcionar.

Reinicie o sistema e execute o comando abaixo para termos certeza que está tudo conforme o desejado.

# locale
LANG=pt_BR
LANGUAGE=pt_BR:pt:en
LC_CTYPE=”pt_BR”
LC_NUMERIC=”pt_BR”
LC_TIME=”pt_BR”
LC_COLLATE=”pt_BR”
LC_MONETARY=”pt_BR”
LC_MESSAGES=”pt_BR”
LC_PAPER=”pt_BR”
LC_NAME=”pt_BR”
LC_ADDRESS=”pt_BR”
LC_TELEPHONE=”pt_BR”
LC_MEASUREMENT=”pt_BR”
LC_IDENTIFICATION=”pt_BR”
LC_ALL=

# locale -a
C
en_US.iso88591
POSIX
pt_BR.iso88591

Agora sim, está tudo como deveria estar. Nosso sistema já está usando ISO-8859-1.

(ISO-8859-1 é LATIN1)

Corrigindo o Encoding do Postgres

Bem, esta é a hora do quebra-quebra, vamos lá:

1 – Crie uma nova instância (cluster) de gestão do Postgres:

$ sudo pg_createcluster -e LATIN1 -d /caminho/do/novoSGDB 8.3
cluster-8.3-2

Feito isto a porta que o postgres vai operar neste novo SGDB será 5433.

Criando super-user para administrar o Postgres:

# su – postgres
$ createuser -P

Digite o nome da role a ser adicionada: pglinux
Digite a senha para a nova role:
Digite-a novamente:
A nova role poderá criar um super-usuário? (s/n) s
CREATE ROLE

Quer ver os users?

$ psql
postgres=# \du
Lista de roles
Nome da role | Super-usuário | Cria role | Cria BD | Conexões | Membro de
———+———-+——-+——+——-+——-
pglinux       | sim                    | sim            | sim         | ilimitado    |
postgres         | sim                    | sim            | sim         | ilimitado    |
(2 registros)

postgres=# \q

Informações complementares:

Fonte deste post: Corrigindo Maldito encoding do Postgres para poder usar banco de dados latin1 ou outro e mudar o encoding do Sistema operacional Ubuntu ou Debian

Autor: brhunodani@ig.com.br - Categoria(s): Sem categoria Tags:


Deixe um comentário:

Os campos com * são de preenchimento obrigatório






Voltar ao topo