Gesammtes System auf utf8 umstellen

  • Thread starter Thread starter ralli
  • Start date Start date
R

ralli

Guest
Ich habe bei der Eingabe von
locale auf der Konsole festgestellt

Code:
LANG=de_DE.ISO8859-15
LC_CTYPE="de_DE.ISO8859-15"
LC_COLLATE="de_DE.ISO8859-15"
LC_TIME="de_DE.ISO8859-15"
LC_NUMERIC="de_DE.ISO8859-15"
LC_MONETARY="de_DE.ISO8859-15"
LC_MESSAGES="de_DE.ISO8859-15"
LC_ALL=
das mein System zwar deutsche Umlaute beherrscht, aber das reicht mir nicht, ich möchte alles auf utf8 umstellen.

Es ist doch bestimmt sinnvoll, alles auf utf8 umzustellen? Das sollte doch der Standard sein, oder?

Ich habe zwar das Forum durchsucht und auch das Wiki gelesen, bin mir aber trotzdem noch unsicher, wie ich richtig und zielführend vorgehen soll.

Dabei habe ich eine Verständnisfrage, wird das nicht in der /etc/login.conf global eingestellt?

Wenn ich in meinem home Verzeichnis eine .login.conf anlege, werden dann diese Einstellungen übernommen und die globalen Einstellungen der /etc/login.conf ignoriert?

Muss ich nach jeder Änderung auch

cap_mkdb /etc/login.conf

oder

cap_mkdb .login.conf absetzen?

In meiner /etc/rc.conf

steht ja noch

Code:
keymap="german.iso.acc.kbd"

Muss da dann auch noch was geändert werden?

Jetzt hoffe ich, das ich mich richtig ausgedrückt habe, ich will mein gesamtes System auf utf8 umstellen, in diesem Zeichensatz sind ja auch die deutschen Umlaute enthalten.

Wenn ich mal mein System neu aufsetzen sollte, kann ich das schon bei der Basisinstallation berücksichtigen?

Ja, ja jetzt muss und will ich mich mit allem auseinandersetzen.

Allerdings habe ich durch FreeBSD das erste Mal das Gefühl, das nicht mehr das Betriebssystem mich kontrolliert, sondern ich das Betriebssystem.

Aber ich muss wohl noch einiges lernen, dazu bin ich aber auch bereit.

Oder reicht das Anlegen einer .locale im Homeverzeichnis mit folgendem Inhalt:

LANG=de_DE.UTF-8; export LANG
MM_CHARSET=UTF-8; export MM_CHARSET

Habe ich jetz mal ausprobiert, hat aber wohl nichts gebracht.:confused:

Hier mal der Inhalt meiner /etc/login.conf:

Code:
# login.conf - login class capabilities database.
#
# Remember to rebuild the database after each change to this file:
#
#	cap_mkdb /etc/login.conf
#
# This file controls resource limits, accounting limits and
# default user environment settings.
#
# $FreeBSD: release/9.0.0/etc/login.conf 209331 2010-06-19 09:21:34Z brian $
#

# Default settings effectively disable resource limits, see the
# examples below for a starting point to enable them.

# defaults
# These settings are used by login(1) by default for classless users
# Note that entries like "cputime" set both "cputime-cur" and "cputime-max"
#
# Note that since a colon ':' is used to separate capability entries,
# a \c escape sequence must be used to embed a literal colon in the
# value or name of a capability (see the ``CGETNUM AND CGETSTR SYNTAX
# AND SEMANTICS'' section of getcap(3) for more escape sequences).

default:\
	:passwd_format=md5:\
	:copyright=/etc/COPYRIGHT:\
	:welcome=/etc/motd:\
	:setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\
	:path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin ~/bin:\
	:nologin=/var/run/nologin:\
	:cputime=unlimited:\
	:datasize=unlimited:\
	:stacksize=unlimited:\
	:memorylocked=unlimited:\
	:memoryuse=unlimited:\
	:filesize=unlimited:\
	:coredumpsize=unlimited:\
	:openfiles=unlimited:\
	:maxproc=unlimited:\
	:sbsize=unlimited:\
	:vmemoryuse=unlimited:\
	:swapuse=unlimited:\
	:pseudoterminals=unlimited:\
	:priority=0:\
	:ignoretime@:\
	:umask=022:


#
# A collection of common class names - forward them all to 'default'
# (login would normally do this anyway, but having a class name
#  here suppresses the diagnostic)
#
standard:\
	:tc=default:
xuser:\
	:tc=default:
staff:\
	:tc=default:
daemon:\
	:tc=default:
news:\
	:tc=default:
dialer:\
	:tc=default:

#
# Root can always login
#
# N.B.  login_getpwclass(3) will use this entry for the root account,
#       in preference to 'default'.
root:\
	:ignorenologin:\
	:tc=default:

