Je suis d'accord avec @maco pour résoudre manuellement le conflit. En voyant les options que vous donnez, vous avez probablement besoin de vraiment comprendre ce qu'est un uupdate does
, qui est :
- extraire la nouvelle archive dans le répertoire parent ;
- essayer d'appliquer le diff.gz précédent (à moins que vous n'utilisiez un style v3 (quilt)) au nouveau répertoire.
Les rejets de correctifs proviennent de l'application de ce diff.gz au nouveau répertoire.
Il s'agit maintenant de passer en revue les différentes options :
- éditer l'ancien paquet source => il ne faut pas modifier l'ancien paquet source pour en créer un nouveau ;
- éditer le nouveau paquet source et relancer uupdate => cela ne sert à rien, car le patch ne s'applique pas à la nouvelle source, et il ne faut pas modifier la source originale (sauf avec les patches, qui se trouvent dans le diff.gz) ;
- éditer les fichiers .rej => les fichiers .rej sont là pour vous montrer ce qui n'a pas été appliqué ; les éditer ne résoudra pas votre problème mais vous devriez y jeter un coup d'œil pour voir si les changements qui n'ont pas été appliqués doivent l'être ;
- utiliser un outil de comparaison => Bien sûr, cela peut être une bonne idée, (
vim -d
est votre ami), bien que les fichiers .rej devraient déjà vous donner une idée des erreurs à appliquer. Vous pouvez également lire le diff.gz précédent pour avoir une idée des fichiers modifiés.
En général, la plupart des conflits uupdate que j'ai rencontrés étaient dus à un mauvais empaquetage dans la version précédente du paquet, à savoir un diff.gz qui modifiait les sources au lieu d'ajouter simplement un répertoire debian/. Cela peut être facilement vérifié :
zcat ../yourpackagename_0.7.0-1.diff.gz | diffstat
vous donnera la liste des fichiers modifiés par le patch précédent (adaptez le nom du fichier à vos besoins). Si vous trouvez dans cette liste des fichiers qui ne sont pas dans le répertoire debian/, alors votre problème est certainement là. Dans ce cas, vérifiez ce qui a été modifié :
- Dans la plupart des cas, il s'agit d'un désordre autotools lorsque
debuild -S
a été appelé : l'un des scripts a été modifié et cette modification ne s'appliquera plus. Il est généralement prudent d'abandonner cette modification dans la nouvelle version ;
- Dans d'autres cas, le code source a été corrigé manuellement (sans utiliser dpatch/simple-patchsys/quilt/quoi que ce soit d'autre). Dans ce cas, vérifiez si le correctif doit toujours être appliqué à la nouvelle version (lisez le journal des modifications par exemple). Si c'est le cas, faites un patch propre en utilisant un gestionnaire de patch approprié. Les futurs empaqueteurs vous en remercieront :-)