|
от the_real_maniac(3-08-2004)
рейтинг (-8)
[ добре ]
[ зле ]
Вариант за отпечатване
КАКДА относно 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(+) :) ). Сега да продължим нататък.
Вие искате последното (възможно за достъпване) КДЕ или да си сложите по-нова версия на КДЕ чрез компилиране на сорс код(а на КДЕ). Имате няколко варианта за достъпване на КДЕ:
Последния код на КДЕ може да достъпите от / чрез CVS и впоследствие може да ъпдейтвате този код - т.е не се налага да теглите на ново целия CVS , ами се записват само промените ;). Засъжеление не съм запознат (от гледна точка на това, че ) - нямам опит, затова ще Ви препратя към kde.org. Там хората са написали как да изтеглите и в послествие да си обновявате вашето CVS директория на КДЕ.
Другия вариант - сорс код-а на 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 тук.
Последния вариант е бинарния вариант - това е вече компилиран сорс код на КДЕ - предимно опитмизиран или за 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-та.
Как да направите варианта с отделен потребител ще Ви обясня сега ..., НО (!!!) с това не приключва въпроса по конфигуриране на това действие и избягване на такава/тази ситуация.!
Създаване на нов потребител. От 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 |
или ако вече имате друг потребител , който си ползвате за опити и т.н:
|
#moduser -G foo user-for-tests // НЕ МАЛКО G - g ! Има разлика .! |
оправяме правта на home dir. на вашият тестов потребител:
|
#chown user-for-tests:foo -R /home/user-for-tests
// КАТО ВНИМАВАЙТЕ КАК ПОЛЗВАТЕ -R в комбинация с '*' .! |
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 наистина има възможност за конфигуриране на голям брои опции).
Какво предлагат KDE:
|
./configure -system-zlib -qt-gif -system-libpng \
-system-libjpeg -plugin-imgfmt-mng -thread -no-stl \
-no-xinerama -no-g++-exceptions |
Какъв е минимума:
|
./configure -qt-gif -thread -no-exceptions |
Как да инсталирате 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 |
Една интересна опция е '-fast'. Вижте ./configure --help на QT. ;)
Ако искате да промените нещо - т.е да преконфигурарирате 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 :)
DISTCC_HOSTS="hostname/number-of-jobs ...", т.е localhost с 5 работи е mypc/5 , а не mypc/4 , както някои хора са се заблудили (т.е не се брои от 0 нагоре :D).
distcc(d) сървъра и компилирането започнато се влиае единствено и само от DISTCC_HOSTS указано на него. Не е задължително , за да участват и други компютри , и на тях да указвате същата DISTCC_HOSTS променлива. Тя влиае само , ако дадената машина ще работи като distcc(d) съръвр ;)
Ако искате да участва и машината , от която дефакто ще започне компилирането / която ще е "сървъра distcc(d)" / непременно я описвайте като localhost в DISTCC_HOSTS="..." .! Защото - поне при мен; като пробвах да я опиша с 'hostname-a' й не получих очакваните резултати ... Примерно: DISTCC="mypc/3 otherpc/2" не работи коректно.
определено прочетете man distcc , ccache , distccd :D
Проверявайте дали distccd сървъра работи и е пуснат правилно ;) Аз лично намирам за напълно приемливо за постоянна употреба примера на Peio от неговата статия: " distcc --daemon --user nobody --allow 192.168.1.0/24 " .!
При проблем с компилиране на известен или голям проект непременно погледнете в 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 - най-простичкото и механизам/начин на действие)
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, но все пак сигурно ще има и какво още да Ви предупредя.
Отговор: Ами на много места :)
irc: Връзвате се (примерно) към irc.debian.org и след това: join #kde, #kde-devel, #qt, също така почти всички по-известни дистрибуции си имат собствен канал за kde ;)
e-mail: Отделно майлинг листите на kde.
FAQ & HOWTO (s): и също многото документация, която се "предлага" на kde.org - абсолютно всичко (99.99999%) е описано там (очудващо как google не ги е намерил :D ).
Отговор: Идеята ми беше да описвам какво трябва да направите и защо , явно обаче не съм обяснявал или структурирал добре това, което съм писал. Надявам се долните редове да Ви помогнат и изяснат нещата ;) :
// Да предположим , че вашият потребител е foo:
- |
|
login: foo
password: // въвеждате парола си
$su
root password: // въвеждате паролата на root
#adduser --ingroup foo foo-tester
#chown 770 -R /home/foo
#exit
$exit |
- |
|
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 |
- |
|
$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 |
- |
|
$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 |
- |
|
// редактирате /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 |
- |
|
login: foo-tester
password: //въвеждате паролата "си" |
- |
|
$cd arts*
$./configure --prefix=/opt/kde-3.3-beta1
// ако configure Ви "каже"... върни се малко назад
$make
$su root "make install"
password: // въведете паролата на root |
- |
|
$cd ../kdelibs*
$./configure --prefix=/opt/kde-3.3-beta1
// ако configure Ви "каже"... върни се малко назад
$make
$su root "make install"
password: // въведете паролата на root |
- |
|
$cd ../kdebase*
$./configure --prefix=/opt/kde-3.3-beta1
// ако configure Ви "каже"... върни се малко назад
$make
$su root "make install"
password: // въведете паролата на root |
- |
|
// ако сте изтеглили и допълнителни модули
// компилирайте ги по същия начин (може и по-късно)
// примерно искам 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
----------------------------------------------------- |
- |
|
// Не излизате от системата , т.е още сте 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
... |
Е как е ?
kdebase error |
//няма да слагам
//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
|
Отговор: 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] >>
|
|