#
# Russian Users Accounts. Setup proper environment variables.
#
russian|Russian Users Accounts:\
	:charset=KOI8-R:\
	:lang=ru_RU.KOI8-R:\
	:tc=default:


######################################################################
######################################################################
##
## Example entries
##
######################################################################
######################################################################

## Example defaults
## These settings are used by login(1) by default for classless users
## Note that entries like "cputime" set both "cputime-cur" and "cputime-max"
#
#default:\
#	:cputime=infinity:\
#	:datasize-cur=22M:\
#	:stacksize-cur=8M:\
#	:memorylocked-cur=10M:\
#	:memoryuse-cur=30M:\
#	:filesize=infinity:\
#	:coredumpsize=infinity:\
#	:maxproc-cur=64:\
#	:openfiles-cur=64:\
#	:priority=0:\
#	:requirehome@:\
#	:umask=022:\
#	:tc=auth-defaults:
#
#
##
## standard - standard user defaults
##
#standard:\
#	:copyright=/etc/COPYRIGHT:\
#	:welcome=/etc/motd:\
#	:setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
#	:path=~/bin /bin /usr/bin /usr/local/bin:\
#	:manpath=/usr/share/man /usr/local/man:\
#	:nologin=/var/run/nologin:\
#	:cputime=1h30m:\
#	:datasize=8M:\
#	:vmemoryuse=100M:\
#	:stacksize=2M:\
#	:memorylocked=4M:\
#	:memoryuse=8M:\
#	:filesize=8M:\
#	:coredumpsize=8M:\
#	:openfiles=24:\
#	:maxproc=32:\
#	:priority=0:\
#	:requirehome:\
#	:passwordtime=90d:\
#	:umask=002:\
#	:ignoretime@:\
#	:tc=default:
#
#
##
## users of X (needs more resources!)
##
#xuser:\
#	:manpath=/usr/share/man /usr/local/man:\
#	:cputime=4h:\
#	:datasize=12M:\
#	:vmemoryuse=infinity:\
#	:stacksize=4M:\
#	:filesize=8M:\
#	:memoryuse=16M:\
#	:openfiles=32:\
#	:maxproc=48:\
#	:tc=standard:
#
#
##
## Staff users - few restrictions and allow login anytime
##
#staff:\
#	:ignorenologin:\
#	:ignoretime:\
#	:requirehome@:\
#	:accounted@:\
#	:path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
#	:umask=022:\
#	:tc=standard:
#
#
##
## root - fallback for root logins
##
#root:\
#	:path=~/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
#	:cputime=infinity:\
#	:datasize=infinity:\
#	:stacksize=infinity:\
#	:memorylocked=infinity:\
#	:memoryuse=infinity:\
#	:filesize=infinity:\
#	:coredumpsize=infinity:\
#	:openfiles=infinity:\
#	:maxproc=infinity:\
#	:memoryuse-cur=32M:\
#	:maxproc-cur=64:\
#	:openfiles-cur=1024:\
#	:priority=0:\
#	:requirehome@:\
#	:umask=022:\
#	:tc=auth-root-defaults:
#
#
##
## Settings used by /etc/rc
##
#daemon:\
#	:coredumpsize@:\
#	:coredumpsize-cur=0:\
#	:datasize=infinity:\
#	:datasize-cur@:\
#	:maxproc=512:\
#	:maxproc-cur@:\
#	:memoryuse-cur=64M:\
#	:memorylocked-cur=64M:\
#	:openfiles=1024:\
#	:openfiles-cur@:\
#	:stacksize=16M:\
#	:stacksize-cur@:\
#	:tc=default:
#
#
##
## Settings used by news subsystem
##
#news:\
#	:path=/usr/local/news/bin /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin:\
#	:cputime=infinity:\
#	:filesize=128M:\
#	:datasize-cur=64M:\
#	:stacksize-cur=32M:\
#	:coredumpsize-cur=0:\
#	:maxmemorysize-cur=128M:\
#	:memorylocked=32M:\
#	:maxproc=128:\
#	:openfiles=256:\
#	:tc=default:
#
#
##
## The dialer class should be used for a dialup PPP account
## Welcome messages/news suppressed
##
#dialer:\
#	:hushlogin:\
#	:requirehome@:\
#	:cputime=unlimited:\
#	:filesize=2M:\
#	:datasize=2M:\
#	:stacksize=4M:\
#	:coredumpsize=0:\
#	:memoryuse=4M:\
#	:memorylocked=1M:\
#	:maxproc=16:\
#	:openfiles=32:\
#	:tc=standard:
#
#
##
## Site full-time 24/7 PPP connection
## - no time accounting, restricted to access via dialin lines
##
#site:\
#	:ignoretime:\
#	:passwordtime@:\
#	:refreshtime@:\
#	:refreshperiod@:\
#	:sessionlimit@:\
#	:autodelete@:\
#	:expireperiod@:\
#	:graceexpire@:\
#	:gracetime@:\
#	:warnexpire@:\
#	:warnpassword@:\
#	:idletime@:\
#	:sessiontime@:\
#	:daytime@:\
#	:weektime@:\
#	:monthtime@:\
#	:warntime@:\
#	:accounted@:\
#	:tc=dialer:\
#	:tc=staff:
#
#
##
## Example standard accounting entries for subscriber levels
##
#
#subscriber|Subscribers:\
#	:accounted:\
#	:refreshtime=180d:\
#	:refreshperiod@:\
#	:sessionlimit@:\
#	:autodelete=30d:\
#	:expireperiod=180d:\
#	:graceexpire=7d:\
#	:gracetime=10m:\
#	:warnexpire=7d:\
#	:warnpassword=7d:\
#	:idletime=30m:\
#	:sessiontime=4h:\
#	:daytime=6h:\
#	:weektime=40h:\
#	:monthtime=120h:\
#	:warntime=4h:\
#	:tc=standard:
#
#
##
## Subscriber accounts. These accounts have their login times
## accounted and have access limits applied.
##
#subppp|PPP Subscriber Accounts:\
#	:tc=dialer:\
#	:tc=subscriber:
#
#
#subshell|Shell Subscriber Accounts:\
#	:tc=subscriber:
#
##
## If you want some of the accounts to use traditional UNIX DES based
## password hashes.
##
#des_users:\
#	:passwd_format=des:\
#	:tc=default:

