¿Cómo parchear un archivo que reside en / Aplicaciones (el parche no puede encontrar el parche al parche en la línea de entrada)?

3

Estoy tratando de parchear 5 archivos dentro de un paquete de aplicaciones Mac usando el comando Terminal patch . Los archivos a ser parcheados se especifican usando una ruta de archivo absoluta (el nombre del archivo y la ruta comienzan con una barra).

La salida cuando se ejecuta $ sudo patch -i ~/custom.patch es:

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

He verificado que el archivo /Applications/Xyz.app/Contents/Resources/dashboard.js existe en la ruta de acceso del archivo especificado con el comando ls .

Regresión:

  1. Se intentó ejecutar el comando de parche desde la carpeta raíz usando $ cd /
  2. Intenté ejecutar el comando de parche desde la carpeta raíz con la primera barra quitada, lo que resulta en un resultado casi idéntico:
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

¿Cómo se pueden parchear varios archivos dentro de un paquete de aplicaciones de Mac OS X usando patch ?

    
pregunta Pro Backup 21.11.2013 - 03:58

1 respuesta

3

Creo que el problema es que no estás especificando la opción p.

En el manual para el parche:

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.

Por lo tanto, el comando debería ser algo como:

patch -p0 <custom.patch

o puede especificar el directorio al que se debe aplicar el parche:

patch -d /path/to/dir <custom.patch
    
respondido por el CML 24.11.2013 - 12:36

Lea otras preguntas en las etiquetas