LINUX-BG   Адрес : http://www.linux-bg.org
КАКДА Компилираме KDE & QT
От: the_real_maniac
Публикувана на: 3-08-2004
Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=363773315
КАКДА относно KDE, QT и (малко за) Х

    Съдържание.:
    0.Увод
    1."Какво Ви трябва?"
    2.Прединсталационни дилеми
    3.Компилиране:
    3.1.Компилиране на QT
    3.2.Компилиране на KDE


    3.3.Компилиране на KDE с distcc && / || ccache.
    4.Слединсталационно конфигуриране.
    5.Възможни проблеми. / ~ FAQ
    6.Финални думи - "Пролог".

( *! Мисля , че таг-а table трябва да е позволен (в статиите , които се пубкликуват на сайт-а) и моля автора на doc_embed да напише поне документация с възможните параметри/аргументи/опции на тага doc. )


0.Увод:

Здравейте.! Откъде да започна , толкова неща имам да Ви казвам по темата (пиша) , че подреждането на съдържанието на тази статия кое - къде ми се явява голяма задача. Няма да крия радостта си от това , че ще публикувам статия. А тя ще е още по-голяма , ако и (1)хората я разберат, (2) помогне в реална ситуация, (3) намери одобрението на Линукс общността в България. Ще гледам да бъда кратък в увода, но все пак това е увод. Едно от двете места , където автора може да си позволи дълго лиречско отклонение :). Всичко почна от появилият се мой голям ентусиязъм да компилирам KDE от сорс код и то да си направя deb пакети. След това си викам защо да не взема и да напиша едно HOWTO. По време на процеса на борба с KDE & QT реших да изпробвам и приложа в реални условия distcc & ccache ... и се почна. Важно е да уточним, че преди това нито бях ползвал distcc , нито ccache , камоли компилирал нещо ГОЛЯМО от сорс (код) -> т.е не бях компилирал досега KDE и QT. Но преди да започна искам да Ви предупредя , че статията е писана в един вид свободен стил и също така да Ви предупредя СЪВСЕМ СЕРИОЗНО (!!!):


Автора на тази статия не носи (или поема) никаква отговорност за нанесени щети ( били те физически - загуба на информация, данни; или духовни - психически травми вследствие компилиране на KDE и/или QT; ), използването на примерите показани (описани) в статият е изцяло на Ваша отговорност .!

Забележка: Вие виждате линк от сорта linux-bg.org с текст и си мислите , че това ще ви заведе на http://www.linux-bg.org .? Грешите ! Аз упоменавам къде ще намерите информацията , а линк-а води директно там , където ще получите необходимата информация ;) От горния линк може да свалите някоя от хоставаните на linux-bg.org дистрибуции.




1."Какво Ви трябва ?"

Какво Ви трябва ? -> ами зависи какво искате да направите. Тук ще Ви кажа какво Ви трябва , къде да го намерите и как да го вземете. А също така ще поговорим и защо нещата са така , както са ;)

Сорс кода на QT можете да вземете от trolltech.com, както и от огледалата по света, А също така може да намерете и на d.linux-bg.org. Съмнявам се просто ей така да тръгнете да сменяте QT , всмисъл KDE има строги изискваня каква да е версията на QT, но може да сте разработчик и тогава Вие не се интересувата толкова много от това , коя версия Ви е KDE. Може да имате повече от 1 версия на QT без проблем стига да сте оказали правилно пътищата. Както знаете - предполагам; KDE е базирана на QT библиотеките, изграждането на прозорците се управлява от мениджера на прозорци ,но когато се изгражда KDE приложение , то то използва не стандартните Xlib библиотеки , ами QT библиотеките. Те осигуряват така наречените "прозоречни функции". Ето защо трябва да се спазват изискванята на KDE версия Х за версията (Y) на QT, защото иначе не се знае как ще работи KDE, ако въобще се стартира. (Макар и в по-новите версии на QT да се очаква подръжка на по-старите може да се е променило нещо в реализацията или извикването на дадена функция .! Затова обръщайте внимание на страницата (на КДЕ) за зависимостите на КДЕ версията, която Ви интересува.)

Цитат + мой превод от XFree86 HOWTO

"Това, което вдействителност Вие виждата на екрана е резултат от различни компоненти - всички работещи заедно: Операционна Система , Х , Менъджер на Прозорци и (може би/незъдължително) допълнително Десктоп Среда като Гном или КДЕ. Тези всички неща са "plug and paly" компоненти, което означава , че Вие можете да сменята индивидуални компоненти без да пипате / променяте другите компоненти."

Или леко текстово - графично обяснение :D

Предполагам сега може да си представите и сами ситуацията при Гном (на мястото на KDE приложение имаме Gnome приложение и на мястото на QTlib имаме GTK(+) :) ). Сега да продължим нататък.

