KDM-Problem (Xsession) Path-Variable nicht korrekt gesetzt

AndreasMeyer

Well-Known Member
Hallo Leute,

Ich habe ein Problem auf einer frischaufgesetzten FreeBSD 6.1-Release-Installation. Beim Starten von KDE 3.5.2 über den KDM meldet ~/.xsession-errors seltsame Fehler:

Code:
usage: mktemp [-d] [-q] [-t prefix] [-u] template ...
       mktemp [-d] [-q] [-u] -t prefix
Missing name for redirect.
kcheckrunning: not found
xset: not found
xset: not found
xset: not found
xset: not found
xsetroot: not found
startkde: Starting up...
kbuildsycoca running...
DCOP Cleaning up dead connections.
kdecore (KLibLoader): WARNING: KLibrary: Undefined symbol "init_kdnssd"

Die Fehler scheinen aus der Datei /usr/local/share/config/kdm/Xsession zu stammen. Diese wurde mit: "genkdmconf --no-old" erzeugt:

Code:
#! /bin/sh
# Xsession - run as user

session=$1

# Note that the respective logout scripts are not sourced.
case $SHELL in
  */bash)
    [ -z "$BASH" ] && exec $SHELL $0 "$@"
    set +o posix
    [ -f /etc/profile ] && . /etc/profile
    if [ -f $HOME/.bash_profile ]; then
      . $HOME/.bash_profile
    elif [ -f $HOME/.bash_login ]; then
      . $HOME/.bash_login
    elif [ -f $HOME/.profile ]; then
      . $HOME/.profile
    fi
    ;;
  */zsh)
    [ -z "$ZSH_NAME" ] && exec $SHELL $0 "$@"
    emulate -R zsh
    [ -d /etc/zsh ] && zdir=/etc/zsh || zdir=/etc
    zhome=${ZDOTDIR:-$HOME}
    # zshenv is always sourced automatically.
    [ -f $zdir/zprofile ] && . $zdir/zprofile
    [ -f $zhome/.zprofile ] && . $zhome/.zprofile
    [ -f $zdir/zlogin ] && . $zdir/zlogin
    [ -f $zhome/.zlogin ] && . $zhome/.zlogin
    ;;
  */csh|*/tcsh)
    # [t]cshrc is always sourced automatically.
    # Note that sourcing csh.login after .cshrc is non-standard.
    xsess_tmp=`mktemp`
    $SHELL -c "if (-f /etc/csh.login) source /etc/csh.login; if (-f ~/.login) source ~/.login; /bin/sh -c export > $xsess_t
mp"
    . $xsess_tmp
    rm -f $xsess_tmp
    ;;
  *) # Plain sh, ksh, and anything we don't know.
    [ -f /etc/profile ] && . /etc/profile
    [ -f $HOME/.profile ] && . $HOME/.profile
    ;;
esac

[ -f /etc/xprofile ] && . /etc/xprofile
[ -f $HOME/.xprofile ] && . $HOME/.xprofile

case $session in
  "")
    exec xmessage -center -buttons OK:0 -default OK "Sorry, $DESKTOP_SESSION is no valid session."
    ;;
  failsafe)
    exec xterm -geometry 80x24-0-0
    ;;
  custom)
    exec $HOME/.xsession
    ;;
  default)
    exec /usr/local/bin/startkde
    ;;
  *)
    eval exec "$session"
    ;;
esac
exec xmessage -center -buttons OK:0 -default OK "Sorry, cannot execute $session. Check $DESKTOP_SESSION.desktop."

Andere Windowsmanager wie FluxBox und Twm lassen sich nicht starten, da sie nicht im Path sind und somit nicht vom KDM gefunden werden.

Weiter lasst sich auch der deutsche acroread nicht aus dem KDE-Menü starten, da dass Skript /usr/X11R6/bin/acroread die scheinbar nicht gesetzte Umgebungsvariable "LANG" abfragt.

Code:
#!/compat/linux/bin/sh
# $FreeBSD: ports/print/acroreadwrapper/files/acroread.in,v 1.2 2006/02/22 06:58:02 hrs Exp $

ADOBE_LANG=`echo "${ADOBE_LANG}" | tr a-z A-Z`