Da ist ja überwiegen alles auskommentiert.

Dafür ist ein russischer Zeichensatz konfiguriert, warum und für was ist das gut?

Kann ich alles löschen und nur utf8 für den User ralph einstellen?

DANKE!
 
Ob man nun das ganze System auf UTF-8 möchte oder nicht, ist gerade auf Desktops eigentlich keine Frage mehr. Da inzwischen jede Menge X11-Software ausschließlich Unicode unterstützt, hat man gar keine andere Wahl. Allerdings verliert man damit die Umlaute auf der Konsole, da die Syscons-Konsole nach wie vor eine nur unzureichende Unicode-Unterstützung hat. Das ist übrigens auch einer der Gründe für den Charset-Faschismus in unserem IRC-Chan. Da die Konsole auf Desktop-Systemen aber sowieso nur zweitrangig ist und Nicht-ISO-Zeichen in Dateinamen eine schlechte Idee sind, da gerade ältere Software auch bei UTF-8 eine gewisse Neigung hat auf tausend und eine Art zu implodieren, sollte es zu verschmerzen sein...

Daher 3 einfache Schritte zur UTF-Glückseeligkeit:

1. Lasse die Konsole auf ISO eingestellt. Alles andere wird der Erfahrung nach nur noch weniger funktionieren. Außerdem kann man sich dann schön über ungewollte UTF-Zeichen aufregen. :)

2. Lasse die Finger von der /etc/login.conf. Die Datei legt die Standardeinstellungen für alle Sessions im System fest, auch die von Root! Wenn man dort was verstellt, sollte man wissen, was man tut... In Sachen Charset stellt man dort den Zeichensatz global um, was einige Ports und Anwendungen auf interessante Weise zerreißen wird. Überhaupt sollte man aus dem Grund den Zeichensatz von Root nicht umstellen! Du überschreibst das Charset für sdeinen Nutzer in der ~/.login_conf:
Code:
me:\
    :lang=de_DE.UTF-8:
Anschließend einmal neu einloggen und es sollte gehen.

3. Mit convmv aus den Ports die Dateien umbennen. Das Tool bitte auf keinen Fall auf Systemverzeichnisse anwenden (also nur /home/user/) und vorher in jedem Fall ein Backup machen!
Code:
convmv --notest -r -f ISO8859-1 -t UTF-8 <Verzeichnisname>
 
Danke Yamagi, das habe ich alles verstanden und auch umgesetzt. Zusätzlich habe ich noch die .xinitrc geändert und dort eingetragen:
Code:
export LANG=de_DE.UTF-8
locale ergibt jetzt auch folgerichtig:
Code:
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_ALL=
Dafür will xterm keine deutschen Umlaute mehr darstellen und vi auch nicht.

rox-filer hatte ich mal deinstalliert und neu installiert, der kann wohl auch keine utf8 und die Benutzerführung ist auch auf englisch.

Die .locale wird wohl nicht gebraucht?

Muss noch was an der xorg.conf geändert werden?
 
Eigentlich sollte es so reichen. Es mag aber sein, dass deine Shell (die CSH-Familie braucht es nicht!) einen Eintrag in der ~/.locale benötigt. Zu den einzelnen Programmen:

