4 votes

Comment gérer les rejets de correctifs après l'application de correctifs avec uupdate ?

J'ai utilisé uupdate pour mettre à jour un paquet source de 0.7.0 à 0.7.3. Il fait cette mise à jour avec des correctifs et j'ai eu quelques rejets de correctifs. Je ne sais pas quoi faire ensuite. Dois-je.. :

  • éditer l'ancien paquet source (0.7.0) et réexécuter uupdate ?
  • éditer le nouveau paquet source (0.7.3) et réexécuter uupdate ?
  • éditer directement les fichiers .rej ?
  • utiliser un outil tel que kdiff3 ?
  • essayer quelque chose d'autre ?

A ce stade, je pense que la solution est d'utiliser un outil plus proche de ce qui m'est familier (venant d'une expérience de Tortoise Merge et clearcase merge).

J'ai cherché dans tous les sens comment les gens géraient les rejets de patchs et je n'ai pas eu de chance, donc je serai heureux de RTFM si vous pouvez fournir un lien vers un FM, s'il existe. .

3voto

gbc Points 4019

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 :-)

2voto

SitWalkStand Points 735

Je me contenterais de résoudre manuellement les conflits et de lancer debuild -S comme d'habitude.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X