IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Linux Professional Institute Certificate. LPIC-1

Lpic1 large.gif
Certificat LPIC-1
Examen: 102 (torneu a la resta de temes)
Fitxers: LPI107.3_LocalitzacioiInternacionalitzacio.pdf (LPI107.3_LocalitzacioiInternacionalitzacio.odp)
Objectius: http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_102_detailed_objectives
Dipòsit SVN: https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_102/107.3
Usuari: anonymous
Paraula de pas: qualsevol paraula de pas

Objectius del tema

107.3. Localització i internacionalització
Objective.jpg
  • Objectiu: Els candidats han de ser capaços de regionalitzar un sistema en un idioma diferent a l'anglès. A més, cal saber perquè LANG=C és important quan es creen guions de bash.
  • Pes: 3
060317 Icon - Theory of Knowledge v01 pdc.jpg

Àrees Clau de Coneixement:

  • Configuració de locale
  • Configuració de la zona horària.
Icon list.jpg

La següent és una llista parcial de fitxers, termes i utilitats utilitzades:

Text-editor.svg

Apunts: LPI 107.3. Localització i internacionalització

Localització i internacionalització

3.1 Locales

[email protected]:~$ locale
LANG=ca_ES.UTF-8
LANGUAGE=ca:en
LC_CTYPE=ca_ES.UTF-8 
LC_NUMERIC="ca_ES.UTF-8"
LC_TIME="ca_ES.UTF-8"
LC_COLLATE=ca_ES.UTF-8
LC_MONETARY="ca_ES.UTF-8"
LC_MESSAGES=ca_ES.UTF-8
LC_PAPER="ca_ES.UTF-8"
LC_NAME="ca_ES.UTF-8"
LC_ADDRESS="ca_ES.UTF-8"
LC_TELEPHONE="ca_ES.UTF-8"
LC_MEASUREMENT="ca_ES.UTF-8"
LC_IDENTIFICATION="ca_ES.UTF-8"
LC_ALL=


Exemple de configuració en català

Locales en Unix

Els locals es guarden als fitxers de la carpeta /usr/share/i18n/locales/


Per exemple el fitxer de locales del català és un fitxer ASCII

[email protected]:~$ file /usr/share/i18n/locales/ca_ES
/usr/share/i18n/locales/ca_ES: ASCII text

L'ordre locadef permet definir els fitxers de text

Configurar els locales

Instal·lació de suport d'idioma

les aplicacions grans solen tenir paquets per a cada idioma/locale

Codificacions de caràcters

ASCII

American Standard Code for Information Interchange

és el codi per a la traducció de bits a caràcters

utilitza 7 bits per representar els caràcters

conegut també com estàndard ISO-8859-1

va ser publicat com estandar

ASCII art

ISO-8859

Unicode

Unicode és un estàndard internacional de codificació de caràcters en suports informàtics. El seu objectiu és proporcionar el mitjà per a permetre emmagatzemar qualsevol text que es desitgi. Això inclou qualsevol mena de forma d'escriptura que es faci servir actualment, moltes formes d'escriptura conegudes només pels estudiosos i altra mena de símbols com ara els símbols matemàtics, lingüístics i APL

Unicode és un projecte que pretén reemplaçar tota mena de conjunt de caràcters existent. Avui en dia, Unicode es considera el conjunt de caràcters més complet i ha esdevingut l'opció a triar en la internacionalització de programari en entorns multilingües. Molts estàndards recents i programari bàsic han adoptat Unicode per a representar text

Origen del nom:UNIversalitat, UNIformitat i UNIcitat.

L'estàndard és mantingut per l'Unicode Technical Committee (UTC), integrat al Unicode Consortium, del que formen art múltiples empreses i institucions relacionades amb la informàtica i treballen de forma conjunta amb la ISO/IEC per desenvolupar estandards compatibles.

Unicode va ser un projecte pensat per a substituir el desgavell de codis anteriors (des de l'ASCII als ISO-8859 i altres codis internacionals) els quals estaven molt limitats en suport multilingüe, és a dir, cada regió tenia un estàndard ISO-8859 (a Catalunya el ISO-8859-1) però no existia un codi que permetes tenir textos amb codificacions mixtes.

La majoria de sistemes operatius moderns, incloent Linux l'implementen així com altres tecnologies com Java o XML].

Jordiromerounix146.png


Los punts de codi unicode tenen un identificador únic (número entre). Segons l'arquitectura un ordinador pot utilitzar 8, 16 o 32 bits per a representar aquests enters (l'arquitectura de representació de caràcters no té per que coincidir amb l'arquitectura de la CPU). Les formes de codificació de Unicode reglamenten la forma en que es transformaran les unitats tractades per l'ordinadors. Hi ha 2 possibles formes definides per unicode sota el nom Unicode Transformation Format UTF:

UTF-8: Codificació orientada a byte (8 bits) que té símbols de longitud variable.

UTF-16: Codificació de 16 bits de longitud variable optimitzada

UTF-32: codificació de 32 bits de longitud fixa. Entren tot els possibles caràcters i és la més senzilla d'utilitzar.


Les formes de codificació descriuen el mode en que l'ordinador representa el símbol i cal definir Esquemes de codificació que indiquen com es serialitza la informació codificada de forma segura, és a dir que sistemes heterogenis (per exemple un emissor en UTF-8 i un receptor amb UTF-8 o segons com s'ordenin els bytes endianess ) puguin intercanviar informació de forma correcta. Els esquemes són :