Вие искате последното (възможно за достъпване) КДЕ или да си сложите по-нова версия на КДЕ чрез компилиране на сорс код(а на КДЕ). Имате няколко варианта за достъпване на КДЕ:

  1. Последния код на КДЕ може да достъпите от / чрез CVS и впоследствие може да ъпдейтвате този код - т.е не се налага да теглите на ново целия CVS , ами се записват само промените ;). Засъжеление не съм запознат (от гледна точка на това, че ) - нямам опит, затова ще Ви препратя към kde.org. Там хората са написали как да изтеглите и в послествие да си обновявате вашето CVS директория на КДЕ.

  2. Другия вариант - сорс код-а на KDE Stable/Ustable в TARBALLS вариант (file.tar.bz2). Това е и предпочитания от мен вариант. 'Защо ?' Ами защото този вариант Ви предлага: основните компоненти, модули в добре спретнати архиви (tar.bz2 - аз лично свалям по-възможност винаги в този вариатн), така да го кажем stable сорс кода на unstable release :) и още няколко неща , но това са по-важните ... KDE3.3 Beta1 (3.2.91) може да намерите на този link -> ftp://download.kde.org или от linux-bg.org тук.

  3. Последния вариант е бинарния вариант - това е вече компилиран сорс код на КДЕ - предимно опитмизиран или за i386 , i586 или 686. Тези , които почти веднага могат да се намерят след излизането на KDE beta/unstable са бинарни файлове за Suse. Споменавам го за информация и изчерпателност , иначе мисля Ви е ясно няма как да компилирате бинарен файл :wacko: .

    За потребители на Suse: Има бинарни пакети за Suse , но те могат да се изтеглят от kde.org или от някой друг mirror (но не и от българските мрежи , доколкото знам). Харесвате си версия на КДЕ и вътре ще намерите директория Suse -> влизате в нея, после теглите. Примерен линк за KDE3.3 Beta1.

    За потребители на Debian: 1.QT3.3.2 binary ще намерите в experimental часта от проекта на Дебиан. 2.Аз до една седмица се надявам да съм качил и бинаритата на KDE3.3 Beta1 оптимизирани за i586 - само следните модули (първите 3 не са модули , те са задължителни , но затова по-надолу) arts, kdelibs, kdebase, kdemultimedia, kdegraphics, kdenetwork, kdeartwork + kde-i18n-bg. Още не са готови , а трябва и да ги изтествам като станат, така че този вариант е още в разработка , но да знаете , че са в разработка :) Иначе поддържам връзка с човек / потребтел на / от пощенския списък на debian.org , който вече би трябвало да е качил свойте unofficial binaries of KDE CVS (head) и за повече информация просто потърсете в kde-devel mailing list, но мисля Ви е ясно ,че те ще бъдат извън Българските мрежи (BG PEERING).

    Добавете следния ред във вашия /etc/apt/sources.list за experimental:

    deb http://debian.ludost.net/debian ../project/experimental/ main

    За потребителите на Slackware & Gentoo: ами , ако Вие ползвате една от тези две (по-известни) дистибуции ориентирани към изграждането на система изцяло by hand / from source , то ще се зарадвате на качения source на KDE3.3 Beta1 (TARBALLS -> tar.bz2 format). А и сигурно вече сте компилирали ..., така че ми остава да Ви кажа само - ще се радвам, ако аз Ви кажа нещо ново и приятно компилиране :)

Тъй като повечето , включително и аз сме с модемна връзка към чужбина или казано по-правилно това нещо наречено Интернет , а не Интранета, който ни продават( но за под 50-60лв е така :| ); аз споделям с вас моето сваляне (с 4кбайта/с за около 12 часа - не съм сигурен повече или по-малко; ) на целия KDE 3.3 beta1 (3.2.91) source в TARBALL(S) вариант. Също така той нямаше да е достъпен за вас, ако не бяха linux-bg.org (marla.ludost.net (ludost.net)), които предоставиха дисково пространство , а и също така исках да е на linux-bg.org , а не на някой BG free file server, поради ????? войни м/у Bulgarians ISPs -> no comment.

Връзка: ТУК в TARBALLS формат (tar.bz2)

Сорс кода на kde3.2.3 отново в TARBALL(S) вариант намерих на data.bg (, която почнах отново да "виждам" от няколко дена насам :? ).

Забележка: От локализациите съм качил само kde-i18n-bg only (!), защото целия i18n е 170мб и все пак няма смисъл да го качвам , ако някой иска да си дръпне другите локализации , то може да го направи от kde.org - по около 3МБ са. Като трябва да си изтеглите локализация за версията на КДЕ , която ще си инсталирате/компилирате/.


2.Прединсталационни дилеми.

Сега пред вас стoят два въпроса: Ще ползвате само новото КДЕ или искате да имате две версии на КДЕ и последващ от решението Ви още един въпрос.

И така ... Реши ли сте да си слагате ново КДЕ. Това добре ,но искате ли да запазите и старото си и да избирате кое KDE да ползвате или искате само една версия на КДЕ. Преди да ми(си) отговорите трябва да Ви предупредя , че ако новата версия на КДЕ, която искате да си сложите е beta/unstable по-добре да си оставите и старото KDE ! Но все пак това е Ваш избор. Ако искате да имате само едно KDE следващите редове не са за Вас - продължете към Секция 3.
Вие сте решили да имате две версии на KDE. Ами възможно е, но е малко играчка да се направи. Най-важното сега е да разберете , че има риск новото КДЕ (макар и рядко !) да не разчита правилно конфигурационните файлове създадени от старото Ви КДЕ и когато си пускате новата версия на КДЕ ще стане малко (по количество) боза (каша). (Аз лично необичам боза , от което и хич не обичам работи като боза (, от които става боза)). Поради това и от KDE , и аз Ви съветвам (защото го изпитах),когато компилирате сорс кода на KDE от CVS или компилирате unstable версия на KDE да си създадете отделен user , с който ще компилирате и ползвате новото KDE (unstable / from CVS) .! Разбира се това е Линукс ( вслучея КДЕ, но :) ) и винаги има и още един вариант , както беше казал някой. Този втори вариант е да укажете системната променлива KDEHOME,когато ще ползвате новото си КДЕ; различно от .kde (по подрабиране KDE записва свойте конфигурационни файлове в ~/.kde). Ако предпочитате този - 2-рият; вариант трябва , когато искате да ползвате новото си КДЕ да зададете тази променлива, но затова по-подробно в Секция 4-та.
Как да направите варианта с отделен потребител ще Ви обясня сега ..., НО (!!!) с това не приключва въпроса по конфигуриране на това действие и избягване на такава/тази ситуация.!

  1. Създаване на нов потребител. От KDE предпочитат kdevuser , аз лично user-tester. И примерно , ако потребителя се казва foo , създаваме потребител foo-tester като ще кажем той да е в групата на foo (по подразбиране отново foo (username)), така че да можете с вашият тестващ акаунт да използвате вашата home директория и файлове в нея - на вашият оригинален акаунт :) ( Какво да Ви кажа - multiuser based OS :P ) .:

    $su root
     password: //въвеждате вашата парола
     #adduser --ingroup foo foo-tester
     
     // пропуснете т.2 и т.3 ;)
  2. или ако вече имате друг потребител , който си ползвате за опити и т.н:

    #moduser -G foo user-for-tests // НЕ МАЛКО G - g ! Има разлика .!
  3. оправяме правта на home dir. на вашият тестов потребител:

    #chown user-for-tests:foo -R /home/user-for-tests 
     // КАТО ВНИМАВАЙТЕ КАК ПОЛЗВАТЕ -R в комбинация с '*' .!

  • за да може и да пишете в/у вашата original home directory от вашият тестов акaунт

    #chown 770 -R /home/foo

