Včera jsem si od základu znovu nainstaloval Debian Wheezy s mým vlastním repozitářem KDE 4.10 a musím říct, že pokud to předtím fungovalo dobře, teď to funguje mnohem lépe.
Jediný problém, který jsem měl, byl s KDM, který se zjevně vůbec neinstaloval dobře, protože nechtěl automaticky spouštět, něco, co mě zaujalo, protože jsem provedl stejnou instalaci, se stejnými repozitáři na druhém PC a všechno šlo skvěle .
Při hledání příčiny problému jsem zjistil, že nebyl vytvořen soubor /etc/init.d/kdm , který by měl obsahovat následující:
$ kdc # Should-Stop: console-screen kbd # Default-Start: 5 2 3 4 # Default-Stop: 5 0 1 # Short-Description: X display manager for KDE # Description: KDM manages a collection of X servers, which may být na místním hostiteli nebo na vzdálených počítačích.
### END INIT INFO # /etc/init.d/kdm: spuštění nebo zastavení správce zobrazení X # Skript původně odcizený z balíčku xdm # # description: K Správce zobrazení # # importuje funkce LSB init. / lib / lsb / init-functions # nastavit národní prostředí, pokud [-r / etc / default / locale]; pak. / etc / default / locale export LANG LANGUAGE fi # pro spuštění kdm, i když to není výchozí správce zobrazení, změňte # HEED_DEFAULT_DISPLAY_MANAGER na „false“.
HEED_DEFAULT_DISPLAY_MANAGER = true DEFAULT_DISPLAY_MANAGER_FILE = / etc / X11 / default-display-manager PATH = / bin: / usr / bin: / sbin: / usr / sbin DAEMON = / usr / bin / kdm PIDFILE = / var / run / kdm.pid UPGRADEFILE = / var / run / kdm.upgrade setup_config () {# parametry pro podporu přizpůsobení kdm KDMRC = / etc / kde4 / kdm / kdmrc BACKGROUNDRC = / etc / kde4 / kdm / backgroundrc # pokud je konfigurace změněna kdmtheme nebo jinými nástroji , nedělejte magii, pokud grep -q "^ [[: space:]] * Theme = @@@ ToBeReplacedByDesktopBase @@@" $ {KDMRC}; pak KDMOVERRIDEDIR = / etc / default / kdm.d KDMCFGDIR = / var / run / kdm KDMCFG = $ KDMCFGDIR / kdmrc BACKGROUNDCFG = $ KDMCFGDIR / backgroundrc DEFAULT_KDM_THEME = / kdmx / aiya / aplikace / krim / aplikace / krim / aplikace $ DAEMON || ukončete 4 # odkomentování, pokud chcete, aby automatické přihlášení bylo závislé na úrovni běhu #test "$ runlevel" || {runlevel = `runlevel`; runlevel = $ {runlevel # *}; } #test "$ runlevel" = 0 && ARG = -autolog || ARG = -noautolog # uncomment, pokud chcete ve svém syslogu spoustu ladicích informací #ARG = "$ ARG -debug 4" # používáme alternativní hlavní konfigurační soubor kdm ARG = "$ ARG -config $ KDMCFG" # generujeme kdm konfigurační soubory genkdmconf - v $ KDMCFGDIR 255> / dev / null # přepíšeme zdroje. run-parts seřadí seznam v předvídatelném pořadí, pokud [-d "$ KDMOVERRIDEDIR"]; pak pro část v $ (run-parts --list "$ KDMOVERRIDEDIR" 2> / dev / null || true); C. "$ part" hotovo # aktualizujeme konfigurační soubory kdm (pouze přepsané hodnoty) [-n "$ USEBACKGROUND"] && sed -i "s | ^ # \? UseBackground =. * | UseBackground = $ USEBACKGROUND |" $ KDMCFG [-n "$ BACKGROUNDCFG"] && sed -i "s | ^ # \? BackgroundCfg =. * | BackgroundCfg = $ BACKGROUNDCFG |" $ KDMCFG [-n "$ USETHEME"] && sed -i "s | ^ # \? UseTheme =. * | UseTheme = $ USETHEME |" $ KDMCFG [-n "$ THEME"] && [-e "$ THEME"] && sed -i "s | ^ # \? Theme =. * | Theme = $ THEME |" $ KDMCFG [-n "$ LANGUAGE"] && sed -i "s | ^ # \? Language =. * | Language = $ LANGUAGE |" $ KDMCFG if grep -q "^ [[: space:]] * Wallpaper = stripes.png" $ {BACKGROUNDRC}; pak [-n "$ WALLPAPER"] && [-e "$ WALLPAPER"] && sed -i "s | ^ # \? Wallpaper =. * | Wallpaper =` readlink -f $ WALLPAPER` | " $ BACKGROUNDCFG fi # usetheme je nyní zapnuto „ve výchozím nastavení“, takže si musíme být jisti, že motiv není neplatný ...
sed -i "s|@@@ToBeReplacedByDesktopBase@@@|$DEFAULT_KDM_THEME|" ${KDMCFG} # Přepsání automatického přihlášení je užitečné pro živé prostředí Debianu if [ -n "$AUTOLOGINUSER" ]; then sed -i "s|^#\?AutoLoginEnable=.*|AutoLoginEnable=true|" $KDMCFG sed -i "s|^#\?AutoLoginUser=.*|AutoLoginUser=$AUTOLOGINUSER|" $KDMCFG fi [ -n "$AUTOLOGINDELAY" ] && sed -i "s|^#\?AutoLoginDelay=.*|AutoLoginDelay=$AUTOLOGINDELAY|" $KDMCFG [ -n "$AUTOLOGINAGAIN" ] && sed -i "s|^#\?AutoLoginAgain=.*|AutoLoginAgain=$AUTOLOGINAGAIN|" $KDMCFG [ -n "$AUTOLOGINLOCKED" ] && sed -i "s|^#\?AutoLoginLocked=.*|AutoLoginLocked=$AUTOLOGINLOCKED|" $KDMCFG fi return 0 } # Pokud jsme démona upgradovali, nemůžeme použít argument --exec pro # spuštění a zastavení démona, protože inode se změní. Riziko spočívá v tom, že # v situaci, kdy démon zemřel, jeho pid soubor nebyl vyčištěn a # pod tímto pid nyní běží jiný proces, start-stop-daemon odešle # signály neškodnému procesu. Zdá se však, že se jedná o skrytý případ.
# C'est la vie!
if [-e $ UPGRADEFILE]; pak SSD_ARGS = "- pidfile $ PIDFILE --startas $ DAEMON" else SSD_ARGS = "- pidfile $ PIDFILE --exec $ DAEMON" fi still_running () {if expr "$ (cat / proc / $ DAEMONPID / cmdline 2> / dev / null) ":" $ DAEMON "> / dev / null 2> & 1; potom true else # pokud démon neodstraní svůj vlastní soubor pidfile, budeme rm -f $ PIDFILE $ UPGRADEFILE false fi; } případ "$ 1" na začátku) setup_config if [-e $ DEFAULT_DISPLAY_MANAGER_FILE] && ["$ HEED_DEFAULT_DISPLAY_MANAGER" = "true"] && ["$ (cat $ DEFAULT_DISPLAY_MANAGER_FILE)"! = "$ DAEMON"] potom log_action_msg "Nezačíná se Správce zobrazení K (kdm); není to výchozí správce zobrazení."
else log_daemon_msg "Spuštění programu K Display Manager" "kdm", pokud start-stop-daemon --start --quiet $ SSD_ARGS - $ ARG; potom log_end_msg 0 else log_action_end_msg 1 "již běžící" fi fi ;; restart) /etc/init.d/kdm stop if [-f $ PIDFILE]; pak pokud still_running; poté ukončete 1 fi fi /etc/init.d/kdm start ;; reload) log_action_begin_msg "Znovu načíst konfiguraci Správce zobrazení K ..."
if start-stop-daemon --stop --signal 1 --quiet $ SSD_ARGS; pak log_action_end_msg 0 else log_action_end_msg 1 „kdm neběží“ fi ;; force-reload) /etc/init.d/kdm reload ;; stop) log_action_begin_msg "Zastavení K Display Manager: kdm" pokud [! -f $ PIDFILE]; pak log_action_end_msg 0 "neběží ($ PIDFILE nebyl nalezen)" výstup 0 jinak DAEMONPID = $ (cat $ PIDFILE | tr -d '[: blank:]') KILLCOUNT = 1 pokud [! -e $ UPGRADEFILE]; pak pokud start-stop-daemon --stop --quiet $ SSD_ARGS; pak # dejte obslužnému programu signálu kdm sekundu, aby zachytil dech spánku 1 else log_action_cont_msg "neběží" fi fi zatímco [$ KILLCOUNT -le 5]; udělat if still_running; poté zabijte $ DAEMONPID, jinak rozbijte spánek 1 KILLCOUNT = $ (($ KILLCOUNT + 1)) hotovo, pokud still_running; potom log_action_cont_msg „neodpovídá na TERM signál (pid $ DAEMONPID)“ else rm -f $ UPGRADEFILE fi fi log_action_end_msg 0 ;; status) status_of_proc -p "$ PIDFILE" "$ DAEMON" kdm && exit 0 || opustit $?
;; *) echo "Použití: /etc/init.d/kdm {start|stop|restart|reload|force-reload|status}" exit 1 ;; esac exit 0
Řešením, které jsem tehdy našel, bylo vytvoření vlastního spouštěcího skriptu, který se používá pro KDM nebo jakoukoli jinou aplikaci, kterou chceme spustit, která obsahuje toto:
#! / bin / sh PATH = / sbin: / bin. /lib/init/vars.sh. / lib / lsb / init-functions případ "$ 1" na začátku | "") / usr / bin / kdm ;; stop) # No-op ;; *) echo "Použití: kdm [start | stop | restart]"> & 2 exit 3 ;; že C.
Aby se KDM spustil automaticky, je nutné aktivovat tento skript, takže k tomu používám RCConf . A to je vše. Doporučuji však použít původní