UTF-8 No necessita. Només 1 byte no cal indicar quin és l'ordre

UTF-16 Big-endian o Little-endian

UTF-16BE Big-endian

UTF-16LE Little-endian

UTF-32 Big-endian o Little-endian

UTF-32BE Big-endian

UTF-32LE Little-endian

[email protected]:~$ unicode ç
U+00E7 LATIN SMALL LETTER C WITH CEDILLA
UTF-8: c3 a7  UTF-16BE: 00e7  Decimal: ç
ç (Ç)
Uppercase: U+00C7
Category: Ll (Letter, Lowercase)
Bidi: L (Left-to-Right)
Decomposition: 0063 0327
[email protected]:~$ unicode ½
U+00BD VULGAR FRACTION ONE HALF
UTF-8: c2 bd  UTF-16BE: 00bd  Decimal: ½
½ (½)
Uppercase: U+00BD
Category: No (Number, Other)
Numeric value: 0.5
Bidi: ON (Other Neutrals)
Decomposition: <fraction> 0031 2044 0032

UTF-8

  • 8-bit Unicode Transformation Format

És un format de codificació de caràcters unicode i ISO 10646 que utilitza símbols de longitud variable. Va ser creat per Robert C. Pike i Kenneth L. Thompson (aquest últim també va participar en la creació de C i de Unix)

És un dels tres possibles formats per representar Unicode. Característiques:

Pot representar qualsevol caràcter unicode. La mida dels símbols pot estar entre 1 o 4 bytes (per cada caràcter unicode) Inclou ASCII de 7 bits i per tant és compatible endarrere amb ASCII.


Aquestes característiques el fan ideal per a codificació de correus electrònics i pàgines web. El IETF recomana que tos els protocols d'Internet indiquin quina codificació utilitzen i que una de les contemplades sigui UTF-8

