Migration von Latin1 nach UTF8
Die meisten Neuinstallationen beliebiger Linuxdistributionen verwenden inzwischen UTF8 als Systemzeichensatz. Alte Installationen haben keine Festlegung oder verwenden Latin1. Um hier eine gewisse Kompatibilität herzustellen, wird die Umstellung für Debian Squeeze beschrieben.
Systemeinstellung
Als erstes müssen die entsprechenden Locales generiert werden:
dpkg-reconfigure locales
Hier auswählen, welche generiert werden sollen. Empfehlung: Jeweilige Landessprache (de_DE), sowie englisch (en_GB bzw. en_US) Nach der Auswahl kann dann der Standardwert festgelegt werden. Dieser wird in der Datei /etc/default/locale eingetragen.
Nach einem Reboot arbeitet das System nunmehr mit UTF8.
Dateisystem
Nun muss das Dateisystem noch umgestellt werden. Convmv hilft bei der Umstellung
apt-get install convmv convmv -f ISO-8859-1 -t UTF8 -r --qfrom --qto --notest .
Netatalk
Anpassen von
- /etc/default/netatalk:
ATALK_UNIX_CHARSET='UTF8'
- /etc/netatalk/AppleVolumes.system:
Umstellen der Volumes von Latin1 auf UTF8.
Netatalk neu starten.
Volume(s) mounten, Syslog dabei beobachten! Es sollten keine Fehlermeldungen auftreten. Jetzt Volume(s) wieder unmounten und die zugehörige AppleDouble-Datenbank checken:
dbd -r .
Folgende Meldungen können auftreten und ignoriert werden:
Bad encoding for '/home/foo/.profile' Incorrect CNID data in .AppleDouble data for '/home/foo/Mac-Test-File' (bad stamp?)
Spätestens jetzt werden Dateien angemeckert, die per Hardlink platzsparend an verschiedenen Stellen im Dateisystem auftauchen sollten:
No CNID for '/home/foo/Link1' in database No CNID for '/home/foo/Link2' in database Put results in a non-unique secondary key in an index not configured to support duplicates Sep 09 15:04:22.235705 [17688] {dbif.c:693} (E:CNID): error setting key/value in cnid2.db: Invalid argument
Lösung: Hardlinks durch Kopien oder Alias ersetzen.
Samba
In /etc/samba/smb.conf umstellen:
- unix charset = UTF8
- display charset = LOCALE
Dateiinhalte
Die Konvertierung aller Dateiinhalte ist sehr aufwendig und kann im Falle von Binärdateien für deren logische Zerstörung sorgen. Kompatibilität in vim kann durch die Ergänzung von ~/.vimrc mit diesen Parametern hergestellt werden:
" Terminalsettings :set termencoding=UTF8 :set encoding=Latin1
Weblinks
- Kurzbeschreibung bei Serverfault.com (engl.)
- Weitere Tips für Programme (engl.)