Tова е ... за сега , след инсталацията на КДЕ трябва да се направят още 2-3 настройки, но те зависят отново от вашия избор, но неможе да ги направим сега, защото не са за / в / този етап на инсталиране на новото Ви КДЕ ;). Ще продължим тази тема в Секция 4-та.


3.Компилиране.:

Тук - логично; ще Ви обясня как да извършите самото компилиране на QT и / или KDE. Първо подред е компилирането на QT , тъй като KDE както вече обясних е свързано с QT библиотеките. След това ще говоря и за компилиране на софтуер , използвайки повече от една машини и най-вече ще наблегна на това как да компилирате КДЕ на повече от една машини (, които са свързани в мрежа - независимо каква :) ).


3.1.Компилиране на QT.

Компилирането на QT не е голяма философия, но изисква малко повече внимание. Като препоръка за инсталиране на QT е следното: взимате сорс код-а на QT , разаривирате го там , където искате да бъдат инсталирани QT библиотеките и следвате процедурата: ./configure ; make , и това е. Т.е там където Ви е сорс кода на QT , там Ви е и реалната инсталация. Това се препоръчва от QT. Аз лично , обаче реших да си инсталирам qt в /usr/local/qt-version, където version е съответнтата версия. Как може да направите това ? Лесно , но преди това. В повечето случеи при инсталиране на софтуер от сорс код пускате или просто:
./configure
или
./configure --плюс-някой-път=/към/някоя/библиотека .
Обаче конфигурирането на QT е маааалко по-сложничко. КДЕ има нужда от някои възможности на QT библиотеките като такива и ако Вие не сте ги компилирали в необходимата форма - с необходимите свойста/възможности (звучи малко като урок по Химия, но ) КДЕ няма да работи както трябва , с пълни възможности или няма да работи въобще. Затова , ако не сте запознат (и разбирате) ./configure --help по-добре се придържайте към следната конфигурация (защото QT наистина има възможност за конфигуриране на голям брои опции).

  1. Какво предлагат KDE:

    ./configure -system-zlib -qt-gif -system-libpng \
     -system-libjpeg -plugin-imgfmt-mng -thread -no-stl \
     -no-xinerama -no-g++-exceptions
  2. Какъв е минимума:

    ./configure -qt-gif -thread -no-exceptions
  3. Как да инсталирате QT в различна директория от тази , в която Ви е сорс кода:

    ./configure someoptions --prefix=/usr/local/qt-3.3.2

    След, което вече имате на разположение и make install , което ще създаде посочената директория , вслучея /usr/local/qt-3.3.2 и ще копира там вече компилираните QT библиотеки. Замислих се , че някой може да се обърка , затова е следващия пример - минимално конфигуриране за работещо КДЕ + инсталиране на QT в определена (друга) директория.

    ./configure -qt-gif -thread -no-exceptions --prefix=/user/local/qt-3.3.2
  4. Една интересна опция е '-fast'. Вижте ./configure --help на QT. ;)

  5. Ако искате да промените нещо - т.е да преконфигурарирате QT се съветва да изпозлватре 'make distclean' (което би трябвало да върне сорс кода в равнище като току що разархивиран) , но може да изпозлвате и стандартното 'make clean'. Ако ще правите бинарен пакет или нещо важно със сорс кода ВИНАГИ използвайте 'make distclean'.!

Ако само искахте да си обновите QT библиотеките продължете към Секция 4-та , точка 1 отнасяща се до QT, ако обаче искате и да компилирате КДЕ след това се върнете тук и продължете нататък.


3.2. Компилиране на KDE.

Това сякаш е лесната и забавна част. Единственото може би неприятно е , че ще Ви се наложи (най-вероятно) да инсталирате доста библиотеки във вариант за 'разработване' - на хедърни файлове или така наречението dev libs. Най-честно имената им са от сорта: nameofthelibrary-dev. Примерно KDE изисква libname библиотеката и ако Вие досега не сте компилирали софтуер нуждаещ сте от тази библиотека или сте ползвали КДЕ от бинарни пакети , то Вие имате тази библиотека , защото тя е необходима на КДЕ , но във бинарен вариант - shared library - споделена / шерната библиотека. А не във вариант за разработване (компилиране , модифициране и т.н) - т.н. dev вариант. За ваша радост ./configure скрипта на KDE е много добре направен и Ви казва какво Ви липства , къда да го намерите и за какво Ви е , можете ли без него , ако да какво ще загубите от възможностите на КДЕ :). Честно казано configure скриптовете на КДЕ3.3 Бета1 ми спестиха много време , защото наведнъж ми изписаха какво нямам и т.н, докато configure на КДЕ3.2.3 на час по лъжичка: "./configure - нямаш това , ./configure - нямаш това , ..." и така докато не набавих всичко необходимо , докато KDE3.3: "./configure - нямаш това , това и това."

;)
Предполагам това ще са библиотеките , които няма да имате,
 ако не сте инсталирали dev библиотеки, но може да има и още 
 (най-вероятно) - най-добре е да пуснете ./configure и да видите ;) .:
 
 libcupsys2-dev
 libart-2.0-dev
 libxslt-dev
 libssl-dev
 libbz2-dev
 libaspell-dev
 libart-dev
 libpcre3-dev
 lesstif2-dev
 libsmbclient-dev
 libpng12-dev
 libpng3-dev
 
 //имената тук са на Дебиан пакети , но те почти не се различават
 //с действителните имена на библиотеките ;)
 //
 //Всмисъл libpn12-dev....deb при rpm ще бъде разлино
 //libpng-version-RELEASE-arch (libpng-1.2-1-i386.rpm)
 //
 //Идеята е , че искам да Ви дам ориентир ;) поне за тези,
 //които със сигурност няма да имате , ако не сте
 //качвали dev libraries...

Същинското комплиране иначе е лесно - след configure следва make и ако сте задали --prefix=/dir/where/tobe/kde -> make install. Всъщност вслучея е задължително да определлите --prefix , като за всички КДЕ части той трябва да е един и същ ! Пример:

$$cd /home/kdevuser/KDE-3.3-beta1/build/
 // предполага се , че вече имате разархивирани съответните основните КДЕ части - arts,kdelibs,kdebase
 $cd arts* // почвам от arts
 $./configure --prefix /opt/kde-3.3-beta1
 // + (естествено ако имате) вашии опции 
 $make
 $su root -c make install
 //въвеждате паролата на root ((the) superuser)
 // готово - сега вече имате arts , оставят kdelibs и kdebase

!!! междувпрочем забравих да Ви кажа , че във всяка една директория от КДЕ частите има два файла README & INSTALL. Метнете им по един бърз поглед. Може да намерите много полезна информация - като например в README файла ще намерите програмите/нещата , които съдържа дадената кде част (или модул). ;) !!!

ПРЕДИ ДА ЗАПОЧНЕТЕ ! Трябва да знаете следните 3 неща: Всички части на КДЕ , освен arts, kdelibs и kdebase са допълнителни модули, като kdeaddons и i18n са по-специални модули. За да имате минимално работеща КДЕ десктоп система е необходимо да компилирате "най-малко" (и препоръчително в този РЕД !): arts, kdelibs, kdebase .! i18n е модула съдържащ локализациите за КДЕ. Т.е КДЕ да Ви е на родния език - вслучея Български. kdeaddons е специален модул , защото за функциоирането на приложенията в него е необходимо присъствието на всички други модули - той се инсталира последен. Макар че е възможно и да компилирате само определени части / приложения от даден модул. Влизате в директорията на дадения модул. Пускате ./configure със съответните опции и --prefix=/kdedir , след това влизате в директорията на определеното приложение и изпълнявате make , make install. Както виждате нищо трудно :) Но все пак ще Ви дам пример:

$cd /home/kdevuser/KDE-3.3-beta1/build/
 // предполага се , че вече имате разархивирани съответните КДЕ модули , които искате да инсталирате
 $cd kdeutils*
 $./configure --prefix /opt/kde-3.3-beta1 // + (естествено ако имате) вашии опции 
 $cd kcalc
 $make
 $su root -c make install
 //въвеждате паролата на root ((the) superuser)
 // готово сега си имате KDE calculater без другите неща от kdetuils :))

Сега Ви остава да си компилирате същинското КДЕ и да преминете към Секция 4-та , НО ако сте объркан от какво точно трябва да направите , какви команди и в каква последователност да изпълните погледнете Въпрос 1 във Секция-5-та FAQ.


За *BSD потребители.:

Ами засъжеление не съм ползвал още такъв тип операционна система. Лично за мен - макар и малкото ми познания за *BSD; BSD ми се вижда като един друг път имащ свойте + и - , но за да минеш по-този път преди това трябва да минеш по пътя на Линукс и да се запознаеш с основите на Unix. (В интерес на истината :D скоро мисля да пробвам FreeBSD - просто ми е направила най-голямо впечатление от всички *BSD). Та да си дойда на думата - немога да Ви дам Практически съвети и обяснения, но разучих в основни части въпроса с компилирането на KDE под FreeBSD и ... според така, както аз виждам нещата:

Следвайки мойте указания ,които не се различават много от тези в ръковдоството на KDE за компилиране на КДЕ, просто защото метода е един - да компилирате kde - configure, make, ...; би трябвало успешно да компилирате КДЕ на вашата *BSD система и то да върви (на всичкото отгоре :D). Трябват Ви C/C++ компилатор - 99.9% имате такъв, необходимите библиотеки - в това число и QT , и накрая GNU make - make "в" BSD е ... как е по-правилно да се каже , съвместим , почти еднакъв с GNU make - така че нямате проблем с компилирането на КДЕ, но някъде се упоменава (не говоря за КДЕ в момента) изрично , че трябва да имате(ползвате при компилирането) GNU make ;). Макар че сигурно различните *BSD ползват и различни версии make (като разработчици - т.е може някоe *BSDда ползва и точно GNU make). Предварително извинете за неточности. Ако някой иска да ме поправи някъде - да напише коментар към статията, да прати е-мейл, да пише във форума -> с радост ще оправя грешките, ще вмъкна правилната част и предварително му / Ви изказвам благодарности. ;)

Ако искате да го направите по FreeBSD-ски (май така трябва да стане думата с окончание / или приставка е по-правилно / на -ски ) -> просто погледнете FreeBSD Handbook , направи ми впечатление простотата на компилиране. Бинарно -> инсталира се пакет , а иначе сорс код-а се издърпва чрез Ports( трябва човек да се запознае с (Ports системата на (Free))*BSD ), след това просто make install clean и се компилира (+ необходимите зависимости) :) Сигурно само изглежда лесно на пръв поглед, но ето Ви няколко полезни линк-а - кратки са , прочетете ги , дори и да нямате много време (!).:
http://freebsd.kde.org/instructions.php
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x11-wm.html
Надявам се да съм Ви помогнал поне малко ;) btw: Кажете дали съм прав относно стандартния метод за компилиране на КДЕ в/у BSD система - би трябвало всичко да е ОК , следвайки логиката и според това, което аз знам :) Успех !


3.3 Компилиране на KDE с distcc && / || ccache.

simple XOR
if( distcc && ccahce || (distcc || ccache) ) printf("Now I/We will make it faster :) .!\n");
Coool :D *знам че cool се пише с две О-та ;) и това горе , май се нарича (направих) XOR (ако не се бъркам разбира се)

Компилирането на КДЕ отнема доста време , дори и на една бърза машина , дори и само на основните части на КДЕ (arts, kdelibs, kdebase). А и повечето от вас ползват бинарни пакети и системата Ви не е оптимизирана за вашата система, освен ядрото (може би), така че няма да е лошо да впрегнете повече машини. Не говоря за процесори , ами за машини (компютри). Дори и тези машини (компютри) да са (от) различни архитектури .! Как може да постигнете това - с помоща на distcc. Освен това може и да улесните доста вашата машина (а и (ако има) другите), да си спестите доста време при рекомпилиране и да видите още от възможностите на open & free software , в частност Linux :D . Говоря за програма наречена ccache. Тази програма има за цел да кешира компилиран код и при прекомпилиране на дадена програма/ същия този сорс код/ се използва създадения кеш (ако е използвана ccache), вместо отново да бъде компилиран същия (този) сорс код :). Хитро , нали (?) - макар и простичко , но гениялните неща са най-често простите** неща. Преди да продължите надолу Ви моля да прочетете тази - макар и кратка, НО много съдържателна (!); статия -> linux-bg.org/статии/съвети/трикове :) .

