L'intérêt de Mock est:
- de mieux traquer les dépendances, si un build requires ou une dépendance manque à l'apple, Mock le détectera et la construction échouera. Mock fait donc partie intégrante du processus QA de Fedora.
- de construire des paquets facilement pour d'autres versions de Fedora voir même d'autres distros grace à un système de fichiers de configuration.

Mock fait partie intégrante du système de build de Fedora: Plague, pour qu'un paquet soit accepté dans Extras, il doit impérativement pouvoir être construit dans Mock.
Donc, si vous envisagez de contribuer à Extras, il est fortement recommandé de vous faire la main avec Mock et de tester vos paquets.

Mock peut sembler effrayant à première vue, mais en fait il est très simple utilisation.

1/ on installe Mock via yum
yum install mock

2/ Tout les utilisateurs faisant appel à Mock doivent impérativement faire partie du groupe mock.
Il est recommandé d'utiliser un compte utilisateur autre que le votre personnel par sécurité.
Soit en ligne de commmande:
build@fedora ~$ adduser -m -G mock build
soit via l'interface: system-config-users

3/ on se loggue dans le compte utilisateur dédié à Mock
build@fedora ~$ su - build

4/ Pour invoquer mock, la syntaxe est: mock <mon_paquet>.src.rpm
les options communes:
-r <config-file> définit le fichier de configuration utilisé et le nom du chroot, par défaut, c'est le fichier default.cfg qui sera chargé.
--arch= ARCH définit l'architecture de l'OS cible. (ARCH={i386,x86_64,ppc32, ppc64})
-resultdir=RESULTDIR définit lerépertoire ou sera stocké les résultats: les logs, ainsi que les paquets en cas de réussite, par défaut, c'est /var/lib/mock/<config-file>/result
--statedir=STATEDIR définit le répertoire ou sera stocké le statut, par défaut, c'est /var/lib/mock/<config-file>/status


5/ Supposons que je veuille tester si le paquet foo-1.2-3.src.rpm se construit correctement pour FC5 sur l'architecture i386: (1)
build@fedora ~$ mock -r fedora-5-i386-core.cfg foo-1.2-3.src.rpm
Dès que Mock aura terminé vous pourrez observer le résultat dans le répertoire /var/lib/mock/fedora-5-i386/result


Par défaut, Mock dispose de nombreux fichiers de configuration pour diverses versions de Fedora et RHL.
build@fedora ~$ mock -r <configfile>.cfg foo-1.2-3.src.rpm
Ou vous remplacerez <configfile> par le fichier correspondant à la configuration recherchée.

Pour voir les fichiers de configuration disponibles: ls /etc/mock
Créer et/ou modifier un fichier de configuration n'est pas très compliqué c'est un petit script python très lisible, ou il faut définir le nom de la configuration, l'architecture, puis un mini yum.conf pour désigner les dépôts utilisés.
La configuration globale de mock se fait quant à elle dans le fichier defaults.cfg.
Ainsi, il est possible de pouvoir construire des paquets pour diverses distributions du moment qu'elles utilisent rpm et yum notamment suse, mandriva etc ..., Debian fournit aussi un paquet pour mock, donc vous pourrez tranquillement compiler vos rpms fedora sur une station Debian.

Mock est aussi la façon la plus sûre pour compiler des paquets destiné à l'architecture x86 sur x86_64, il suffit d'ajouter setarch i386 avant votre commande.
build@fedora ~$ setarch i386 mock -r <configfile>.cfg foo-1.2-3.src.rpm

Le seul inconvénient de mock, c'est qu'il est extrêmement pointilleux (mais c'est le but de l'outil), qui plus est le processus est long du fait que Mock réalise une installation minimale de l'OS à chaque fois (215Mo pour l'environnement FC5 i386). Je confirme c'est très irritant à la longue. (2)


Heureusement, il est possible de mettre en cache chaque environnement utilisé par Mock dans une tarball.
Par exemple, pour créer un cache pour le système FC5 i386 :
build@fedora ~$ mock --autocache --rebuildcache -r fedora-5-i386-core.cfg.cfg init
build@fedora ~$ mock --autocache --rebuildcache -r fedora-5-i386-core.cfg clean
Le cache sera stocké dans le répertoire /var/lib/mock/root-cache dans la tarball fedora-5-i386-core.tar.gz
Pour invoquer le cache, il suffira de rajouter l'option --autocache dans vos commandes mock.
Alors Mock désarchivera le cache et et lancera un yum update pour le mettre à jour avant de télécharger les build requires de votre paquet.
Pour éviter que le cache ne commence à dater, il est automatiquement effacé au bout de 15 jours puis reconstitué.
Mock ne se limite à la création de paquets rpm, mais permet aussi de gérer des chroots pour réaliser divers tests.

Page projet Mock
Astuces Mock

(1) Penser à construire votre rpm source avec la commande rpmbuild -bs ^_- .
(2) D'ailleurs Mock, c'est le diminutif de Moloch le dévoreur de src.rpm et tourmenteur des empaqueteurs, on comprends mieux pourquoi le système de build de Fedora s'appelle Plague.
À moins que ce soit l'équivalent en Anglais US de Mach, Mach étant le nom du projet dont dérive Mock.