Como corrigir erro de LOCALE no Linux Debian/Ubuntu

O que ando aprendendo nesta caminhada sobre a Terra

Como corrigir erro de LOCALE no Linux Debian/Ubuntu

Hoje precisei olhar os logs de um servidor FTP que roda sob o pure-ftp e percebi que os horários estavam todos em UTC .
Como eu precisava enviar parte dos logs a um terceiro que faz uso dele e não está familiarizado com sistemas, poderia acabar ocorrendo algum mal entendido. Resolvi então que deveria manter os logs de todas as aplicações no fuso horário brasileiro.
De acordo com a documentação do pure-ftp ele utiliza as variáveis de ambiente para determinar qual será o horário incluído nos logs e a única configuração é a se deve utilizar GMT ou não e por padrão ele usa NO.

NOTA: Esse problema também acontece para diversos programas perl.

Então o passo correto é verificar se o locale do servidor (ou da sessão que usarei para iniciar o serviço do FTP) está em pt_BR. Não estava.

Usei a receita básica para modificar o locale. (Segue abaixo se quiser fazer o mesmo).

  • Adicionar as entrada do idioma nos arquivos de locale do debian (deve ser o mesmo para Ubuntu).
# echo "pt_BR ISO-8859-1" >> /var/lib/locales/supported.d/local

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

  • Abrir o arquivo de definições de ambiente /etc/environment e /etc/default/locale e incluir as entradas abaixo
LANG="pt_BR"
LANGUAGE="pt_BR:pt:en"

  • E por último executar os comandos
# locale-gen
# dpkg-reconfigure locales

Tudo correu Ok. Quando executei locale ficou assim:

# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
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=

e ao tentar reiniciar o serviço de FTP

# service pure-ftpd restart
Restarting FTP XXXXXX: perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
 LANGUAGE = (unset),
 LC_ALL = (unset),
 LANG = "pt_BR"
 are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Running: /usr/sbin/pure-ftpd -l puredb:/etc/pure-ftpd/db/pureftpd.pdb -O clf:/var/log/pure-ftpd/transfer.log -A -E -u 1000 -B

Depois de várias tentativas de corrigir, consegui fazendo o seguinte:

Executei os comandos

# export LANGUAGE=pt_BR.UTF-8

# export LANG=pt_BR.UTF-8

# export LC_ALL=pt_BR.UTF-8

# locale-gen pt_BR.UTF-8
Generating locales...
 pt_BR.UTF-8... up-to-date
Generation complete.
# dpkg-reconfigure locales
 en_US.ISO-8859-1... done
 en_US.UTF-8... done
 pt_BR.UTF-8... up-to-date
Generation complete.

Após isso, o serviço FTP iniciou normalmente conforme as informações abaixo.

# service pure-ftpd restart
Restarting FTP XXXXXXX: Running: /usr/sbin/pure-ftpd -l puredb:/etc/pure-ftpd/db/pureftpd.pdb -O clf:/var/log/pure-ftpd/transfer.log -A -E -u 1000 -B



 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.