Linux korisnik tu i tamo mora nešto kompajlirati iz izvornog koda i ako niste LFS ili Gentoo guy, vjerojatno vam to teško pada. Iskusniji korisnici znaju se već nositi s kompajliranjem paketa iz izvornog koda, ali problemi još uvijek postoje. Meni osobno najveći je problem što moram povući pedesetak -devel paketa i time "kontaminirati" cijeli sustav novim paketima koje vjerojatno neću koristiti narednih X mjeseci, a koji će se redovito ažurirati i "bloatati" sustav. Rješenje je ovog problema napraviti paket u posebnom okruženju koje poslije možete lagano obrisati bez da "kontaminirate" sustav.
Stvaranje "virtualnog" okruženja u datotečnom sistemu na Unix sustavima radi se pomoću naredbe chroot. Jednostavno možete stvoriti novo okruženje unutar proizvoljne putanje (npr. /tmp/buld/chroot/) te će sve aplikacije koje su chrootane misliti da se nalaze u pravom datotečnom sustavu, a ne unutar neke proizvoljne putanje. Ovo nije virtualizacija u pravom smislu riječi, jer kernel i sva druga oprema ostaju "stvarni".
Fedora nudi jedan zgodan alat namijenjen lakšem i čišćem pravljenju RPM paketa, ali može poslužiti i u druge svrhe

- Kod: Označi sve
yum install -y mock
(kako bi radio s običnim korisnikom, treba se isti dodati u grupu mock).
Stvaranje novog chroot okruženja radi se s naredbom:
- Kod: Označi sve
mock -r fedora-16-x86_64 --install
gdje umjesto fedora-16-x86_64 može stajati bilo koja distribucija, no predefinirani profili su ovi:
- Kod: Označi sve
epel-4-i386.cfg
epel-4-ppc.cfg
epel-4-x86_64.cfg
epel-5-i386.cfg
epel-5-ppc.cfg
epel-5-x86_64.cfg
epel-6-i386.cfg
epel-6-ppc64.cfg
epel-6-x86_64.cfg
fedora-14-i386.cfg
fedora-14-s390x.cfg
fedora-14-x86_64.cfg
fedora-15-arm.cfg
fedora-15-i386.cfg
fedora-15-s390.cfg
fedora-15-s390x.cfg
fedora-15-sparc64.cfg
fedora-15-sparc.cfg
fedora-15-x86_64.cfg
fedora-16-arm.cfg
fedora-16-i386.cfg
fedora-16-ppc64.cfg
fedora-16-ppc.cfg
fedora-16-s390.cfg
fedora-16-s390x.cfg
fedora-16-sparc64.cfg
fedora-16-sparc.cfg
fedora-16-x86_64.cfg
fedora-4-i386-epel.cfg
fedora-4-ppc-epel.cfg
fedora-4-x86_64-epel.cfg
fedora-5-i386-epel.cfg
fedora-5-ppc-epel.cfg
fedora-5-x86_64-epel.cfg
fedora-devel-i386.cfg
fedora-devel-ppc64.cfg
fedora-devel-ppc.cfg
fedora-devel-x86_64.cfg
fedora-rawhide-arm.cfg
fedora-rawhide-i386.cfg
fedora-rawhide-ppc64.cfg
fedora-rawhide-ppc.cfg
fedora-rawhide-s390x.cfg
fedora-rawhide-sparc64.cfg
fedora-rawhide-sparc.cfg
fedora-rawhide-x86_64.cfg
(moguće je dodati i druge distribucije, ali treba prilagoditi onda upravitelj paketa i dodati pripadajuće repozitorije).
Instalirani chrootovi nalaze su na zadanom mjestu, npr. /var/lib/mock/fedora-16-x86_64, no i to se može modificirati u profilu mocka (za ovo je potrebno više mjesta na root particiji).
Recimo da želimo napraviti dodatak transparent-oxygen za KDE.
Instalacija paketa u chroot vrši se s mockom:
- Kod: Označi sve
mock -r fedora-16-x86_64 --install kdebase-workspace-devel kdelibs-devel git libXrender-devel libX11-devel gcc-c++ cmake gcc wget
Ulazak u "shell" chrootanog okruženja radi se ovako:
- Kod: Označi sve
mock -r fedora-16-x86_64 --shell
gdje se dalje može normalno nastaviti "po starom" (umjesto zadnjeg koraka, "make install", bilo bi najbolje napraviti RPM s recimo checkinstall ako spec datoteka nije dostupna, ali moguće je i izaći iz chroot okruženja s "exit" i napraviti "make install" unutar prave hijerarhije).
Prednosti: prava virtualizacija za ovako nešto definitivno je overkill, a ova metoda pruža buildanje paketa za bilo koju platfromu i arhitekturu (isto kao virtualizacija), a za razliku od klasičnog načina kroz pravi sustav ostaje vam čisti sustav.
Nedostaci: u startu kreiranje chroota pojede se više internet prometa i možda je nekim sve ovo overkill.
EDIT: Ovo sam "otkrio" pokušavajući što jednostavnije kompajlirati na "velikom" kompu (64-bitnom) neki izvorni kod za Atom-based netbook (32-bit) koji bi to inače radio par sati
