Come patchare un file che risiede in / Applicazioni (patch non trova il file da applicare alla riga di input)?

3

Sto provando a correggere 5 file all'interno di un pacchetto di applicazioni Mac usando il comando Terminal patch . I file da patch vengono specificati utilizzando un percorso file assoluto (il nome del file e il percorso iniziano con una barra).

L'output quando si esegue $ sudo patch -i ~/custom.patch è:

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

Ho verificato che il file /Applications/Xyz.app/Contents/Resources/dashboard.js esiste utilizzando il percorso file specificato utilizzando il comando ls .

Regression:

  1. Si è tentato di eseguire il comando patch dalla cartella principale utilizzando $ cd /
  2. Si è tentato di eseguire il comando patch dalla cartella principale con la prima barra rimossa, il che si traduce in un risultato quasi identico:
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

In che modo più file all'interno di un pacchetto di applicazioni Mac OS X possono essere corretti utilizzando patch ?

    
posta Pro Backup 21.11.2013 - 03:58
fonte

1 risposta

3

Penso che il problema sia che non stai specificando l'opzione p.

Dal manuale per la patch:

For example, supposing the file name  in  the  patch file was

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

setting -p0 gives the entire file name unmodified, -p1 gives

  u/howard/src/blurfl/blurfl.c

without the leading slash, -p4 gives

  blurfl/blurfl.c

and  not  specifying  -p  at  all just gives you

  blurfl.c.

Whatever you end up with is looked for either in the current directory,
or the directory specified by the -d option.

Quindi il comando dovrebbe essere qualcosa del tipo:

patch -p0 <custom.patch

oppure potresti specificare la directory a cui applicare la patch:

patch -d /path/to/dir <custom.patch
    
risposta data 24.11.2013 - 12:36
fonte

Leggi altre domande sui tag