- xterm sollte Unicode unterstützen. Zumindest einfache Zeichen wie Umlaute. Vielleicht kann da jemand anders etwas zu sagen.

- vi unterstützt kein Unicode. Es gab ein GSoC-Projekt, aber meines Wissens wurde es nicht beendet. Es gibt auch in den Ports eine Version mit Unicode, aber die ist nicht verbuggter als das Original. Nimm am besten Vim, dann hast du das Problem komplett totgeschlagen.

- rox-filer weiß ich nicht.
 
Bei mir sind es die folgenden Optionen
Code:
LANG=en_US.UTF-8; export LANG
MM_CHARSET=UTF-8; export MM_CHARSET

Bei mir ist wine bisher der einzige Kandidat, der noch mit UTF-8 rumzickt
 
Du musst natuerlich auch rox von der selben Konsole starten, wo deine locale richtig gesetzt sind. Dann funktioniert das auch.

Und wie Kamikaze schon sagte brauchst du auch ein unicode faehiges Terminal wie uxterm, oder rxvt-unicode (x11/rxvt-unicode).
 
Seinen wir doch mal ehrlich: die syscons benutzt man nur noch, wenn X gerade mal wieder besonders broken ist oder der SSHd auf einem entfernen System noch eben per IPMI gestartet werden muss. Somit ist imo ~/.login_conf der richtige Ort um Charset, Lang und Umgebungsvariablen zu setzen. Bei mir sieht sie z.B. so aus:
Code:
me:\
	:charset=UTF-8:\
	:lang=en_US.UTF-8:\
	:setenv=LC_COLLATE=C,LC_CTYPE=de_DE.UTF-8,LC_TIME=de_DE.UTF-8,LC_NUMERIC=de_DE.UTF-8,LC_MONETARY=de_DE.UTF-8,TZ=Europe/Berlin:
 
Du musst natuerlich auch rox von der selben Konsole starten, wo deine locale richtig gesetzt sind. Dann funktioniert das auch.

Und wie Kamikaze schon sagte brauchst du auch ein unicode faehiges Terminal wie uxterm, oder rxvt-unicode (x11/rxvt-unicode).
Eigentlich, ralli, solltest Du Deinen ganzen Desktop mit den richtigen (Unicode-) Einstellungen hochfahren. Wenn Du die Variablen in ~/.login_conf setzt, sollten sie auch für die Shell auf Deiner Konsole gelten (crest hat recht, das schadet nicht!), von wo aus Du wohl "startx" aufrufst, oder nicht? Wenn Du X nicht über "startx", sondern mit einem Display Manager hochfährst, dann umgeht der möglicherweise jede Shell, dann kommt es darauf an ...
Was ist bei Dir der Fall?

uxterm ist übrigens nur ein Wrapper-Skript, das "xterm -u8" aufruft. Das kannst Du auch direkt - oder am besten trägst Du statt dessen
Code:
XTerm.VT100.Locale: true
XTerm.VT100.Utf8: true
in Deine .Xresources ein. (Eine der beiden Zeilen genügt eigentlich.) Und natürlich benötigt xterm auch eine UTF-8-fähige Schrift, aber die hat es sicher in der Standardeinstellung.
 
Hallo alle,

ich hab da jetzt doch mal eine Frage. Beim mir in .login_conf
Code:
me:\
    :charset=iso-8859-15:\
    :lang=en_US.ISO8859-15:

Wenn ich das in en_US.UTF-8 bzw UTF-8 ändere funtionieren bei mir die Umlaute nicht mehr.
(keymap="german.iso") was läuft da falsch?

(Für X hab ich die Einstellungen von locdoc in .xsession, das funktioniert)
 
Hi lockdoc, ralli,

die Umlaute gehen nicht mehr sobald ich mich mit den utf-8 Einstellungen in .login_conf aus und wieder Einlogge. ( auf der Konsole, unter X funktioniert alles).
 
... irgendwie sehe ich da für mich keinen Vorteil 'utf-8' in .login_conf einzutragen.
Danke für die Info
 
Man kann auch im Syscons Unicode bekommen, wenn man "BSD JFBTERM/ME" installiert. Das Ding wurde ursprünglich mal von Japanern für Linux gebaut und später auf FreeBSD umgefrickelt. Es nutzt den VESA-Mode der Konsole (VESA muss also unterstützt sein), um sich komplett über sie zu legen und alles per Grafik zu rendern. Kann man sich in etwa wie ein Terminalmultiplexer ähnlich zu screen oder tmux vorstellen. Das Problem ist allerdings, dass die "dummen" Kernel-Ausgabefunktionen nicht mehr durchdringen können. Panik-Meldungen sieht man also nicht mehr. Siehe: http://www.freshports.org/sysutils/jfbterm
 
Back
Top