Essas linhas me ajudaram:
echo 'LANGUAGE="en_US.UTF-8"' >> /etc/default/locale
echo 'LC_ALL="en_US.UTF-8"' >> /etc/default/locale
Em uma nova cópia do servidor Ubuntu 11.04, estou tentando instalar o servidor PostgreSQL por apt-get install postgresql
. Mas no final do log de instalação eu vi:
Error: could not create default cluster. Please create it manually with
pg_createcluster 8.4 main --start
Quando eu executei este comando, vi esta mensagem:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US:en",
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Error: The locale requested by the environment is invalid.
E nenhum servidor PostgreSQL iniciado: (
O que eu preciso fazer para ficar feliz com isso?
A resposta aceita não me ajudou ; se houver outros como eu, por favor leia abaixo.
Eu rastreei o problema para pg_upgradecluster
explicitamente desativando LC_ALL
. Isso fez o Perl falhar do jeito que eu estava jogando com as outras variáveis de ambiente.
Então, o que fiz foi simplesmente comentar a linha 352 em /usr/bin/pg_upgradecluster
:
#delete $ENV{'LC_ALL'};
Isso funcionou. É claro que isso só funcionará se você for um Joe comum com en_US.UTF-8 em todos os clusters e não usar nenhuma codificação que precise preservar.
As variáveis de ambiente atuais também têm efeito. Use o comando
locale
para ver o que é visto pelo Postgres e atualizar usando as expressões export
, por exemplo:
export LANGUAGE="en_US.UTF-8"
Tags postgresql ubuntu ubuntu-11.04