Você está na página 1de 3

NTRODUÇÃO

Não há uma data fixa pré-estabelecida para o início e término


do Horário de Verão no Brasil. A cada ano essa data é
calculada de acordo com o pôr do sol. Em 2004 o horário de
verão vai começou oficialmente no dia 02 de Novembro e
terminará no dia 20 de Fevereiro de 2005.

O problema é que nosso sistema não vai adivinhar isso e


provavelmente utilizar a data do ano passado (19 de Outubro
a 15 de Fevereiro), portanto da data em que foi escrito esse
artigo, muitos sistemas já deverão estar com a data errada.

Felizmente é fácil se definir isso no Linux. ;)

O comando a ser utilizado é o 'zic' - ZoneInfo Compiler. Ele


vai gerar, a partir de um arquivo de dados, o arquivo binário
que o Linux utiliza para saber as datas exatas. Esse arquivo
se localiza normalmente em:

/usr/share/zoneinfo/America/Sao_Paulo

Agora nesse diretório, confira se existe um arquivo com


mesmo nome, com extensão .zic (Sao_Paulo.zic). Caso exista,
basta editá-lo conforme as informações abaixo. Se não
existir, tudo bem, basta criar o arquivo em um lugar qualquer
como /tmp com seu editor de texto favorito, e adicionar as
seguintes linhas:

Rule BrazilSP 2004 only - Nov


02 0:00 1:00 S
Rule BrazilSP 2005 only - Feb
20 0:00 0 -

#
Zone NAME GMTOFF RULES/SAVE FORMAT [UN
TIL]
Zone America/Sao_Paulo -3:00 BrazilSP BRT

#BRT = No Saving Time


#BRST = Saving Time – Horario de Verão

Salve o arquivo como Sao_Paulo.zic e execute o seguinte


comando como root:

# zic Sao_Paulo.zic

Feito isso, o
arquivo: /usr/share/zoneinfo/America/Sao_Paulo vai ser
atualizado com as novas definições de data.

Como último passo, o Linux utiliza o


arquivo /etc/localtime para saber qual zona utilizar. Se seu
arquivo /etc/localtime for um link simbólico(*1) para
/usr/share/zoneinfo/America/Sao_Paulo já está tudo certo.

Caso não seja um link, basta copiar o que você acabou de


alterar no lugar do atual. Como root:

# cp /etc/localtime /etc/localtime.backup
# cp /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

E estará pronto! Basta conferir utilizando o comando date:

$ date
Sun Nov 7 23:06:52 BRT 2004

Note a zona "BRT" em vez de "BRST" (*2)

Artigo escrito por: Wagner Amaral em 21/10/2004 - 12:41

CONSIDERAÇÕES FINAIS

1. Se sua partição /usr não for a mesma do root "/", o


arquivo /etc/localtime não deverá ser um link, visto
que /usr será montada depois do kernel estar rodando,
então o arquivo não será encontrado. Se seu /usr for
montado, simplesmente copie o arquivo para
/etc/localtime e estará resolvido.

2. Para os curiosos:
BRT == BRazilian Time (horário normal)
BRST == BRazilian Saving Time (saving == econômico ==
horário de verão)
ntpdate -u 200.20.186.75

Você também pode gostar