Јуче сам поново инсталирао свој Debian Wheezy од нуле са мојим прилагођеним KDE 4.10 репозиторијумом и морам рећи да ако је раније добро функционисало, сада ради много боље.
Једини проблем који сам имао је био са КДМ-ом, који се очигледно уопште није правилно инсталирао, јер није хтео да се покрене аутоматски, нешто што ми је привукло пажњу јер сам урадио исту инсталацију, са истим репозиторијумом на другом рачунару и све је било ради дивно.
Тражећи узрок проблема, открио сам да није креирана датотека /etc/init.d/kdm , која би требало да садржи следеће:
#!/бин/сх -е ### БЕГИН ИНИТ ИНФО # Обезбеђује: кдм # Обавезно-почетак: $лоцал_фс $ремоте_фс # Обавезно заустављање: $лоцал_фс $ремоте_фс # Требало би да се покрене: екран конзоле кбд ацпид дбус хал крб5- кдц # Схоулд-Стоп: цонсоле-сцреен кбд # Дефаулт-Старт: 2 3 4 5 # Дефаулт-Стоп: 0 1 6 # Кратак опис: Кс дисплаи манагер за КДЕ # Опис: КДМ управља колекцијом Кс сервера, који могу бити на локалном хосту или удаљеним машинама.
### ЕНД ИНИТ ИНФО # /етц/инит.д/кдм: покрените или зауставите Кс дисплаи манагер # Скрипта првобитно украдена из кдм пакета # # опис: К Дисплаи Манагер # # увозите ЛСБ инит функције . /либ/лсб/инит-фунцтионс # подеси локализацију ако [ -р /етц/дефаулт/лоцале]; онда . /етц/дефаулт/лоцале екпорт ЛАНГ ЛАНГУАГЕ фи # да бисте покренули кдм чак и ако није подразумевани менаџер приказа, промените # ХЕЕД_ДЕФАУЛТ_ДИСПЛАИ_МАНАГЕР у "фалсе."
ХЕЕД_ДЕФАУЛТ_ДИСПЛАИ_МАНАГЕР=труе ДЕФАУЛТ_ДИСПЛАИ_МАНАГЕР_ФИЛЕ=/етц/Кс11/дефаулт-дисплаи-манагер ПАТХ=/бин:/уср/бин:/сбин:/уср/сбин ДАЕМОН=/уср/бин/кдм ПИДФИЛЕ=/вар/рун/кдм.пид УПГРАДЕФИЛЕ=/вар/рун/кдм.упграде сетуп_цонфиг () { # параметри који подржавају прилагођавање кдм-а КДМРЦ=/етц/кде4/кдм/кдмрц БАЦКГРОУНДРЦ=/етц/кде4/кдм/бацкгроундрц # ако је конфигурација промењена помоћу кдмтхеме или других алата , не правите магију ако греп -к "^[[:спаце:]]*Тхеме=@@@ТоБеРеплацедБиДесктопБасе@@@" ${КДМРЦ}; затим КДМОВЕРРИДЕДИР=/етц/дефаулт/кдм.д КДМЦФГДИР=/вар/рун/кдм КДМЦФГ=$КДМЦФГДИР/кдмрц БАЦКГРОУНДЦФГ=$КДМЦФГДИР/бацкгроундрц ДЕФАУЛТ_КДМ_ТХЕМЕ=/уср/апп/схаре/кдед4 тест $ДАЕМОН || екит 0 # декоментирајте, ако желите да аутоматско пријављивање зависи од нивоа покретања #тест "$рунлевел" || { рунлевел=`рунлевел`; рунлевел=${рунлевел#* }; } #тест "$рунлевел" = 4 && АРГ=-аутолог || АРГ=-ноаутолог # декоментирајте, ако желите тону информација за отклањање грешака у вашем системском дневнику #АРГ="$АРГ -дебуг 255" # користимо алтернативни кдм мастер конфигурациони фајл АРГ="$АРГ -цонфиг $КДМЦФГ" # генеришемо кдм конфигурационе датотеке генкдмцонф --ин $КДМЦФГДИР 1> /дев/нулл # ми извор замењује. рун-партс сортира листу у предвидљивом редоследу ако [ -д "$КДМОВЕРРИДЕДИР" ]; затим за део у $(рун-партс --лист "$КДМОВЕРРИДЕДИР" 2>/дев/нулл || труе); урадите. "$парт" доне фи # ажурирамо кдм конфигурационе датотеке (само замењене вредности) [ -н "$УСЕБАЦКГРОУНД" ] && сед -и "с|^#\?УсеБацкгроунд=.*|УсеБацкгроунд=$УСЕБАЦКГРОУНД|" $КДМЦФГ [ -н "$БАЦКГРОУНДЦФГ" ] && сед -и "с|^#\?БацкгроундЦфг=.*|БацкгроундЦфг=$БАЦКГРОУНДЦФГ|" $КДМЦФГ [ -н "$УСЕТХЕМЕ" ] && сед -и "с|^#\?УсеТхеме=.*|УсеТхеме=$УСЕТХЕМЕ|" $КДМЦФГ [ -н "$ТХЕМЕ" ] && [ -е "$ТХЕМЕ" ] && сед -и "с|^#\?Тхеме=.*|Тхеме=$ТХЕМЕ|" $КДМЦФГ [ -н "$ЛАНГУАГЕ" ] && сед -и "с|^#\?Лангуаге=.*|Лангуаге=$ЛАНГУАГЕ|" $КДМЦФГ иф греп -к "^[[:спаце:]]*Валлпапер=стрипес.пнг" ${БАЦКГРОУНДРЦ}; затим [ -н "$ВАЛЛПАПЕР" ] && [ -е "$ВАЛЛПАПЕР" ] && сед -и "с|^#\?Валлпапер=.*|Валлпапер=`реадлинк -ф $ВАЛЛПАПЕР`|" $БАЦКГРОУНДЦФГ фи # усетхеме је сада "подразумевано" тако да морамо бити сигурни да тема није неважећа ...
сед -и "с|@@@ЗаменаБиЗаменилаБаЗаРадномПодручјем@@@|$ДЕФАУЛТ_КДМ_ТЕМА|" ${KDMCFG} # преписи аутоматског пријављивања су корисни за живо дебијан окружење if [ -n "$AUTOLOGINUSER" ]; then sed -и "с|^#\?ОмогућавањеАутоЛогинEnable=.*|ОмогућавањеАутоЛогинEnable=true|" $KDMCFG сед -и "с|^#\?ОмогућавањеАутоЛогинEnable=.*|ОмогућавањеАутоЛогинEnable=true|" $KDMCFG fi [ -n "$AUTOLOGINDELAY" ] && сед -и "с|^#\?ОдлагањеАутоЛогинEnable=.*|ОдлагањеАутоЛогинEnable=$AUTOLOGINDELAY|" $KDMCFG [ -n "$AUTOLOGINAGAIN" ] && sed -i "s|^#\?AutoLoginAgain=.*|AutoLoginAgain=$AUTOLOGINAGAIN|" $KDMCFG [ -n "$AUTOLOGINLOCKED" ] && sed -i "s|^#\?AutoLoginLocked=.*|AutoLoginLocked=$AUTOLOGINLOCKED|" $KDMCFG fi return 0 } # Ако смо надоградили демон, не можемо користити аргумент --exec за # покретање-заустављање-демона јер ће се иноде променити. Ризик овде је да # у ситуацији када је демон умро, његов pid фајл није очишћен и # неки други процес сада ради под тим pid-ом, start-stop-daemon ће послати # сигнале невином процесу. Међутим, ово изгледа као спорни случај.
# То је живот!
иф [ -е $УПГРАДЕФИЛЕ ]; затим ССД_АРГС="--пидфиле $ПИДФИЛЕ --стартас $ДАЕМОН" елсе ССД_АРГС="--пидфиле $ПИДФИЛЕ --екец $ДАЕМОН" фи стилл_руннинг () { иф екпр "$(цат /проц/$ДАЕМОНПИД/цмдлине 2> /дев/нулл)" : "$ДАЕМОН" > /дев/нулл 2>&1; онда труе елсе # ако демон не уклони сопствени пидфиле, ми ћемо рм -ф $ПИДФИЛЕ $УПГРАДЕФИЛЕ фалсе фи; } случај "$1" у почетку) сетуп_цонфиг иф [ -е $ДЕФАУЛТ_ДИСПЛАИ_МАНАГЕР_ФИЛЕ ] && [ "$ХЕЕД_ДЕФАУЛТ_ДИСПЛАИ_МАНАГЕР" = "тачно" ] && [ "$(мачка $ДЕФАУЛТ_ДИСПЛАИ_МАНАГЕР_ФИЛЕ)" != "$ДАЕМОН" ]; затим лог_ацтион_мсг "Не покреће се К Дисплаи Манагер (кдм); то није подразумевани менаџер приказа."
елсе лог_даемон_мсг "Покретање К Дисплаи Манагер-а" "кдм" ако старт-стоп-даемон --старт --куиет $ССД_АРГС -- $АРГ ; затим лог_енд_мсг 0 елсе лог_ацтион_енд_мсг 1 "већ ради" фи фи ;; рестарт) /етц/инит.д/кдм стоп иф [ -ф $ПИДФИЛЕ]; онда иф стилл_руннинг; затим изађите из 1 фи /етц/инит.д/кдм старт ;; релоад) лог_ацтион_бегин_мсг "Поновно учитавање К Дисплаи Манагер конфигурације..."
иф старт-стоп-даемон --стоп --сигнал 1 --куиет $ССД_АРГС; затим лог_ацтион_енд_мсг 0 елсе лог_ацтион_енд_мсг 1 "кдм не ради" фи ;; форце-релоад) /етц/инит.д/кдм релоад ;; стоп) лог_ацтион_бегин_мсг "Заустављање К Дисплаи Манагер-а: кдм" ако [ ! -ф $ПИДФИЛЕ ]; онда лог_ацтион_енд_мсг 0 "не ради ($ПИДФИЛЕ није пронађен)" излаз 0 елсе ДАЕМОНПИД=$(мачка $ПИДФИЛЕ | тр -д '[:бланк:]') КИЛЛЦОУНТ=1 ако [ ! -е $УПГРАДЕФИЛЕ ]; онда ако старт-стоп-даемон --стоп --куиет $ССД_АРГС; затим # дајте кдм-овом руковаоцу сигнала секунду да ухвати дах 1 елсе лог_ацтион_цонт_мсг "не ради" фи фи вхиле [ $КИЛЛЦОУНТ -ле 5 ]; до иф стилл_руннинг; затим убијте $ДАЕМОНПИД елсе бреак фи слееп 1 КИЛЛЦОУНТ=$(( $КИЛЛЦОУНТ + 1 )) урађено ако још увек_руннинг; онда лог_ацтион_цонт_мсг "не одговара на ТЕРМ сигнал (пид $ДАЕМОНПИД)" елсе рм -ф $УПГРАДЕФИЛЕ фи фи лог_ацтион_енд_мсг 0 ;; статус) статус_оф_проц -п "$ПИДФИЛЕ" "$ДАЕМОН" кдм && излаз 0 || излаз $?
;; *) echo "Употреба: /etc/init.d/kdm {start|stop|restart|reload|force-reload|status}" exit 1 ;; esac exit 0
Решење које сам тада пронашао је да направим сопствену скрипту за покретање, која се користи за КДМ или било коју другу апликацију коју желимо да покренемо, а која садржи ово:
#! /бин/сх ПАТХ=/сбин:/бин. /либ/инит/варс.сх . /либ/лсб/инит-фунцтионс цасе "$1" у старту|"") /уср/бин/кдм ;; стоп) # Не-оп ;; *) ецхо "Употреба: кдм [старт|стоп|рестарт]" >&2 излаз 3 ;; да је Ц
Сада, да би се KDM аутоматски покренуо, потребно је активирати ту скрипту, па за то користим RCConf . И то је то. Међутим, препоручујем коришћење оригиналне