3 votes

Comment patcher un fichier se trouvant dans /Applications (le correctif ne peut pas trouver le fichier à corriger à la ligne d'entrée) ?

Je tente de patcher 5 fichiers dans un bundle d'application Mac en utilisant la commande Terminal patch. Les fichiers à patcher sont spécifiés en utilisant un chemin absolu (le nom du fichier et le chemin commencent par un slash).

Le résultat lors de l'exécution de $ sudo patch -i ~/custom.patch est le suivant :

can't find file to patch at input line 3
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|--- /Applications/Xyz.app/Contents/Resources/dashboard.js
|+++ /Applications/Xyz.app/Contents/Resources/dashboard.js
--------------------------
File to patch: ^C

J'ai vérifié que le fichier /Applications/Xyz.app/Contents/Resources/dashboard.js existe bien à l'emplacement spécifié en utilisant la commande ls.

Régression:

  1. Essayé d'exécuter la commande de patch depuis le dossier racine en utilisant $ cd /
  2. Essayé d'exécuter la commande de patch depuis le dossier racine avec le premier slash en moins, ce qui donne un résultat presque identique :

can't find file to patch at input line 3
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|--- Applications/Xyz.app/Contents/Resources/dashboard.js
|+++ Applications/Xyz.app/Contents/Resources/dashboard.js
--------------------------
File to patch: ^C

Comment plusieurs fichiers à l'intérieur d'un bundle d'application Mac OS X peuvent-ils être patchés en utilisant patch ?

3voto

CML Points 591

Je pense que le problème est que vous ne spécifiez pas l'option p.

D'après le manuel pour patch:

Par exemple, supposons que le nom de fichier dans le fichier patch était

  /u/howard/src/blurfl/blurfl.c

en utilisant -p0 donne le nom de fichier entier inchangé, -p1 donne

  u/howard/src/blurfl/blurfl.c

sans le slash initial, -p4 donne

  blurfl/blurfl.c

et ne pas spécifier -p du tout donne simplement

  blurfl.c.

Peu importe le résultat obtenu, il est cherché soit dans le répertoire actuel,
soit dans le répertoire spécifié par l'option -d.

Donc la commande devrait ressembler à :

patch -p0 

`ou vous pourriez spécifier le répertoire auquel le patch doit être appliqué :

patch -d /chemin/vers/repertoire`

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X