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).
# Eco "pt_BR ISO-8859-1" >> /var/lib/locales/supported.d/local # Eco "pt_BR pt_BR. ISO-8859-1" >> /etc/locale.alias
- Abrir o arquivo de definições de ambiente /etc/meio ambiente e /localidade/etc/padrão e incluir como entradas abaixo
LANG ="pt_BR" LÍNGUA ="pt_BR:pt:pt-br"
- E por último executar os comandos
# locale-gen # dpkg-reconfigure locales
Correu tudo Okey. Quando executei locale ficou assim:
# localidade: Não é possível definir LC_CTYPE para localidade padrão: Nenhuma localidade de arquivo ou diretório: Não é possível definir LC_MESSAGES para localidade padrão: Nenhuma localidade de arquivo ou diretório: Não é possível definir LC_ALL para localidade padrão: Nenhum arquivo ou diretório LANG=pt_BR LANGUAGE=pt_BR:pt:pt 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
# serviço puro-ftpd reiniciar Reiniciando FTP XXXXXX: perl: aviso: Localidade de configuração falhada. perl: aviso: Por favor, verifique suas configurações de localidade: LÍNGUA = (unset), LC_ALL = (unset), LANG = "pt_BR" são suportados e instalado em seu sistema. perl: aviso: Voltando para a localidade padrão ("C"). Em execução: /usr/sbin/pure-ftpd - l puredb:/etc/pure-ftpd/DB/pureftpd.pdb - O clf:/var/log/pure-ftpd/Transfer.log - um -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 Gerando localidades... pt_BR. UTF-8... Geração atualizada completa. # dpkg-reconfigure localidades en_US. ISO-8859-1... feito en_US. UTF-8... feito pt_BR. UTF-8... Geração atualizada completa.
Após isso, o serviço FTP iniciou normalmente conforme as informações abaixo.
# serviço puro-ftpd reiniciar reiniciando FTP XXXXXXX: Em execução: /usr/sbin/pure-ftpd - l puredb:/etc/pure-ftpd/DB/pureftpd.pdb - O clf:/var/log/pure-ftpd/Transfer.log - um -E -u 1000 -B