case ${LANG} in
af_*)   : ${ADOBE_LANG:=ENU} ;;
am_*)   : ${ADOBE_LANG:=ENU} ;;
be_*)   : ${ADOBE_LANG:=ENU} ;;
ca_*)   : ${ADOBE_LANG:=ENU} ;;
da_*)   : ${ADOBE_LANG:=DAN} ;;
de_*)   : ${ADOBE_LANG:=DEU} ;;
el_*)   : ${ADOBE_LANG:=ENU} ;;
en_*)   : ${ADOBE_LANG:=ENU} ;;
es_*)   : ${ADOBE_LANG:=ESP} ;;
et_*)   : ${ADOBE_LANG:=ENU} ;;
eu_*)   : ${ADOBE_LANG:=ENU} ;;
fi_*)   : ${ADOBE_LANG:=SUO} ;;
fr_*)   : ${ADOBE_LANG:=FRA} ;;
he_*)   : ${ADOBE_LANG:=ENU} ;;
hi_*)   : ${ADOBE_LANG:=ENU} ;;
hr_*)   : ${ADOBE_LANG:=ENU} ;;
hu_*)   : ${ADOBE_LANG:=ENU} ;;
hy_*)   : ${ADOBE_LANG:=ENU} ;;
is_*)   : ${ADOBE_LANG:=ENU} ;;
it_*)   : ${ADOBE_LANG:=ITA} ;;
ja_*)   : ${ADOBE_LANG:=JPN} ;;
kk_*)   : ${ADOBE_LANG:=ENU} ;;
ko_*)   : ${ADOBE_LANG:=KOR} ;;
la_*)   : ${ADOBE_LANG:=ENU} ;;
lt_*)   : ${ADOBE_LANG:=ENU} ;;
nl_*)   : ${ADOBE_LANG:=NLD} ;;
no_*)   : ${ADOBE_LANG:=NOR} ;;
pl_*)   : ${ADOBE_LANG:=ENU} ;;
pt_*)   : ${ADOBE_LANG:=PTB} ;;
ro_*)   : ${ADOBE_LANG:=ENU} ;;
ru_*)   : ${ADOBE_LANG:=ENU} ;;
sk_*)   : ${ADOBE_LANG:=ENU} ;;
sl_*)   : ${ADOBE_LANG:=ENU} ;;
sr_*)   : ${ADOBE_LANG:=ENU} ;;
sv_*)   : ${ADOBE_LANG:=SVE} ;;
tr_*)   : ${ADOBE_LANG:=ENU} ;;
uk_*)   : ${ADOBE_LANG:=ENU} ;;
zh_CN.*): ${ADOBE_LANG:=CHS} ;;
zh_HK.*): ${ADOBE_LANG:=CHS} ;;
zh_TW.*): ${ADOBE_LANG:=CHT} ;;
*)      : ${ADOBE_LANG:=ENU} ;;
esac

case ${ADOBE_LANG} in
CHS) : ${GDK_USE_XFT:=0}; export GDK_USE_XFT ;;
CHT) : ${GDK_USE_XFT:=0}; export GDK_USE_XFT ;;
JPN) : ${GTK_IM_MODULE:=xim}; export GTK_IM_MODULE ;;
KOR) : ${GDK_USE_XFT:=0}; export GDK_USE_XFT ;;
esac

case $1 in
--install-plugin)
        echo "installing PDF plugin..."
        echo "/usr/X11R6/Adobe/Acrobat7.0/${ADOBE_LANG}/Browser/intellinux/nppdf.so -> /usr/X11R6/lib/browser_linux_plugins
/nppdf.so"
        mkdir -p /..//usr/X11R6/lib/browser_linux_plugins
        ln -s -f /usr/X11R6/Adobe/Acrobat7.0/${ADOBE_LANG}/Browser/intellinux/nppdf.so \
        /..//usr/X11R6/lib/browser_linux_plugins/nppdf.so
        exit 0
;;
--deinstall-plugin)
        echo "deinstalling PDF plugin..."
        rm -f /..//usr/X11R6/lib/browser_linux_plugins/nppdf.so
        rmdir /..//usr/X11R6/lib/browser_linux_plugins 2> /dev/null || true
        exit 0
;;
esac

UNAME_s=Linux; export UNAME_s
if [ -x /usr/X11R6/Adobe/Acrobat7.0/${ADOBE_LANG}/bin/acroread ]; then
        exec /usr/X11R6/Adobe/Acrobat7.0/${ADOBE_LANG}/bin/acroread "$@"
elif [ -x /usr/X11R6/Adobe/Acrobat7.0/ENU/bin/acroread ]; then
        exec /usr/X11R6/Adobe/Acrobat7.0/ENU/bin/acroread "$@"
else
        echo "!fatal: acroread binary not found."
        exit 1
fi

Praktisch alle Programme wurden aus den 6-Stable-Packages installiert. Eine Kurzübersicht über die relevanten Programme:

xorg-server-6.9.0_1
kdebase-3.5.2
kdelibs-3.5.2
acroreadwrapper-0.0.20060221
de-acroread7-7.0.1,1
xterm-211


Weis jemand Rat?
 
# more /etc/login.conf |grep -v # ergibt:

Code:
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 /usr/X11R6/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:\
        :priority=0:\
        :ignoretime@:\
        :umask=022:


standard:\
        :tc=default:
xuser:\
        :tc=default:
staff:\
        :tc=default:
daemon:\
        :tc=default:
news:\
        :tc=default:
dialer:\
        :tc=default:

root:\
        :ignorenologin:\
        :tc=default:

russian|Russian Users Accounts:\
        :charset=KOI8-R:\
        :lang=ru_RU.KOI8-R:\
        :tc=default:

german:German Users Accounts:\
 :charset=UTF-8:\
 :lang=de_CH.UTF-8:\
 :tc=default:

# more /etc/profile |grep -v # ergibt:
Code:
BLOCKSIZE=K; export BLOCKSIZE
FTP_PASSIVE_MODE=YES; export FTP_PASSIVE_MODE
EDITOR=ee; export EDITOR
QMAKESPEC=freebsd-g++; export QMAKESPEC
QTDIR=/usr/X11R6; export QTDIR
PACKAGESITE=ftp://ftp.freebsd.ch/pub/FreeBSD/ports/i386/packages-6-stable/Latest/; export PACKAGESITE
PKG_SITES=ftp://ftp.freebsd.ch/pub/FreeBSD/ports/i386/packages-6-stable/; export PKG_SITES
 
Ja, aber wenn ich in die /usr/local/share/config/kdm/Xsession folgende Zeilen einlege:

Code:
[ -f /etc/xprofile ] && . /etc/xprofile
[ -f $HOME/.xprofile ] && . $HOME/.xprofile

[B]env > /tmp/envSh.txt
set > /tmp/setSh.txt[/B]

case $session in
  "")
    exec xmessage -center -buttons OK:0 -default OK "Sorry, $DESKTOP_SESSION is no valid session."
    ;;

Stimmt der Path definitiv nicht:

# more /tmp/envSh.txt
Code:
DM_CONTROL=/var/run/xdmctl
USER=andy
HOME=/home/andy
XDM_MANAGED=/var/run/xdmctl/xdmctl-:0,maysd,mayfn,sched,method=classic
DESKTOP_SESSION=default
LOGNAME=andy
PATH=/usr/bin:/bin
DISPLAY=:0
SHELL=/bin/csh

# more /tmp/setSh.txt
Code:
DM_CONTROL=/var/run/xdmctl
USER=andy
HOME=/home/andy
XDM_MANAGED=/var/run/xdmctl/xdmctl-:0,maysd,mayfn,sched,method=classic
DESKTOP_SESSION=default
PS1='$ '
OPTIND=1
PS2='> '
LOGNAME=andy
PPID=1450
PATH=/usr/bin:/bin
DISPLAY=:0
SHELL=/bin/csh
IFS='
'
xsess_tmp=''
session=default
 
Habe das Problem gelöst mit dem Hinzufügen von einigen Zeilen in mehreren Konfigurationsdateien:

/etc/profile => Globale Konfigurationsdatei für sh und bash
Code:
LANG=de_DE.UTF-8; export LANG
MM_CHARSET=UTF-8; export MM_CHARSET

/etc/csh.cshrc => Globale Konfigurationsdatei für csh
Code:
setenv LANG de_DE.UTF-8
setenv MM_CHARSET UTF-8

/usr/local/share/config/kdm/Xsession
Code:
. /etc/profile
. ~/.profile

Irgendwie scheint FreeBSD die /etc/login.conf nicht sauber zu unterstützen!?
 
mit dem Adobe machte ich das nach Installation der de_Version so:

/usr/X11R6/bin/acroread alt:
Code:
#!/compat/linux/bin/sh
# $FreeBSD: ports/print/acroreadwrapper/files/acroread.in,v 1.2 2006/02/22 06:58:02 hrs Exp $

ADOBE_LANG=`echo "${ADOBE_LANG}" | tr a-z A-Z`

case ${LANG} in.....

und neu:
Code:
#!/compat/linux/bin/sh
# $FreeBSD: ports/print/acroreadwrapper/files/acroread.in,v 1.2 2006/02/22 06:58:02 hrs Exp $

ADOBE_LANG=DEU

case ${LANG} in....
bin halt kein Profi, doch so funktioniert es auch.
 
Back
Top