Xorg - Problem: Couldn't load XKB-keymap (Alt Gr, Umlaute,...)

serialize

Newbie
Hi Ihr,

seit meinem letzten portupgrade hab ich einige Probleme im Xorg. Und zwar, kann ich nicht mehr in die Console wechseln mittels "Strg + Alt + F?", außerdem entspricht die "Alt Gr"-Taste der linken "Alt"-Taste, ich kann keine Umlaute mehr eingeben uuu.

Die erste Fehleranalyse offenbarte eine Meldung in der /var/log/Xorg.0.log:
(WW) Couldn't load XKB keymap, falling back to pre-XKB keymap​
Sonst ist alles im grünen Bereich, keine weiteren Fehler. Der Vollständigkeit halber, hier noch der wichtige Abschnitt aus meiner xorg.conf:
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbOptions" "nodeadkeys"
Option "XkbLayout" "de"​
EndSection​

Es hat alles wunderbar funktioniert, bis zum portupgrade, leider weiß ich nicht genau, welche Ports genau aktualisiert wurden. Deinstalliert und neu installiert hab ich bereits einige Ports, die was mit XKB zu tun haben, also xkbcomp, xkbctrl, setxkbmap, (edit: libxkbfile, xkeyboard-config). Nach dem Neustart von X: keine Änderung.

Dann hab ich versucht, X auf einer zweiten Console zu starten
# X :1 &​
Und in der /var/log/Xorg.1.log war komischerweise kein Fehler. Ich konnte auch ohne Probleme wieder in die andere Konsole wechseln, was darauf hindeutet, dass auf :1 alles funktioniert. Gegoogelt hab ich nach dem Problem bereits, einige der vorgeschlagenen Lösungsmöglichkeiten ausprobiert, aber alles ohne Erfolg. Daher die Frage an euch, habt ihr eine schlaue Idee?

Danke und Grüße,
serialize
 
Zuletzt bearbeitet:
Was genau hast du denn bei deinem "letzten portupgrade" aktualisiert?

Edit:
Ach ich sehe gerade, dass du nicht weißt, welche Ports du aktualisiert hast. Was hast du denn gemacht? Ein portupgrade -a? Das ist meist die schlechteste Lösung von allen, einen der Gründe siehst du jetzt.

Hast du denn Xorg 7.2 oder noch 6.9 ?
 
Ich hab ein portupgrade -Rra gemacht, versuch gerade anhand der freshports.org rauszufinden, welche Ports es waren. Ich hab bereits XOrg 7.2, den schweren Schritt hab ich also schon hinter mir :)

Ich mach eigtl. immer portupgrade -Rra, nach dem lesen der /usr/ports/UPDATING :)
Ist das etwa keine so gute Idee??? :confused:
 
doch die update-prozedur ist eigentlich ganz gut.
dass strg+alt+f* nicht geht ist merkwürdig, das sollte immer gehen unabhängig vom keymap. ich benutze z.b. garkeine keymaps auf meinem laptop, bzw. die werden von kde gesetzt und nicht von xorg. da muss man dann zwar bei einigen tasten doppelt draufdrücken aber es geht :D

also ich würde schon auf ein paket problem tippen. vielleicht sollltest du mal xorg mit abhämgigkeiten löschen und dann neuinstallieren, vielleicht mit paketen (vom stablemirror) diesmal.
 
Nö, ist es in meinen Augen nicht. Außerdem ist -Rr überflüssig, wenn du schon "-a" hast. Rr bedeutet, dass alle Pakete, von dem das Paket abhängig ist und die von diesem Paket abhängig sind, neu gebaut werden. Aber nur, wenn sie laut Portstree nicht mehr aktuell sind. Ein Beispiel: portupgrade -Rr firefox würde den Firefox und alle Pakete bauen, die Firefox braucht oder die Firefox brauchen. Allerdings eben nur, wenn eine neue Version vorhanden ist. Wenn du die Pakete bauen willst, obwohl keine neue Version dabei ist, brauchst du noch den Schalter "-f". Der Schalter "-a" baut aber ohnehin alle Pakete neu, die aktualisiert werden können, egal von wem sie abhängig sind. "-af" würde ALLE Pakete neu bauen.

