Както знаете, Debian поддържа огромно количество компилиран софтуер. Въпреки това, понякога е възможно да ви се наложи да си компилирате нещичко. Я някой никому неизвестен проект, я нещо от друга версия. Че и понякога може да решите да почовъркате по кода на някоя програма и да видите какво ще стане.
Типично по дебиански, имате няколко мощни и добре обмислени инструменти, чрез които мисията е пределно улеснена и автоматизирана. Те са създадени и се ползват основно от разработчиците на дистрибуцията, но и ние, простосмъртните потребители, можем да се възползваме.
Компилиране на пакети по класическия начин
Класическият начин за компилиране на софтуер се състои в следните стъпки:
1. Доставяне на source пакет. Ако даден софтуер не го намирате в хранилищата на Debian и на сайта на създателите му не е предоставен .deb пакет, а само source файл с разширение .tar.gz или .tar.bz2, то не ви остава нищо друго, освен да изтеглите този компресиран файл. След това следва разпакетиране. Добре е директорията на разпакетирания файл да си я сложите на специално място, където ще компилирате и други пакети евентуално. Целта е да не загубите тази папка и винаги да знаете къде е.
2. Отворете с файловия браузър тази папка и разгледайте съдържанието. Преди всичко, запознайте се със всички текстови файлове, особено ако имат заглавия от рода на Readme, Install. Така ще научите всичко, което е необходимо, за да компилирате успешно пакета. Обикновено, това са предписания каква е процедурата за командите, които трябва да изпълните, необходимите програми, които трябва да бъдат инсталирани предварително (т.н. зависимости).
3. В общия случай, командите са:
$./configure
$make
#make install
Първата и втората команда се изпълняват с правата на обикновен потребител, докато третата команда с права на root. За да се запази контрола над пакетите, е добра идея, вместо make install да използвате командата checkinstall (ще трябва да си я инсталирате преди това), която ще създаде дебиански пакет и ще го инсталира. След това, ако желаете да го премахнете, просто го правите чрез apt-get или synaptic.
Ако все пак сте имали неблагоразумието да използвате make install, за да премахнете пакета, е необходимо да влезете в папката с компилирания пакет и да изпълните:
#make uninstall
Не бих могъл в една кратка статия да осветля напълно тази тема. Тя е доста дълбока и засяга използването на доста различни програми – make, qmake, gcc и т.н. Само ще ви насоча, че след като стартирате ./configure, скриптът проверява, дали е възможно да се компилира успешно кодът, и ако завърши с грешка, ще може да се ориентирате какво ви липсва. След това с apt лесно ще си осигурите необходимите пакети. Обикновено тава са девелоперски такива и завършват с “-dev“.
Компилиране на debian binary пакети от debian source пакети
В хранилищата на Debian, освен компилираните пакети, може да намерите и съответните им пакети с код. За да имате достъп до тях, добавете в sources.list аналогичен запис на хранилището, но вместо в началото на реда да запишете deb, ще въведете deb-src . След това вече ще може да сваляте нужните ви debian source пакети с командата:
#apt-get source пакет
Ако изпълните горната команда с опция -b и права на root, то тя ще компилира пакета, ако е възможно.
А ще е възможно, ако предварително са изтеглени и инсталирани необходимите зависимости – най-често различни -dev пакети. И за това има команда, която трябва да изпълните преди горната:
#apt-get build-dep пакет
Ако все пак сте изтеглили ръчно debian source пакет, за разпакетиране използвайте:
#dpkg-source -x пакет.dsc
А за компилирането му влезте в главната директория на кода и стартирайте командата:
#dpkg-buildpackage -rfakeroot -uc -b
или
#debuild
Debian a la Gentoo
Няма грешка, в Debian можете да си прекомпилирате системата и по този начин да я оптимизирате. Възможностите не са така всеобхватни, както при Gentoo, но всъщност ефектът е сравним. Но и практиката е показала, че е достатъчно да се компилират и оптимизират не всички пакети, а само тези, които са важни за бързината.
Такива възможности ви дава програмата apt-build, която се инсталира по обичайния начин:
#apt-get install apt-build
При конфигурирането на програмата ще бъдете попитани къде искате да бъде създадена директорията, в която ще се съхраняват компилираните пакети и ще представлява вашето локално хранилище, кой компилатор предпочитате, какви да бъдат опциите за оптимизация и дали вашето хранилище да бъде включено в sources.list. По подразбиране, последното се намира в директорията
/var/cache/apt-build/repository , а ако все пак не се запише в sources.list, добавете го ръчно. Запишете:
deb file:/var/cache/apt-build/repository apt-build main
Сега можете да теглите source пакети от дебианските хранилища, да ги компилирате и да създадете бинарни .deb пакети, които ще се съхраняват във вашето локално хранилище. Тъй като то е прибавено в sources.list, synaptic ще може да ги инсталира и деинсталира. За всичко това ще се погрижи apt-build и многото и команди и опции. За щастие, man страничката за тази команда не е голяма и си заслужава да се запознаете с нея. Тук само ще покажа няколко примера какво може apt-build.
Обновяване списъците с пакети от хранилищата:
#apt-build update
Компилиране и инсталиране на пакети, които може да се подновят с нова версия:
#apt-build upgrade
Прекомпилиране на цялата система:
#apt-build world
Компилиране и инсталиране на пакет:
#apt-build install пакет
Компилиране и инсталиране на съществуващ пакет:
#apt-build install -reinstall пакет
Почистване на build директорията:
#apt-build clean-build
Актуализация на файловете Packages.gz и Sources.gz в локалното хранилище. Например, след добавяне на .deb пакети, компилирани по друг начин (dpkg-buildpackage):
#apt-build update-repository
Възможно е компилирането и изграждането на пакети да се осъществява, но те да не бъдат инсталирани. Все пак, ще ги намерите в локалното хранилище, и чрез synaptic съвсем лесно ще бъдат инсталирани.