Нещо обичайно е в света на отворения софтуер да се изучава сорс кода и дори да се правят корекции. За да направите това ще трябва да изтеглите сорса на програмата. Системата APT осигурява лесен начин за получаването на сорса на програмите включени в дистрибуцията, включително и всички файлове необходими за се създаде .deb пакет на програмата.
Тази възможност също така може да се използва за да се адаптират най-новите версии на дадена програма от 'unstable' дистрибуцията, примерно за ползване със 'stable' . Компилирането на пакет за 'stable' ще генерира .debs със зависимости приспособени за съответстват на пакетите налични в тази дистрибуция.
За целта трябва да имаме, deb-src ред във файла /etc/apt/sources.list и той трябва да "сочи" към 'unstable'. Виж Файлът /etc/apt/sources.list, Section 2.1.
За да изтеглите сорс пакета изпълнете:
apt-get source packagename
Тази команда ще изтегли три файла: a .orig.tar.gz, .dsc и .diff.gz. В случай, че пакета е направен специялно за Дебиан, последния файл няма да бъде изтеглен, а първия обикновено няма да има "orig" в своето име.
Файлът .dsc се ползва от dpkg-source за разпакетирането на сорс пакета в директория packagename-version. За всеки изтеглен сорс пакет има директория debian/ която съдържа файловете необходими за създаването на .deb пакет (т.е. бинарен пакет).
Ако искате компилацията да започне автоматично когато пакета е изтеглен добавете -b в командния ред:
apt-get -b source packagename
Ако решите да не създавате .deb по време на изтеглянето, тогава може да го направите по-късно изпълнявайки:
dpkg-buildpackage -rfakeroot -uc -b
от директорията която е била създадена за пакета след изтеглянето му.
Има разлика между source метода на apt-get и другите му методи. Методът source може да се ползва от обикновените потребители, без да се нуждаят от root права. Файловете се изтеглят и съхраняват в директорията от която командата apt-get source package е била изпълнена.
Обикновено, някой специфични заглавни файлове ( headers ) и споделени библиотеки (shared libraries) трябва да са в наличност за да се компилира дадения пакет. Всички .deb пакети имат поле в техните контрол файлове (control files) наречено 'Build-Depends:' което показва кои допълнителни пакети са необходими така, че пакета да може да бъде компилиран успешно от сорса.
APT разполага с начин за изтегляне на тези пакети. Просто изпълнете apt-get build-dep package, където `package' е името на пакета който ще компилирате. Например:
[root]@[/] # apt-get build-dep gmc
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
comerr-dev e2fslibs-dev gdk-imlib-dev imlib-progs libgnome-dev libgnorba-dev
libgpmg1-dev
0 packages upgraded, 7 newly installed, 0 to remove and 1 not upgraded.
Need to get 1069kB of archives. After unpacking 3514kB will be used.
Do you want to continue? [Y/n]
Пакетите които ще бъдат инсталирани са пакетите необходими за успешната
компилация на gmc. Важно е да се отбележи, че тази команда няма
да "търси" сорс пакета на програмата за да бъде компилирана. Ще
трябва след това да изпълните apt-get source.
kov@debian.org