** - не в смисъл на глупави ! Мисля , че нямаше нужда от това утoчнение , но все пак, за да няма двусмислия и т.н. ... ;)

Трябва да отбележа , че инсталирането и конфигурирането , и на distcc, и на ccache е много лесно. А вършат огромна работа. И както самия създател на distcc казва - перефразирам: "distcc си показва силата , когато компилирате голям проект". Такъв е КДЕ и при компилиране с помоща на distcc никакъв проблем ! Но ако искаме да използваме и distcc , и ccache (една жестока комбинация :)) ) при компилиране на КДЕ - по-точно на kdebase, и още по-точно проблема е свързан с libtool; ще се сблъскате с един проблем ... На какво се дължи този проблем ?. Отне ми доста време , докато открия този добър отговор (междудругото), защото във FAQ-то на distcc е обърнато внимание на проблема, но е казно че при съвместа употреба и на distcc, и на ccache трябва да маскира и ccache, ама/но как - никой не казва. И объркването идва от там , че няма почти нищо общо с метода , по-който се маскира (само) distcc.Оригиналното обяснение distcc mailing list. На български обяснението на проблема звучи така:

>>"Би трябвало да можете просто да свържете distcc и ccache чрез CC='ccache distcc gcc'"
 > "Да , но когато правя така при компилиране с libtool имам проблеми, защото libtool преобразува това в:
 >
 > --mode=compile ccache distcc gcc -DHAVE_CONFIG_H ...
 > 
 > вместо в
 > 
 > --mode=gcc -DHAVE_CONFIG_H
 >
 >..."
 
 
 // тук има едни кратък отговор на Мартин Пул (създателя на distcc),
 // но по-подробно описание за решение на проблема има в друг e-mail ;)
 // вижте по-долу ...

Oще един e-mail от distcc mailing list , освен него вижте и следващия към същата тема (topic, subject) .!

Решението:
 
 Вместо маскиране на distcc посредством
 символична връзка ...
 
 пример за gcc:
 
 #mkdir -p /usr/lib/distcc/bin
 #cd /usr/lib/distcc/bin
 #ln -s ../../../bin/distcc gcc
 #echo "export PATH=/usr/lib/distcc/bin:$PATH" >> /etc/profile
 
 и когато се вика gcc дефакто ще се вика distcc ;)
 // дефакто аз нужда за това невиждам , защото CC=distcc
 // съдържа точно един стригн/низ/дума , макар че при нужда
 // от маскиране само на distcc това е по-лесното решение 
 // вместо аналог на долното , но само за distcc.
 
 създавате едни простичък скрипт :)
 
 #echo "#!/bin/bash" > gcc
 #echo "exec /usr/bin/ccache /usr/bin/distcc /usr/bin/gcc $@" >> gcc
 
 и получавате ccache , distcc + gcc с безпроблемно компилиране на КДЕ :))
 Направо красота ;)
 
 За другите компилатори правите същото ... 
 Например
 
 #echo "#!/bin/bash" > g++
 #echo "exec /usr/bin/ccache /usr/bin/distcc /usr/bin/g++ $@" >> g++

На Вас сега сигурно Ви изглежда елементарно , но аз бая време си бих главата и се лутах из Google и майлинг листата на distcc ... Половината от времето по моя вина, но то винаги като разбереш какъв е бил проблема всичко ти изглежда толкова лесно, че се чудиш защо не си се оправил за няколко минути. ;)
Други няколко съвета да Ви дам и малко пояснения , които аз разбрах докато се борех с distcc :)

  1. DISTCC_HOSTS="hostname/number-of-jobs ...", т.е localhost с 5 работи е mypc/5 , а не mypc/4 , както някои хора са се заблудили (т.е не се брои от 0 нагоре :D).

  2. distcc(d) сървъра и компилирането започнато се влиае единствено и само от DISTCC_HOSTS указано на него. Не е задължително , за да участват и други компютри , и на тях да указвате същата DISTCC_HOSTS променлива. Тя влиае само , ако дадената машина ще работи като distcc(d) съръвр ;)

  3. Ако искате да участва и машината , от която дефакто ще започне компилирането / която ще е "сървъра distcc(d)" / непременно я описвайте като localhost в DISTCC_HOSTS="..." .! Защото - поне при мен; като пробвах да я опиша с 'hostname-a' й не получих очакваните резултати ... Примерно: DISTCC="mypc/3 otherpc/2" не работи коректно.

  4. определено прочетете man distcc , ccache , distccd :D

  5. Проверявайте дали distccd сървъра работи и е пуснат правилно ;) Аз лично намирам за напълно приемливо за постоянна употреба примера на Peio от неговата статия: " distcc --daemon --user nobody --allow 192.168.1.0/24 " .!

  6. При проблем с компилиране на известен или голям проект непременно погледнете в distcc FAQ - там са описани 99% от всичките често срещаните проблеми (убедих се), каквато е и ролята на едно FAQ , но това определено си изпълнява целите , само няма как отново да не спомена съвсем краткото описване на проблема с libtool(KDE) & distcc + ccache.


Приятно , леко и бързо компилиране .! Сега остава само да довършим конфигурирането на инсталацията на КДЕ , за да може (то) да работи.


4. Слединсталационно конфигуриране.

Какво трябва да укажеме в/на системата след като компилираме QT и / или KDE , за да можете да си ползвате новото KDE или новото QT. (опитайте сами да интерпретирате тази логическа мистерия - хахаха -> QT и / или KDE).
~/ = /home/user -> т.е за потребител foo , ~/ = /home/foo !

1. Настройка на инсталацията на QT: след компилирането - make; или , ако сте указали --prefix=someqtdir - make install, Вие трябва да посочите пътищата за/към QT библиотеките. Местата са две.

