miércoles, 19 de septiembre de 2007
Procedimiento de Compilación e Instalación de Zona de Tiempo para linux para adaptar el cambio del nuevo Huso Horario de Venezuela a GMT-4:30 Debian
"Partiendo del tuyo hice uno para Debian, te lo envío a continuación. Hay ciertos cambios al final."
Procedimiento para Debian para cambio de horario
================================================
1.- dpkg -l egrep tzdata
2.- aptitude install tzdata
3.- Descargar glibc-2.3.6.ds1.tar.bz2 (no especificó el link pero no es dificil encontrarlo)
4.- cd/usr/local/src/ (directorio de descarga de la libreria)
5.- Ejecutar: tar xvfj glibc-2.3.6.ds1.tar.bz2
6.- cd glibc-2.3.6/timezone/
7.- cp southamerica /tmp/
8.- cd /tmp/
9.- vi southamerica (modifica el archivo southamerica agregandole la información adicoinal para convertirlo a GMT-4:30)
10.- /usr/sbin/zic -d /tmp /tmp/southamerica
11.- cp /usr/share/zoneinfo/America/Caracas /root/
12.- mv /root/Caracas Caracas-respaldo-19.09.2007
13.- /usr/sbin/zic southamerica
14.- Ejecutar tzconfig - Seleccionar América y luego escribir Caracas
15.- Comprobar con: zdump -v /etc/localtime
Espero que también les sirva.
Cambio de Zona de tiempo para nuevo Huso Horario de Venezuela Windows
Nota: Este este procedimiento, fue probado en una maquina con Windows XP SP2 (otros amigos ya lo probaron en Windows 2K y 2K3.
1.- Ejecutar el archivo tzedit.exe que viene en el archivo tzedit.zip. se puede obtener en el link indicado al final de este documento.
Time Zone Name: (GMT-04:30) Caracas, Venezuela
Abbreviation: SA Western NewStandard Time
Offset from GMT: -4:30
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Time
Zones\
Cambiar la zona de tiempo en la maquina:
1.- Haga doble clic en el reloj ubicado en la parte derecha de la barra de tareas y una vez que abra selecciones la pestaña Zona horaria o Time Zone dependiendo del idioma del Sistema Operativo.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
Link para descargar archivo tzediz.zip.
http://www.dynawell.com/reskit/microsoft/win2000/tzedit.zip
Compilación e Instalación de Zona de Tiempo para linux para adaptar el cambio del nuevo Huso Horario de Venezuela a GMT-4:30 Fedora - Red Hat
Modificar y compilar una zona de tiempo:
Fedora y muchas otras distribuciones de Linux y BSD incluyen archivos de zonas de tiempo en el directorio /usr/share/zoneinfo, el cual es parte del paquete libc6. En Fedora Core 6 de la maquina instalada donde se realizó y probó este procedimiento se encontraba instalada la librería glibc versión 2.5-3 (glibc-2.5-3).
1.- Validar que esté instalado el paquete de utilidades y definiciones de zona de tiempo:
$rpm -qa grep tzdata
2.- Si no se encuentra instalado proceda a bajarlo. Puede usar yum en el caso de Fedora
$ yum install tzdata*
3.- Descargar las fuentes de la libreria glibc-2.5-3 de uno de los mirror de fedora (http://mirror.aarnet.edu.au/pub/fedora/linux/core/6/source/SRPMS/glibc-2.5-3.src.rpm). Por defecto no vienen instaladas.
4.- Validar si está creado el directorio /usr/src/redhat/SOURCES/ de lo contrario proceder a crearlo.
$ mkdir /usr/src/redhat/SOURCES/
5.- Instalar las fuentes de la librería:
$ rpm -Uvh glibc-2.5-3.src.rpm
6.- Esta se quedará instalada en el directorio /usr/src/redhat/SOURCES/ y en el encontrará archivo glibc-2.5-20061008T1257.tar.bz2
7.- Ingresar al directorio /usr/src/redhat/SOURCES/
$ cd sr/src/redhat/SOURCES/
8.- Descomprimir el archivo glibc-2.5-20061008T1257.tar.bz2:
$tar xvfj glibc-2.5-20061008T1257.tar.bz2
9.- Ingresar al directorio timezone dentro del directorio glibc-2.5-20061008T1257 creado al descomprimirse
$cd glibc-2.5-20061008T1257/timezone
10.- Copiar el archivo "southamerica" a al directorio /tmp, en donde se realizarán los cambios al archivo y se compilará.
$cp southamerica /tmp/
11.-Ingresar al directorio /tmp
$cd /tmp
12.- Editar el archivo "southamerica"
$ vi southamerica
13.- Buscar a la etiqueta #Venezuela y debajo de ella cambiar la línea:
-4:00 - VET
Por estas líneas:
-4:00 - VET 2007 Sep 22
-4:30 - VET
14.- La definición de la zona America/Caracas deberá quedar así:
# Venezuela
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Caracas -4:27:44 - LMT 1890
-4:27:40 - CMT 1912 Feb 12 # Caracas Mean Time?
-4:30 - VET 1965 #
-4:00 - VET 2007 Sep 23
-4:30 - VET
15.- Compilar el archivo de zonas para Suramérica para ello ejecutar el comando:
$/usr/sbin/zic -d /tmp /tmp/southamerica
16.- Esto generará los siguientes directorios dentro de /tmp
America/ Atlantic/ Pacific/
17.- Ejecutar el siguiente comando para ver la definición de la zona para Caracas.
$zdump -v /tmp/America/Caracas
18.- Aparecerán todas las definiciones de horario que se han tenido para Venezuela a partir de 1901 y la que se ha modificado siguiendo este procedimiento:
/tmp/America/Caracas Fri Dec 13 20:45:52 1901 UTC = Fri Dec 13 16:18:12 1901 VET isdst=0 gmtoff=-16060
/tmp/America/Caracas Sat Dec 14 20:45:52 1901 UTC = Sat Dec 14 16:18:12 1901 VET isdst=0 gmtoff=-16060
/tmp/America/Caracas Mon Feb 12 04:27:39 1912 UTC = Sun Feb 11 23:59:59 1912 VET isdst=0 gmtoff=-16060
/tmp/America/Caracas Mon Feb 12 04:27:40 1912 UTC = Sun Feb 11 23:57:40 1912 VET isdst=0 gmtoff=-16200
/tmp/America/Caracas Fri Jan 1 04:29:59 1965 UTC = Thu Dec 31 23:59:59 1964 VET isdst=0 gmtoff=-16200
/tmp/America/Caracas Fri Jan 1 04:30:00 1965 UTC = Fri Jan 1 00:30:00 1965 VET isdst=0 gmtoff=-14400
/tmp/America/Caracas Sun Sep 23 03:59:59 2007 UTC = Sat Sep 22 23:59:59 2007 VET isdst=0 gmtoff=-14400
/tmp/America/Caracas Sun Sep 23 04:00:00 2007 UTC = Sat Sep 22 23:30:00 2007 VET isdst=0 gmtoff=-16200
/tmp/America/Caracas Mon Jan 18 03:14:07 2038 UTC = Sun Jan 17 22:44:07 2038 VET isdst=0 gmtoff=-16200
/tmp/America/Caracas Tue Jan 19 03:14:07 2038 UTC = Mon Jan 18 22:44:07 2038 VET isdst=0 gmtoff=-16200
19.- Encontrará dos definiciones para el año 2007.
/tmp/America/Caracas Sun Sep 23 03:59:59 2007 UTC = Sat Sep 22 23:59:59 2007 VET isdst=0 gmtoff=-14400
/tmp/America/Caracas Sun Sep 23 04:00:00 2007 UTC = Sat Sep 22 23:30:00 2007 VET isdst=0 gmtoff=-16200
En ellas se puede apreciar lo siguiente:
Sat Sep 22 23:59:59 2007 VET isdst=0 gmtoff=-14400, lo cual significa que se usará GMT-4 hasta el 22/09/2007 a las 23:59:59
Sat Sep 22 23:30:00 2007 VET isdst=0 gmtoff=-16200, lo cual significa que luego cambiará a GMT-4:30 y moverá la hora a las 23:30:00 transcurrido un segundo después.
Instalación de Nueva Zona ya compilada:
1.- Validar que la definición de zona de tiempo previamente configurada sea Venezuela/Caracas (VET) en /etc/localtime.
$zdump -v /etc/localtime
/etc/localtime Fri Dec 13 20:45:52 1901 UTC = Fri Dec 13 16:18:12 1901 VET isdst=0 gmtoff=-16060
/etc/localtime Sat Dec 14 20:45:52 1901 UTC = Sat Dec 14 16:18:12 1901 VET isdst=0 gmtoff=-16060
/etc/localtime Mon Feb 12 04:27:39 1912 UTC = Sun Feb 11 23:59:59 1912 VET isdst=0 gmtoff=-16060
/etc/localtime Mon Feb 12 04:27:40 1912 UTC = Sun Feb 11 23:57:40 1912 VET isdst=0 gmtoff=-16200
/etc/localtime Fri Jan 1 04:29:59 1965 UTC = Thu Dec 31 23:59:59 1964 VET isdst=0 gmtoff=-16200
/etc/localtime Fri Jan 1 04:30:00 1965 UTC = Fri Jan 1 00:30:00 1965 VET isdst=0 gmtoff=-14400
/etc/localtime Mon Jan 18 03:14:07 2038 UTC = Sun Jan 17 23:14:07 2038 VET isdst=0 gmtoff=-14400
/etc/localtime Tue Jan 19 03:14:07 2038 UTC = Mon Jan 18 23:14:07 2038 VET isdst=0 gmtoff=-14400
2.- Realizar un respaldo del archivo de zona de tiempo “Caracas” previamente existente, ubicado en el directorio /usr/share/zoneinfo/America a /tmp.
3.- Copiar el nuevo archivo de zona de tiempo “Caracas” en el directorio /usr/share/zoneinfo/America
$cp /tmp//America/Caracas /usr/share/zoneinfo/America/
4.- Actualizar la zona de tiempo actual que se ubica encuentra configurada en /etc/localtime, en este caso "Venezuela/Caracas" con el siguiente comando:
$tzdata-update Venezuela/Caracas
5.- Validar que la nueva definición esté instalada después de aplicar la actualización de la zona de tiempo.
$zdump -v /etc/localtime
/etc/localtime Fri Dec 13 20:45:52 1901 UTC = Fri Dec 13 16:18:12 1901 VET isdst=0 gmtoff=-16060
/etc/localtime Sat Dec 14 20:45:52 1901 UTC = Sat Dec 14 16:18:12 1901 VET isdst=0 gmtoff=-16060
/etc/localtime Mon Feb 12 04:27:39 1912 UTC = Sun Feb 11 23:59:59 1912 VET isdst=0 gmtoff=-16060
/etc/localtime Mon Feb 12 04:27:40 1912 UTC = Sun Feb 11 23:57:40 1912 VET isdst=0 gmtoff=-16200
/etc/localtime Fri Jan 1 04:29:59 1965 UTC = Thu Dec 31 23:59:59 1964 VET isdst=0 gmtoff=-16200
/etc/localtime Fri Jan 1 04:30:00 1965 UTC = Fri Jan 1 00:30:00 1965 VET isdst=0 gmtoff=-14400
/etc/localtime Sun Sep 23 03:59:59 2007 UTC = Sat Sep 22 23:59:59 2007 VET isdst=0 gmtoff=-14400
/etc/localtime Sun Sep 23 04:00:00 2007 UTC = Sat Sep 22 23:30:00 2007 VET isdst=0 gmtoff=-16200
/etc/localtime Mon Jan 18 03:14:07 2038 UTC = Sun Jan 17 22:44:07 2038 VET isdst=0 gmtoff=-16200
/etc/localtime Tue Jan 19 03:14:07 2038 UTC = Mon Jan 18 22:44:07 2038 VET isdst=0 gmtoff=-16200
6.- Finalmente, sólo quedará esperar a que llegué el día y la hora para que la maquina hará el resto del trabajo en función de la definición.
Nota: No deberá preocuparse por cambiar la hora de la maquina.
Distribución del archivo de zona de tiempo para Venezuela/Caracas:
1.- Si quiere aplicar el archivo de tiempo modificado para Venezuela/Caracas a otras maquinas con distribuciones de Linux o BSD redistribuir no será necesario que tenga que compilarlo nuevamente en cada una de ellas, sólo tiene que copiarlo a la maquina destino y seguir los pasos
Pruebas a realizar antes de que llegue el momento de realizar el cambio de horario oficial.
Si quiere realizar una prueba de concepto y validación en una maquina que no se encuentre en un ambiente de producción puede adelantar el cambio y crear un archivo de zona de tiempo con una fecha y hora diferente a la establecida compilarlo e instalarlo según lo indicado en las secciones anteriores. Para ello debe hacer lo siguiente:
1.- En el punto 13 de la sección “Modificar y compilar una zona de tiempo”. Buscar a la etiqueta #Venezuela y debajo de ella cambiar la línea:
-4:00 - VET
Por estas líneas:
-4:00 - VET 2007 Mes Dia hh:mm:seg
-4:30 - VET
2- La definición de la zona America/Caracas deberá quedar así si el cambio, por ejemplo quieres que se realice a las 11:29:59 el día 19 de Septiembre de 2007
#
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Caracas -4:27:44 - LMT 1890
-4:27:40 - CMT 1912 Feb 12 # Caracas Mean Time?
-4:30 - VET 1965 #
-4:00 - VET 2007 Sep 19 11:29:59
-4:30 - VET
3.- Luego deberá continuar con los pasos
Anexos:
Links de interés:
http://www.redhat.com/support/resources/faqs/dst/
http://www.linuxquestions.org/questions/showthread.php?t=373263
http://mirror.aarnet.edu.au/pub/fedora/linux/core/6/source/SRPMS/
http://wiki.debian.org/TimeZoneChanges
Mayor detalle puede encontrarlo en el Manual del compilador de zona de tiempo “zic”:
$ man zic
Nota Final: Es posible que se requieran modificaciones menores a este documento si desea aplicar la compilación e instalación en otra distribución diferente a Fedora o RedHat.