Patcher en ABS
Un patch décrit un ensemble de changements de ligne pour un ou plusieurs fichiers. Les patchs sont généralement utilisés pour automatiser le changement de code source.
Remarque: Si vous avez seulement besoin de changer une ou deux lignes, vous pouvez utiliser sed à la place.
L'outil de diff si vous compare des fichiers en ligne d'enregistrer sa sortie, vous avez un patch, par exemple diff -ura foo bar> patch. Si vous passez des répertoires diff comparera les fichiers qu'ils contiennent.
- Supprimez le répertoire src si vous avez déjà construit le paquet.
- Exécutez makepkg -o qui va télécharger et extraire les fichiers source, spécifiés dans PKGBUILD. mais pas les construire.
- Créer deux copies du répertoire extrait dans le répertoire src, comme une copie vierge et un pour votre version modifiée. Nous les appellerons package.orig et package.new.
- Effectuez vos modifications dans le répertoire package.new.
- Exécutez diff -ura package.orig package.new --color et vérifier si le patch semble bon.
- Exécutez diff -ura package.orig package.new> package.patch pour créer le patch.
- Modifier dans le répertoire package.orig et appliquer le patch en utilisant -p1 patch <. /package.patch. Verify that the patch is working by building and installing the modified package with makepkg -ei .
Remarque: Vous pouvez également créer des patches avec Git en utilisant diff ou format patch git git [1].
Cette section décrit comment appliquer les patches vous avez créés ou téléchargés sur Internet à partir d'une fonction prepare () de PKGBUILD. Suivez ces étapes:
- Ajouter une entrée au tableau source du PKGBUILD pour le fichier de patch, séparé de l'url source d'origine par un espace. Si le fichier est disponible en ligne, vous pouvez fournir l'URL complète et il sera automatiquement téléchargé et placé dans le répertoire src. Si c'est un patch que vous vous créé ou est par ailleurs pas disponible, vous devez placer le fichier correctif dans le même répertoire que le fichier PKGBUILD, et juste ajouter le nom du fichier au tableau source afin qu'il soit copié dans le src annuaire. Si vous redistribuez le PKGBUILD. vous devriez, bien sûr, inclure le patch avec le PKGBUILD.
- Ensuite, utilisez updpkgsums de mettre à jour le tableau md5sums. Vous pouvez également ajouter manuellement une entrée au tableau md5sums; vous pouvez générer somme de votre patch en utilisant l'outil md5sum.
- Créer la fonction prepare () dans le PKGBUILD si l'on est pas déjà présent.
- La première étape consiste à changer dans le répertoire qui doit être patché (dans la fonction, et non sur le terminal prepare ()! Vous voulez automatiser le processus d'application du patch). Vous pouvez le faire avec quelque chose comme cd $ srcdir / $ pkgname- $ pkgver ou quelque chose de similaire. $ Pkgname- pkgver de $ est souvent le nom d'un répertoire créé par décompressé un fichier source téléchargé, mais pas dans tous les cas.
- Maintenant, il vous suffit d'appliquer le correctif à partir de ce répertoire. Ceci est très simplement fait en ajoutant
à votre fonction, le changement pkgname .patch préparer () au nom du fichier contenant le diff (le fichier qui a été automatiquement copié dans votre répertoire src parce qu'il était dans le tableau source du fichier PKGBUILD).
Un exemple préparer fonction:
Si vous n'appliquez pas une option -p, il décollera toute la structure de répertoire. Ceci est ok si tous les fichiers se trouvent dans le répertoire de base, mais si le patch a été créé le myversion / et l'un des fichiers modifiés était myversion / src / fichier. et que vous exécutez le patch sans option -p à l'intérieur YOURVERSION. il va essayer de patcher un fichier nommé YOURVERSION / fichier.
La plupart des développeurs de créer des correctifs à partir du répertoire parent du répertoire qui est patché, alors -p1 sera généralement droit.
Une façon plus simple de créer des patchs est à l'aide courtepointe qui a mieux à gérer de nombreux correctifs, tels que l'application de patchs, correctifs rafraîchissant et revenir à des fichiers patchés état d'origine. couette est utilisé sur Debian pour gérer leurs correctifs. Voir Utilisation Quilt des informations de base sur l'utilisation de couette de base pour générer, appliquer des correctifs, et de revenir fichiers corrigés.