Първото място е /etc/profile за глобално указване на пътищата при ползване на bash обвивката - т.е за всеки потребител не ползващ специфични някоя специфична обвивка. Ако ще ползвате новото КДЕ само с определен потребител въведете следните редове във файла ~/.profile (!), ако ли не - т.е всички потребители да ползват новото КДЕ, то ги въведете във /etc/profile (!). Кои са основните пътища , които трябва да определите/посочите.:
// отваряте съответния файл profile (!)
 // и за --prefix=/usr/local/qt-3.3.2
 // пишете следното
 
 QTDIR=/usr/local/qt-3.3.2
 PATH=$QTDIR/bin:&PATH
 MANPATH=$QTDIR/doc/man:$MANPATH
 LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
 
 export QTDIR
 export PATH
 export MANPATH
 export LD_LIBRARY_PATH

Второто място е файла /etc/ld.so.conf. В този файл се указват списъка с директориите , където системата Ви може да намери споделените библиотеки. В интерес на истината немога да Ви кажа на 100% добавете QTDIR/lib тук. Защо ? Ами защото едни казват 'Да', други казват 'Не' ... Някои потребителите казват 'трябва', други 'нетрябва'. Аз си пробвах и така , и иначе ... Отговора е неочудващ - все тая е :DD Поне за моя Debian ;) Но поглеждайки фактите нищо няма да навреди да я опшите и там , освен ако обаче не се опитавате да имате две версии на КДЕ - тогава не пипайте този файл ! ;)


2. Настройки на инсталацията на KDE: след компилирането - make install (задължително трябваше да определите --prefix при конфигурирането на различните KDE части .!) Вие трябва да укажете пътищата за/към КДЕ. Ако ще ползвате новото КДЕ само с определен потребител въведете следните редове във файла ~/.profile (!), ако ли не - т.е всички потребители да ползват новото КДЕ, то ги въведете във /etc/profile (!).
//отваряте съответния файл profile (!)
 // и за --prefix=/opt/kde-3.3-beta1
 // пишете следнто
 
 KDEDIR=/opt/kde-3.3-beta1
 KDEDIRS=$KDEDIR
 PATH=$KDEDIR/bin:$PATH
 LD_LIBRARY_PATH=$KDEDIR/lib:$LD_LIBRARY_PATH
 
 #долния ред , само ако искате всяко КДЕ
 #да си има отделна директория за настройките си !
 #иначе не го пишете .!
 KDEHOME=.kde-3.3-beta1
 
 export KDEDIR
 export KDEDIRS
 export PATH
 export LD_LIBRARY_PATH
 export KDEHOME


Искате да стартирате , обаче старото КДЕ, но с вашия потребител , а не с определеният потребител. Просто трябва да възстановите пътищата - заменете старите стойности , ако е имало такива или просто оставете празни.:
// направете си файл например old-kde.sh
 // със следното съдържание
 // (има и по-интелигенто решение, но важното е че:
 // 1 - това работи - "Работи ли ? -> Не го пипай ! :D
 // 2 - най-простичкото и механизам/начин на действие)
 
 #!/bin/sh
 
 export KDEDIR=
 export KDEDIRS=
 export QTDIR=
 export PATH=(вземете стойността от /etc/profile , ако има такава)
 export LD_LIBRARY_PATH=(вземете стойността от /etc/profile , ако има такава)
 export MANPATH=(вземете стойността от /etc/profile , ако има такава)
 export KDEHOME=(старата стоност, ако е имало такава или празно)
 
 startx

Ако пък искате да ползвате старото КДЕ по подразбиране,а новото когато искате , нещата предназначени в по-горния пример за съответния файл profile ги въведете във файл new-kde.sh и просто изпълнете sh new-kde.sh, когато искате да стартирате новото си КДЕ.

Лично за мен - или всички ползват новото КДЕ , или само определен потребител ползва новото КДЕ. Също така ако сте си компилирали и QT и КДЕ => имате да указвате пътища и за QT, и за KDE може да обедините пътищата на КДЕ, и QT за една променлива , вместо да ги пишете едно след друго ;) Вижте Секция 5-та точка 1 за повече информация ;). (всъщност просто продължете да четете :D )


5. Възможни проблеми.

Нещо като FAQ - аз предполагам , че ще изчерпам почти всички / да не каже всички / възможни проблеми, които може да имате ( известни на мен ), докато компилирате QT и / или KDE, но все пак сигурно ще има и какво още да Ви предупредя.

  • 0.Въпрос: Къде мога да намеря помощ , ако Google.com и (търсачката на) linux-bg.org форума не можаха да ми помогнат. :( ?

Отговор: Ами на много места :)
irc: Връзвате се (примерно) към irc.debian.org и след това: join #kde, #kde-devel, #qt, също така почти всички по-известни дистрибуции си имат собствен канал за kde ;)
e-mail: Отделно майлинг листите на kde.
FAQ & HOWTO (s): и също многото документация, която се "предлага" на kde.org - абсолютно всичко (99.99999%) е описано там (очудващо как google не ги е намерил :D ).

  • 1.Въпрос: Обърках се ... Какво точно трябва да изпълня (като команди) , за да компилирам и имам KDE компилирано от сорс код ?