Das Verfahren ist deshalb wenig zu empfehlen, weil man eben nicht weiß, was wie wo gebaut wird. Man kann bei Problemen hinterher nicht nachvollziehen, was aktualisiert wurde. Dazu kommt, dass es manchmal wichtig ist, bestimmte Pakete vor anderen Paketen zu bauen. Deshalb bekommt man bei größeren Updatearien mit portupgrade -a hinterher auch aufgelistet, welche Pakete nicht aktualisiert werden konnten etc.

Edit:
So unterschiedlich sind die Ansichten: soul_rebel findet das so gut. Ist also auch ein wenig Ansichtssache ;)

Im konkreten Fall wird es schwer werden dir zu helfen. mein erster Tipp wäre die xorg.conf neu durch X -configure erstellen zu lassen und zu schauen, ob es dann geht. Im schlimmsten Fall Xorg komplett neu bauen, was aber eigentlich nicht nötig sein dürfte.
 
Nö, ist es in meinen Augen nicht. Außerdem ist -Rr überflüssig, wenn du schon "-a" hast. Rr bedeutet, dass alle Pakete, von dem das Paket abhängig ist und die von diesem Paket abhängig sind, neu gebaut werden. Aber nur, wenn sie laut Portstree nicht mehr aktuell sind. Ein Beispiel: portupgrade -Rr firefox würde den Firefox und alle Pakete bauen, die Firefox braucht oder die Firefox brauchen. Allerdings eben nur, wenn eine neue Version vorhanden ist. Wenn du die Pakete bauen willst, obwohl keine neue Version dabei ist, brauchst du noch den Schalter "-f". Der Schalter "-a" baut aber ohnehin alle Pakete neu, die aktualisiert werden können, egal von wem sie abhängig sind. "-af" würde ALLE Pakete neu bauen.

So weit so gut. Was ist denn nun, wenn bei portupgrade -a das Paket foo aktualisiert wird und einen neue Abhängigkeit seit der letzten Instalation hinzugekommen ist? Wenn foo jetzt bar braucht, dass es vorher nicht gebraucht hat? Der Schalter -a baut doch nur alle bereits installierten Pakete neu, oder? Ich dachte immer, das wäre der Grund dafür, dass man beim Schalter -a das -Rr hinzunehmen soll? Na ja, schaden kann es ja auf jeden Fall nicht, oder?


Das Verfahren ist deshalb wenig zu empfehlen, weil man eben nicht weiß, was wie wo gebaut wird. Man kann bei Problemen hinterher nicht nachvollziehen, was aktualisiert wurde. Dazu kommt, dass es manchmal wichtig ist, bestimmte Pakete vor anderen Paketen zu bauen. Deshalb bekommt man bei größeren Updatearien mit portupgrade -a hinterher auch aufgelistet, welche Pakete nicht aktualisiert werden konnten etc.

Edit:
So unterschiedlich sind die Ansichten: soul_rebel findet das so gut. Ist also auch ein wenig Ansichtssache ;)

Im konkreten Fall wird es schwer werden dir zu helfen. mein erster Tipp wäre die xorg.conf neu durch X -configure erstellen zu lassen und zu schauen, ob es dann geht. Im schlimmsten Fall Xorg komplett neu bauen, was aber eigentlich nicht nötig sein dürfte.


Sollte man deiner Meinung nach also mit pkg_version die Pakete raussuchen, die nicht mehr aktuell sind und anschließend jedes einzeln updaten?
 
Naja, ich hab gedacht, das -Rr dient dazu, dass die Pakete möglichst in der richtigen Reihenfolge gebaut werden. Naja, an der Stelle lässt sich das leider grad nicht ändern.

Folgende Ports waren in jedem Fall beim Upgrade dabei: xkeyboard-config und xterm.

Ich hab gerade nochmal probiert X per SSH auf einer anderen Console zu starten und im xterm zu testen, ob da soweit alles funktioniert, und da gehts tatsächlich einwandfrei. Allerdings bekomm ich beim Start die Meldung:

(==) Using config file: "/etc/X11/xorg.conf"
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning: Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
> Ignoring extra symbols
Errors from xkbcomp are not fatal to the X server​

Das hatte ich schonmal, aber da es bisher nicht weiter störte, hab ich es einfach gelassen, frei nach dem Motto: "Never touch a running system..."

Ich probier das mal mit dem Xorg -configure aus, und berichte, danke erstmal.
 
Ich stimmt Konstantin völlig zu:

Die Schalter -Rr sind wichtig, damit Abhängigkeiten mit aktualisiert werden.