[email protected]:~$ ascii a
ASCII 6/1 is decimal 097, hex 61, octal 141, bits 01100001: prints as `a'
Official name: Miniscule a
Other names: Small a, Lowercase a  

ASCII 0/10 is decimal 010, hex 0a, octal 012, bits 00001010: called ^J, LF, NL
Official name: Line Feed
Other names: Newline, \n 
[email protected]:~$ unicode à
U+00E0 LATIN SMALL LETTER A WITH GRAVE
UTF-8: c3 a0  UTF-16BE: 00e0  Decimal: à
à (À)
Uppercase: U+00C0
Category: Ll (Letter, Lowercase)
Bidi: L (Left-to-Right)
Decomposition: 0061 0300

Configuració horària

Conceptes:

Temps Universal Coordinat (UTC): L'origen de les sigles és un compromís de la International Telecommunication Union (ITU) entre els sigles americanes "CUT" (coordinated universal time) i les sigles franceses "TUC" (temps universel coordonné) (vaja ni un ni l'altre!)

Greenwich Mean Time (GMT): El Greenwich Mean Time és una mesura del temps basada en el temps solar (mesura segons els estels) mitjà al meridià de Greenwich, meridià origen de les longituds, que travessa l'observatori de Greenwich, a prop de Londres, a Anglaterra. La mesura GMT ha servit de referència horària al món durant la major part del segle XX, abans de ser substituït pel "Temps Universal Coordinat" UTC l'any 1972. De vegades GMT es utilitzat encara com a sinònim del fus horari UTC+0. Les dues mesures, si bé semblants, no coincideixen pas, ja que el GMT es calcula sobre la rotació terrestre, i l'UTC sobre el TAI (Temps Atòmic Internacional), que basa el seu càlcul en la tècnica dels rellotges atòmics.

Temps atòmic Internacional (TAI): Creat al 1972, sistema més exacte de mesura del temps.

Fus horari: Les zones horàries o fusos horaris són cadascuna de les vint-i-quatre àrees en les que es divideix la Terra que segueixen la mateixa definició de temps. Antigament, la gent feia servir el temps solar aparent, guiant-se per la posició del sol, amb aquest sistema l'hora variava amb la distància per exemple entre ciutats. Els fusos horaris van corregir en part aquest problema al posar els rellotges d'una regió al mateix temps solar mig. Els fusos horaris generalment estan centrats en meridians d'una longitud que és múltiple de 15 °, en tot cas tal i com es pot veure en el següent mapa les formes dels fusos horaris estan força afectades per les fronteres polítiques.

Hora local: Cada fus horari té un hora diferent respecte a l'hora UTC de referència (anomenada UTC+0, abans GMT tot i que no són exactament la mateix hora). A més cal tenir en compte les polítiques d'horari d'estiu (Daylight Saving Time o DST)

Horari d'estiu: Canvi d'hora que es realitza a l'estiu per aprofitar millor la llum diürna. No s'aplica igual a tot el mon.

Rellotge de maquinari (hardware clock): és el rellotge intern d'un PC que sol estar a la placa mare i que funciona de forma permanent gràcies a la pila que porta la placa mare. Aquest rellotge pot ser modificat per la BIOS, o pel sistema operatiu.

Normalment cada ordinador té dos rellotges:

Rellotge de maquinari gestiona la placa mare

Rellotge de programari que gestiona el sistema operatiu.

El rellotge de maquinari normalment només s'utilitza per establir l'hora del rellotge del sistema operatiu durant l'arrencada del sistema i per guardar l'hora quan aturem o tornem a iniciar

Per tal de poder ajustar correctament l'hora, el que és necessita és tenir una base de dades amb tota la informació relacionada amb les zones horàries, DSTs i d'altres, i un cop es té aquesta base de dades, només cal executar un assistent que l'única pregunta que ens farà serà a quina zona horària pertanyem.

Com canviar la zona horària

De forma temporal per a un script o bash concreta

tzselect i les variables d'entorn TZ i TZDIR

De forma permanent per a tot el sistema

$sudo dpkg-reconfigure tzdata

tzconfig

obsolet

Configuració de l'hora

La data del sistema és pot establir de diverses maneres:

Manual:

Podem establir la data del sistema utilitzant l'ordre date. El primer problema que té aquest mètode és que gairebé impossible que establim correctament la data exacta. També podem utilitzar eines gràfiques, en tot cas, tots els sistemes manuals tenen el problema de l'exactitud del sistema. Podem establir l'hora de forma manual però amb exactitud utilitzant l'ordre ntpdate que de fet és un client NTP

Automàtica:

Podem utilitzar un servei d'hora proporcionat per un servidor d'hora per tal de sincronitzar la data del sistema utilitzant el protocol Network Time Protocol (NTP). A més podem configurar el sistema per què sincronitzi periòdicament l'hora (per exemple cada cop que s'inicii el sistema o automatitzant la tasca amb cron)

Es pot utilitzar DHCP per configurar l'hora dels clients DHCP. En aquest cas el que es fa és indicar als clients quins són els servidors de NTP a utilitzar.

També és possible configurar el Primary Domain Controller d'una xarxa Windows per tal de proporcionar l'hora a les màquines del domini (tant si s'utilitza Windows o Samba). En aquests casos el que es fa es configurar el guió LOGON.BAT per tal que cada cop que una màquina inicia una connexió al domini es sincronitzi l'hora del sistema.

NOTA: Entenem que quan parlem d'establir l'hora i data del sistema parlem d'establir la data i hora del sistema operatiu i no pas l'hora del rellotge de maquinari

Per sincronitzar la hora del sistema cal executar:

$ sudo ntpdate servidordentp

Per exemple

$ sudo ntpdate ntp.ubuntu.com

$ sudo ntpdate pool.ntp.org

Network Time Protocol

El protocol NTP és un protocol client-servidor on els clients poden utilitzar una comanda per obtenir l'hora exacte d'un servidors remots (servidors NTP).

IMPORTANT: Cal tenir en compte que moltes estacions de treball o servidors que pot ser que no vulguin proporcionar servei d'hora a ningun client, si necessiten una configuració d'hora força exacte utilitzen el servidor instal·lat en localhost.

A sistemes operatius Debian antics cal instal·lar el paquet ntp-server

En canvi a Ubuntu o distribucions Debian més modernes el paquet que conté el servidor és ntp a seques.

$ sudo apt-get install ntp

Servidor NTP

Control del servei

System V:

$sudo /etc/init.d/ntp
Usage: /etc/init.d/ntp {start|stop|restart|try-restart|force-reload|status

Podeu iniciar/aturar el servei amb:

$ sudo /etc/init.d/ntp restart

$ sudo /etc/init.d/ntp reload

Comprovar

$ sudo /etc/init.d/ntp status
* NTP server is running.

Ports

Només UDP

[email protected]:~$ cat /etc/services | grep ntp
nntp		119/tcp		readnews untp	# USENET News Transfer Protocol
ntp		123/tcp
ntp		123/udp				# Network Time Protocol
nntps		563/tcp		snntp		# NNTP over SSL
nntps		563/udp		snntp


[email protected]:~$ sudo nmap -p 123 localhost

Starting Nmap 5.21 ( http://nmap.org ) at 2012-05-30 13:09 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000091s latency).
PORT    STATE  SERVICE
123/tcp closed ntp
Nmap done: 1 IP address (1 host up) scanned in 0.14 seconds
[email protected]:~$ sudo nmap -sU -p 123 localhost

Starting Nmap 5.21 ( http://nmap.org ) at 2012-05-30 13:12 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00025s latency).
PORT    STATE SERVICE
123/udp open  ntp

Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds

Configuració

La instal·lació per defecte ja té una configuració mínima que funciona correctament.

Editeu el fitxer /etc/ntp.conf i busqueu la línia server

[email protected]:~$ sudo nano /etc/ntp.conf

Busqueu

server ntp.ubuntu.com

Podeu afegir altres servidors. Per exemple:

server pool.ntp.org

Ara reinicieu el servei

$ sudo /etc/init.d/ntp restart

Comprovar el servei

Paquets

libc

locales

tzdata

Paquet amb la base de dades de zones horàries (tz: time zone)

$sudo apt-get install tzdata

Hora local

$file /etc/localtime
/etc/localtime: timezone data, version 2, 8 gmt time flags, 8 std time flags, no leap seconds, 163 transition times, 8 abbreviation chars

La informació es guarda a

/usr/share/zoneinfo

2 Sistemes

posix: Utilitza UTC sense TAI. Carpeta /usr/share/zoneinfo/posix


right: Utilitza l'hora més exacte possible segons el sistema International Atomic Time (TAI). Carpeta /usr/share/zoneinfo/right

Ordres

Configuració de la localització

/usr/bin/locale

localedef

localepurge

locale-gen

Codificacions de caràcters

iconv

recode

tofrodos

enca

file

geany

Configuració de l'hora

tzselect

hwclock

tzconfig

date

Formats

Data: date "+%Y%m%d"

Data i hora: `date "+%Y_%m_%d_%H_%M_%S"`

Altres exemples:

DOW=`date +%a` # Dia de la setmana

DOM=`date +%d` # Dia del mes exemple 27

DM=`date +%d%b` # Dia i mes exemple 27Sep

Conversió epoch

$ date -d "1970-01-01 1264329324 sec"

epoch

Fitxers de configuració

Configuració de la localització

/etc/locale.alias

/usr/share/i18n/locales

/usr/share/i18n/charmaps

/etc/environment

Configuració de la zona horària

/etc/timezone

/etc/localtime

/usr/share/zoneinfo

/etc/default/rcS

/usr/share/doc/tzdata/README.Debian

Variables d'entorn

LANG

LC_*

LC_ALL

TZ

Resol·lució de problemes. Troubleshooting

Conflictes de temps amb sistemes duals Windows/Linux

Els sistemes operatius emmagatzemen i obtenen l'hora del rellotge de maquinari (hardware clock) que normalment es troba a la placa mare de forma que fins i tot es pot mantenir l'hora quan el sistema no té energia elèctrica (el rellotge utilitza la pila de la placa mare).

La majoria de sistemes operatius (Linux/Unix/Mac) emmagatzemen el temps al rellotge de maquinari en UTC per defecte, en canvi altres sistemes operatius com Windows emmagatzema l'hora com a hora local (local time). Això causa problemes en sistemes duals.

L'avantatge d'utilitzar UTC és que aleshores no és necessari canviar l'hora del rellotge quan un es mou entre diferents zones horàries, o durant els canvis d'hora ( Daylight Savings Time o DST). L'hora universal és sempre la mateixa per totes les zones amb independència de l'època de l'any.

Per solucionar el problema hi ha dos opcions:

Fer que Windows utilitzi UTC (no fiable, només XP o anteriors)

Fer que Linux utilitzi l'hora local

Fer que Linux utilitzi l'hora local és més estable i fiable que fer que Windows utilitzi UTC, per aquesta raó en sistemes duals (ho pregunta durant la instal.lació), Ubuntu des de la versió 8.10 utilitza per defecte l'hora local

Posar UTC=no al fitxer /etc/default/rcS

Programació

Gettext

C gettext

PHP gettext