Отговор: Идеята ми беше да описвам какво трябва да направите и защо , явно обаче не съм обяснявал или структурирал добре това, което съм писал. Надявам се долните редове да Ви помогнат и изяснат нещата ;) : // Да предположим , че вашият потребител е foo:

  1. |
    login: foo
     password: // въвеждате парола си
     $su
     root password: // въвеждате паролата на root 
     #adduser --ingroup foo foo-tester
     #chown 770 -R /home/foo
     #exit
     $exit
  2. |
    login: foo-tester
     password: // въвеждате паролата "си"
     $mkdir kdesource
     $cd kdesource
     // сваляте QT 3.3.2 и KDE 3.3Beta1 сорс кода от
     //http://d.linux-bg.org/index.php?folder=apps"
     // 
     // файлове, които трябва задължително да свалите:
     // qt-x11-free-3.3.2.tar.bz2
     // arts-1.2.91.tar.bz2
     // kdebase-3.2.91.tar.bz2
     // kdelibs-3.2.91.tar.bz2
  3. |
    $cp -a kdesource ../kdebuild
     $cd ../kdebuild
     $bunzip2 *.bz2
     $tar xvf qt-x11-free*.tar
     $tar xvf arts*.tar
     $tar xvf kdelibs*.tar
     $tar xvf kdebase*.tar
  4. |
    $cd qt-x11-free*
     $./configure -system-zlib -qt-gif -system-libpng \
     -system-libjpeg -plugin-imgfmt-mng -thread -no-stl \
     -no-xinerama -no-g++-exceptions --prefix=/usr/local/qt-3.3.2
     // ако configure Ви "каже", че Ви липства
     // някоя библиотека или програма, а на Вас 
     // Ви трябват възможностите , които тя осигорява
     // на(/за) КДЕ, то инсталирайте я чрез вашата
     // пакетиращата система или последвайки линк-а,
     // който дава configure ;)
     // за Дебиан:
     // apt-cache search name-of-the-library | grep dev
     // apt-get install ...
     // това важи за всички ./configure , коит ще пуснете !
     $make
     $su root "make install"
     password: // въведете паролата на root
  5. |
    // редактирате /home/foo-tester/.profile
     // ако го няма , го създавате и вътре пишете:
     
     QTDIR=/usr/local/qt-3.3.2
     LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
     export QTDIR LD_LIBRARY_PATH
     
     // след това , за да влязат промените в сила:
     $exit
  6. |
    login: foo-tester
     password: //въвеждате паролата "си"
  7. |
    $cd arts*
     $./configure --prefix=/opt/kde-3.3-beta1
     // ако configure Ви "каже"... върни се малко назад ;)
     $make
     $su root "make install"
     password: // въведете паролата на root
  8. |
    $cd ../kdelibs*
     $./configure --prefix=/opt/kde-3.3-beta1
     // ако configure Ви "каже"... върни се малко назад ;)
     $make
     $su root "make install"
     password: // въведете паролата на root
  9. |
    $cd ../kdebase*
     $./configure --prefix=/opt/kde-3.3-beta1
     // ако configure Ви "каже"... върни се малко назад ;)
     $make
     $su root "make install"
     password: // въведете паролата на root
  10. |
    // ако сте изтеглили и допълнителни модули 
     // компилирайте ги по същия начин (може и по-късно)
     // примерно искам kdemultimedia ;)
     // В системата сме като foo-tester ! и ...
     $cd /home/foo-tester
     $cd kdebuild
     // предполагаме , че сте изтеглили дадения архив.
     $bunzip2 kdemultimedia*.bz2
     $tar xvf kdemultimedia*.tar
     $cd kdemultimedia*
     $./configure --prefix=/opt/kde-3.3-beta1
     // ако configure Ви "каже"... върни се малко назад ;)
     $make
     $su root "make install"
     password: // въведете паролата на root
     -----------------------------------------------------
  11. |
    // Не излизате от системата , т.е още сте foo-tester !
     // сега да конфигурираме foo-tester да може
     // да използва новото КДЕ.:
     // редактирате /home/foo-tester/.profile
     // и го променяте, така че да изглежда така:
     
     QTDIR=/usr/local/qt-3.3.2
     KDEDIR=/opt/kde-3.3-beta1
     KDEDIRS=$KDEDIR
     PATH=$QTDIR/bin:$KDEDIR/bin:$PATH
     LD_LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LD_LIBRARY_PATH
     
     #Долния ред като застраховка ;)
     KDEHOME=.kde-3.3-beta1
     
     export KDEDIR QTDIR KDEDIRS PATH LD_LIBRARY_PATH KDEHOME
     
     // записвате и затваряте файла. Последна настройка:
     $echo "startkde" > /home/foo-tester.xinitrc
     // предполагам и се надявам
     // вече всичко е изяснено :))
     // И сега е време да видим това KDE 3.3 Beta1 :-)
     $startx
     ...
    Е как е ?

  • 2.Въпрос: При компилиране на kdebase от КДЕ 3.3.0 Бета1 (в TARBALLS варианта) ми дава следната грешка:

kdebase error
//няма да слагам # за обвивка с привилегии на root , просто защото
 //doc_embed - тагът doc със type = code определя # като знак за коментар,
 //какъвто дефакто е , но и значи още неща ;)
 
 utils.h:164: error: `QCString KWinInternal::getStringProperty(long unsigned
 int, long unsigned int, char)' used but never defined
 make[3]: *** [client.lo] Error 1
 make[3]: Leaving directory `/home/foo-tester/kdebuild/kdebase-3.2.91/kwin'
 make[2]: *** [all-recursive] Error 1
 make[2]: Leaving directory `/home/foo-tester/kdebuild/kdebase-3.2.91/kwin'
 make[1]: *** [all-recursive] Error 1
 make[1]: Leaving directory `/home/foo-tester/kdebuild/kdebase-3.2.91'
 make: *** [all] Error 2

***Също така трябва да Ви ОТБЕЛЕЖА , че когато питате на какво се дължи дадена грешка по време на make, make install, etc ..., то не давайте целия LOG или последните 20 реда , ами давайте реда над първото make[x] *** или още по-... казано - реда над първите 3 звездички (***) :D.

Отговор: Срещайки този проблем първата ми работа беше да преровя Гоогъл (в моя случей върнатите резултати бяха приемливи по-малко от 100 (не си спомням точно колко , но по-малко). Още преглеждайки половината хванах някаква следа. Оказа се обаче грешна - не за моята ситуация. Питах в #kde (irc channel), поговорих с няколко участника и накрая получих отговора от участичнката annma (KDE Developer) На която искам ДА ИЗКАЖА ГОЛЕМИ БЛАГОДАРНОСТИ , защото тя ми помогна и за други мой проблеми свързани с КДЕ , а също така ми изясни и доста неща покрай него (макар и едва ли да разбере написаното тук - български :( ) ! Трябваха да се направят две поправки в сорс кода на kwin. Аз ги направих на patch. Долу ще го напиша , а Вие направете copy-paste и го запазете в някакъв файл , после преместете този файл в главната директория на вашата build директория, където сте разархивирали kde source code. Примерно: /home/foo-tester/kdebuild/. И изпълнете следната команда:
file е файла , съдържащ пач-а/кръпката
patch -p0 < file
Става бързо и безполезнено :)) След това продължете с make , няма нужда от преконфигуриране , make ще продължи от там , където е спрял.
Ако имате проблеми със самото компилиране (make): 1. Google , 2.Търсачката на Форума, 3.Форума или други източници. Точка 2 я написах така , защото предполагам , че след като посещавате linux-bg.org , сигурно посещавате и форума на linux-bg.org.