Gruß,

Ice
 
Naja, ich hab gedacht, das -Rr dient dazu, dass die Pakete möglichst in der richtigen Reihenfolge gebaut werden.

Hmm...das wäre mir neu. In der manpage steht absolut nichts dazu:

-a
--all Do with all the installed packages. Equivalent to
specify '*' as pkgname_glob.

-r
--recursive Act on all those packages depending on the given
packages as well.

-R
--upward-recursive Act on all those packages required by the given
packages as well. (When specified with -F, fetch
recursively, including the brand new, uninstalled
ports that an upgraded port requires)
 
styx schrieb:
So unterschiedlich sind die Ansichten: soul_rebel findet das so gut. Ist also auch ein wenig Ansichtssache
benutze eigentlich selber kein portupgrade mehr, das nervt mich irgendwie. normalerweise lösche ich einfach einen paket mit seinen abhängigkeiten und bau dann neu / ziehe pakete (einmal im jahr nachm base update oder jetzt beim xorgumbau kommt alles weg). das verursacht am wenigstens probleme und sorgt auch dafür, dass sich nicht immermehr pakete im laufe der zeit anhäufen...
ob jetzt -Rr notwendig ist kann ich dir nicht sagen in der man-page steht zumindest
It is necessary to specify -R in addition to -a because some of the upgraded ports might require new ports that are not installed yet.
m.e. wäre portupgrade broken wenn es beim installieren eines pakets dessen abhängigkeiten nicht absichert und ich glaube auch nicht dass es das wirklich nicht tut (denn es benutzt nur den make mechanismus der ports bzw. pkg_add die sich drum kümmern), aber wie gesagt in den man-seiten stehts, was also etwas über die unzuverlässigkeit der man-seiten aussagt... (da gibts noch mehr fehler drin übrigens)
 
Der Schalter -a baut doch nur alle bereits installierten Pakete neu, oder? Ich dachte immer, das wäre der Grund dafür, dass man beim Schalter -a das -Rr hinzunehmen soll? Na ja, schaden kann es ja auf jeden Fall nicht, oder?

Also meines Wissens prüft portupgrade generell bei der Aktualisierung eines Ports, ob die entsprechenden Abhängigkeiten vorhanden sind oder nicht. Fehlt was, wird es neu gebaut. So handhabt es zumindest "portupgrade <portname>". Es würde mich wundern, wenn portupgrade es bei "-a" anders machen würde. Wäre ziemlich dumm, oder? Aber da ich portupgrade "-a" so gut wie nie benutze, will ich mich da zu weit aus dem Fenster lehnen. In der manpage steht aber nichts dergleichen, zumindest habe ich bei kurzem rüber gucken nichts dergleichen gefunden.

Sollte man deiner Meinung nach also mit pkg_version die Pakete raussuchen, die nicht mehr aktuell sind und anschließend jedes einzeln updaten?

Nö, für sowas gibt es portversion. "portversion" auf der Konsole nach einem portsnap eingegeben zeigt einem an, was aktualisiert werden kann. Wenn man das nicht gerade alle 6 Monate macht, sind das nur ein paar Handgriffe.

Ice schrieb:
Die Schalter -Rr sind wichtig, damit Abhängigkeiten mit aktualisiert werden.

Und wo steht das?

Edit:
Ah, jetzt habe ich den Satz von soul_rebel in der manpage auch gefunden. Wundert mich allerdings, dass portupgrade da so "starrköpfig" ist.
 
Zuletzt bearbeitet:
Hmm...das wäre mir neu. In der manpage steht absolut nichts dazu:

Ja, das war auch nur kombiniert, also -Rr steht in der manpage, wofür es da ist. Und ich hab jetzt weiter gedacht:
Beispiel: portupgrade -Rr firefox

portupgrade testet, ob alle zugrundeliegenden Ports vorhanden und aktuell sind. Wenn nicht, werden sie installiert bzw. aktualisiert. Darauf würde für mich folgen, dass sie in der richtigen Reihenfolge aktualisiert werden. Beim dick gedruckten war aber wohl eher der Wunsch Vater des Gedanken ;)

Zum Thema: Hab eben ein Xorg -configure gemacht und X -config /root/xorg.conf.new, mit folgendem Ergebnis:

The XKEYBOARD keymap compiler (xkbcomp) reports:
> Error: Cannot open "/usr/local/share/X11/xkb/compiled/server-0.xkm" to write keyboard description​

Die server-0.xkm erstellt er aber selber, oder?

==

Okay, also ich habs. Beim Portupgrade scheint es mir einen Link gelöscht zu haben. Und zwar
/usr/local/share/X11/xkb > ls -al
...
lrwxr-xr-x 1 root wheel 13 Jul 26 16:29 compiled -> /var/lib/xkb/
...​

Den hab ich gerade neu erstellt, X neu gestartet und siehe da, es funktioniert :).
Hui, nochmal Glück gehabt...

Danke für die Hilfe,
serialize

PS: Aber eine sinnvolle Alternative zu portupgrade -Rra würde mich dennoch interessieren, allerdings nur eine, bei der man die Ports nicht einzeln aktualisieren muß, da wird man nämlich verrückt. Ich werde das nächste mal die Ausgabe von portupgrade in ein log-file schicken, dann kann man in aller Ruhe drüber schauen :).
 
Zuletzt bearbeitet:
Fehlermeldung in Google eingeben, auf den ersten Link klicken (genau diese Frage wurde nämlich letzte Woche auf der Mailingliste gestellt) und dann steht da auch schon die Lösung. Du bist also nicht der einzige, bei dem dieses Verzeichnis nicht erstellt wurde.
 
Fehlermeldung in Google eingeben, auf den ersten Link klicken (genau diese Frage wurde nämlich letzte Woche auf der Mailingliste gestellt) und dann steht da auch schon die Lösung. Du bist also nicht der einzige, bei dem dieses Verzeichnis nicht erstellt wurde.

Klingt wie ein Vorwurf ;) Das hatte ich auch bereits entdeckt, aber beim Ausprobieren hat irgendetwas nicht 100%ig gepasst. Daher hab ich mir getraut, dennoch ins Forum zu posten und somit für redundante Informationen im www zu sorgen.

In diesem Sinne...,
serialize
 
Bei mir gibt die Suche nach der Fehlermeldung keine funktionierenden Lösungsvorschläge... aber die freebsd-ports Mailingliste hat die Lösung:
Code:
# mkdir /usr/local/share/X11/xkb/compiled
 
Der Thread besteht gerade mal aus 2 Posts, in dem keine Lösungsvorschläge erwähnt werden.

Auch keine Begründung warum man nicht das fehlende Verzeichnis anlegen soll. Das ist jedenfalls genau das was die Patches für den Port tun.
 
Entschuldige mal, aber vielleicht solltest du einfach nochmal http://www.freebsd.de/archive/de-bsd-questions/de-bsd-questions.200707/0071.html (davon reden wir doch beide, oder?) durchlesen. Diese Antwort erklärt unmißverständlich, für was eben genau dieses Verzeichnis und der darauf zeigende Link gebraucht werden, und daß man die doch dringend anlegen sollte, um das Problem, das auch der OP hier in diesem Thread hat, zu beheben. Und in der zweiten Antwort bestätigt der dortige OP sogar, daß sein Problem dadurch behoben wurde. Was soll man denn dazu sonst noch erklären?

Aber das eigentlich Interessante ist doch, warum das bei einigen Leuten halt nicht automatisch von den Patches oder von mergebase.sh erledigt wurde. Dazu müßten die Leute, bei denen das passiert, ihre Systemumgebungen und Vorgehensweisen vergleichen. Deshalb auch mein Hinweis, aber anscheinend ist das vergebliche Müh...

EOT von meiner Seite, bringt sowieso nichts.
 
Nein, wir reden nicht von der gleichen Mailingliste. Ich bin nicht auf die Idee gekommen auf Deutsch zu suchen.

Wie auch immer, /var/lib/xkb ist tatsächlich vorhanden, aber der Link sollte doch eigentlich vom Port angelegt werden, denke ich.
 
Genau, betrachten wir doch den Grund für den Portbump:
Code:
- Install a symlink from PREFIX/share/xkb/compiled to /var/lib/compiled.
  Fixes a lot of runtime problems for a lot of people
 