Самата кръпка
diff -Naur kdebase-3.2.91.old/kwin/kcmkwin/kwinrules/detectwidget.cpp \
 kdebase-3.2.91/kwin/kcmkwin/kwinrules/detectwidget.cpp
 --- kdebase-3.2.91.old/kwin/kcmkwin/kwinrules/detectwidget.cpp	2004-06-26 16:24:22.000000000 +0300
 +++ kdebase-3.2.91/kwin/kcmkwin/kwinrules/detectwidget.cpp	2004-07-31 21:56:48.000000000 +0300
 @@ -55,7 +55,7 @@
 readWindow( window );
 }
 
 -static QCString getStringProperty(WId w, Atom prop, char separator)
 +static QCString getStringProperty(WId w, Atom prop, char separator=0)
 {
 Atom type;
 int format, status;
 diff -Naur kdebase-3.2.91.old/kwin/utils.h kdebase-3.2.91/kwin/utils.h
 --- kdebase-3.2.91.old/kwin/utils.h	2004-06-26 16:24:03.000000000 +0300
 +++ kdebase-3.2.91/kwin/utils.h	2004-07-31 21:56:28.000000000 +0300
 @@ -161,7 +161,7 @@
 };
 
 
 -static QCString getStringProperty(WId w, Atom prop, char separator=0);
 +QCString getStringProperty(WId w, Atom prop, char separator=0);
 void updateXTime();
 void grabXServer();
 void ungrabXServer();
Да не Ви бърка това , че
diff -Naur kdebase-3.2.91.old/kwin/kcmkwin/kwinrules/detectwidget.cpp \
 kdebase-3.2.91/kwin/kcmkwin/kwinrules/detectwidget.cpp
 
 # е така .! Просто като е цялото (на един ред) и ширината на листа , на
 # който е статията става доста голям, и трябва да се движите със скрол - 
 # някакъв (на мишка, на самия броузър); на ляво, и на дясно , което лично
 # за мен е дискомфортно , освен ако не беше схема ;) Малко дългo обяснение
 # за такова дребно нещо , но по-добре безсолно , отколкото пресолено :DD :P
  • 3.Въпрос: Къде КДЕ държи свойте конфигурационни файлове и настройки ?

Отговор: KDE (би трябвало да) държи всички свой настройки в следните директории: ~/.kde (или KDEHOME, ако е указана тази променлива) , ~/.kderc, ~/.qt , /tmp/*username* ( за user foo => /tmp/*foo* ). Като всички тези са Директории и за да ги изтриете ползвайте rm -rf name-of-the-directory. За /tmp ще имате нужда от superuser (root).

6. "Пролог".

Финални думи. Няколко финални думи и не технически съвети , защото предполагам скоро ще се опитате да компилирате QT и / или KDE - Успех!

Много писане падна и в интерес на истината трябваше това да е готово преди седмица++ , но като включим , че сега съм в началото на почивката ми - голямо спане , малко или много мързел; мисля мога да се оправдая. Относно компилирането на КДЕ и ЮТ - при срещане на проблем: (1) Reed The Manual (RTM / RTFM) и (2) търсете в ГУГЪЛ (google.com)!И ... имах още май какво да напиша , но вече - накрая; не се сещам за нещо ,което може да Ви е от полза ... Бъдете СВОБОДНИ , ползвайте Линукс ... ;)


Важна Забележка (!)
ГОЛЕМИ БЛАГОДАРНОСТИ НА: участниците в #kde, #qt , #kde-devel .!! В интерес на истината мислех да спомена имената (прякорите) на хората , с които бях говорил , но всъщност помощта беше от целия irc канал , защото всеки , които можеше да помогне написваше по нещо , за да помогне и ...
... като цяло бях очуден от:
- в първия момент студеното посрещане. Докато не свикнете с правилата - а и аз като цяло не ползвам irc , та направо :)) , но се свиква с желание бързо , макар че също така аз вече си "изпатих" в #debian и доста от основните правила в такива irc канали за помощ или разработки/проекти вече ми бяха ясни, което ми напомня:

!! Не paste-вайте в irc канали като #kde , #debian, освен ако не Ви помолят изрично така да се каже ... идеята е да няма flood на irc канала .!!

- и второ - после; бях очуден , че всеки се опитва да ти помогне - споделя знания(теория), опит(практика), и макар да изглежда доста лесно да намериш отговор не е така , трябва да можеш да питаш - задаваш въпроси.
И най-вече е проблем не толкова проблема ти , а дали ще успееш да се разбираш с човека отсреща , да можеш да му говориш поне малко на неговия език (не говоря за английски език, френски или подобно , а за начин на разбиране на нещата на "човека с/у теб"), да можеш да си обясниш проблема , но в основи и по същество , така че да не загубиш идеята / същината на проблема / . Това е трудното. Макар че се случва и отговор в момента да няма , НО (!) има и други irc канали и също така нарочно казах "в момента" - в правиалта се казва - перефразирам: "Ако сега не получите отговор , не досаждайте , ами опитайте по-късно." -> и правилата имат право разбира се :D ;).


Бъдете Свободни , ползвайте Линукс ...


the_real_maniac ( dgt_it at abv dot bg ), 2004.07.26.


<< Опазвайте ОС от инсталацията | Инсталиране на SuSE Linux 9.1 [Част 2] >>

Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук, но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора, както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.

All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
Linux is copyright by Linus Torvalds.
© Линукс за българи ЕООД 2007
© Slavei Karadjov 1999 - 2006

All rights reserved.

Изпълнението отне: 0 wallclock secs ( 0.14 usr + 0.04 sys = 0.18 CPU)