Bei mir hilft das alles leider nichts, habe schon xorg neu installiert und trotzdem funktioniert z.B. die Alt-Gr Taste und Umlaute nicht.
xkeyboard-config-1.0_1 ist installiert, daher sollte es das Problem eigentlich gar nicht geben.
Xorg meldet aber:
Code:
(WW) Couldn't load XKB keymap, falling back to pre-XKB keymap
und setxkbmap bringt den Fehler
Code:
Error loading new keyboard description
/var/lib/xkb existiert:
Code:
tr@/var/lib >ll
total 6
drwxr-xr-x  2 root  wheel  512 Nov  9  2006 dbus
drwxr-xr-x  2 root  wheel  512 Jun  7 09:00 kdm
drwxr-xr-x  2 root  wheel  512 Aug  7 01:14 xkb
/usr/local/share/X11/xkb/compiled existiert auch:
Code:
tr@/usr/local/share/X11/xkb >ll
total 72
drwxr-xr-x   2 root  wheel    512 Aug  7 00:18 compat
-r--r--r--   1 root  wheel    974 Aug  7 00:18 compat.dir
lrwxr-xr-x   1 root  wheel     12 Aug  7 00:18 compiled -> /var/lib/xkb
drwxr-xr-x   4 root  wheel    512 Aug  7 00:18 geometry
-r--r--r--   1 root  wheel   2880 Aug  7 00:18 geometry.dir
drwxr-xr-x   4 root  wheel    512 Aug  7 00:18 keycodes
-r--r--r--   1 root  wheel   2913 Aug  7 00:18 keycodes.dir
drwxr-xr-x   5 root  wheel    512 Aug  7 00:18 keymap
-r--r--r--   1 root  wheel  15034 Aug  7 00:18 keymap.dir
drwxr-xr-x   2 root  wheel    512 Aug  7 00:18 rules
drwxr-xr-x   2 root  wheel    512 Aug  7 00:18 semantics
-r--r--r--   1 root  wheel    134 Aug  7 00:18 semantics.dir
drwxr-xr-x  11 root  wheel   1536 Aug  7 00:18 symbols
-r--r--r--   1 root  wheel  25142 Aug  7 00:18 symbols.dir
drwxr-xr-x   2 root  wheel    512 Aug  7 00:18 types
-r--r--r--   1 root  wheel    624 Aug  7 00:18 types.dir
lrwxr-xr-x   1 root  wheel     22 Aug  7 00:18 xkbcomp -> /usr/local/bin/xkbcomp
Die Sektion in der xorg.conf sieht so aus:
Code:
Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "kbd"
    Option         "XkbLayout" "de"
    Option         "XkbModel" "logicdp"
EndSection

Ausserdem, was die Port-Beschreibung
Code:
- Install a symlink from PREFIX/share/xkb/compiled to /var/lib/compiled.
betrifft, was sollen das fuer Pfade sein?

Bitte um Hilfe.
 
Ausserdem, was die Port-Beschreibung
Code:
- Install a symlink from PREFIX/share/xkb/compiled to /var/lib/compiled.
betrifft, was sollen das fuer Pfade sein?

Bitte um Hilfe.

PREFIX steht per default für /usr/local
wenn der User nicht einen anderen PREFIX verwendet.
(Achtung: Xorg bis inclusive Version 6.9 wurde nach /usr/X11R6 installiert!)


Gruß, Fusselbär
 
/usr/local/share/xkb/compiled ist bei mir /usr/local/share/X11/xkb/compiled/ und /var/lib/compiled ist bei mir /var/lib/xkb.

Der Grund warum ich Probleme mit setxkbmap hatte: /var/tmp war nicht drwxrwxrwt und konnte nicht beschrieben werden. Das ist zwar schlecht, aber eigentlich hätte ich erwartet dass jetzt in /var/lib/xkb geschrieben wird.
 
Code:
/usr/local/share/X11/xkb
Ist auch bei mir der Pfad. ;)
Und compiled ist ein Link im Verzeichnis: /usr/local/share/X11/xkb,
der von /var/lib/xkb kommt.
So funktionieren bei mir die deutschen Umlaute "ä", "ö", "ü" und das "ß"
und noch viel wichtiger, das Pipedingens "|". :cool:

Wegen PREFIX siehe aber auch hier:
http://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/ports-using.html
unter:
4.5.2.1. Vorgabe-Verzeichnisse ändern
Die Variable PREFIX legt das Installations-Verzeichnis fest:
# make PREFIX=/usr/home/example/local install
Per default ist PREFIX für Ports normalerweise /usr/local,
wenn der verwaltende Benutzer der FreeBSD Installation das nicht ändert. ;)


Gruß, Fusselbär
 
Zurück
Oben