Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo parchear Ubuntu

Cómo parchear Ubuntu

1. diff

-------- ---------- --

NOMBRE

diff

- Encuentra las diferencias entre dos archivos

SNOYPSIS

diff

[opciones] de archivo a archivo

- ------- ---------- --

En pocas palabras, la función de diff es comparar las diferencias entre dos archivos y luego registrarlas. También se llama parche diff. . Formato de sintaxis: opción diff archivo de origen (carpeta) archivo de destino (carpeta) es aplicar un parche al archivo de origen (carpeta) para convertirlo en un archivo de destino (carpeta). El término también se denomina "actualización". Estas son las tres opciones más utilizadas:

-r es la opción recursiva. Con esta opción, diff compara todos los archivos en dos versiones diferentes del directorio de origen, incluidos los archivos del subdirectorio.

La opción -N garantiza que el archivo de parche maneje correctamente la creación o eliminación de archivos.

La opción -u crea archivos de parche en un formato unificado que es más compacto que el formato predeterminado.

2. parche

-------- ----------

NOMBRE

patch

-Aplica el archivo de diferencia al archivo original

SINOPSIS

patch

[opciones] [archivo original [archivo de parche]]< / p>

[opciones] [archivo original [archivo de parche]]

: aplica un archivo de diferencias a un archivo de parche. p> Pero

generalmente solo

parche

-pnum

---- ------- --- ----

En pocas palabras, un parche es un parche que usa diff para convertir un archivo (carpeta) de origen en un archivo (carpeta) de destino. Dicho esto, puede utilizar el archivo de origen (carpeta) --> el archivo de destino (carpeta) o el archivo de destino (carpeta) --> el archivo de origen (carpeta). Las siguientes son algunas de las opciones más utilizadas:

La opción -p0 se usa para encontrar el archivo (carpeta) de destino en el directorio actual

La opción -p1 se usa para ignore el directorio de primer nivel y comience desde el directorio actual. Comienza la búsqueda.

********************************************* *** *******************

El siguiente es un ejemplo:

--- old/modules/pcitable Mon

27 de septiembre 11:03:56 1999

+++ nuevo/módulos/pcitable martes

19 de diciembre 20:05:41 2000

Si se usa El parámetro -p0 significa buscar la carpeta llamada old en el directorio actual y buscar el archivo pcitable en el módulo debajo de ella para realizar la operación de parcheo.

Si usa el parámetro -p0, significa buscar la carpeta llamada old en el directorio actual y buscar el archivo pcitable en el módulo debajo de la carpeta para realizar la operación de parche.

Si se utiliza -p1, se ignora el primer directorio (es decir, se ignora el antiguo), se encuentra una carpeta llamada módulos en el directorio actual y se encuentra un archivo pcitable debajo de ella, siempre que el El directorio actual es

p>

es el directorio donde se encuentra el módulo. Por otro lado, el archivo de parche diferencial puede estar en cualquier lugar siempre que se especifique la ruta al archivo de parche diferencial. Por supuesto, puedes utilizar rutas relativas o absolutas. Pero normalmente uso rutas relativas.

********************************************* ***** *******************

La opción -E se utiliza para eliminar un archivo vacío cuando se encuentra

La opción -R se utiliza para eliminar archivos "nuevos" y archivos "nuevos" en archivos de parche.

Entorno: inicie sesión como usuario de armlinux en RedHat 9.0.

El árbol de directorios es el siguiente:

|--

cargador de arranque

|--

depuración

|--

imágenes

|--

núcleo

|--

programa

|--

archivos raíz

|--

software

|--

fuente

|--

sysapps

|--

tmp

`- -

herramientas

A continuación, cree una carpeta de parches para experimentar en la carpeta del programa y luego vaya a la carpeta de parches.

I. Operación de parche de archivo único

1. Crear archivos de prueba test0, test1

[armlinux@lqm

patch]$ cat >>prueba0<

>

111111

>

111111

>

p>

111111

>

EOF

[armlinux@lqm

parche]$ más prueba0

111111

111111

111111

[armlinux@lqm

parche]$ gato

> ; >prueba1<

222222

111111

>

222222

>

111111

>

EOF

[armlinux@lqm

parche]$ más prueba1

2222222

111111

2222222

111111

2 Utilice diff para crear el parche test1.patch

[armlinux@lqm

patch]$ diff -uN test0 test1

test1.patch

.

Nota: Dado que se trata de un único archivo, la opción -r no es necesaria. El orden de las opciones no importa, es decir, puede ser -uN o -Nu.

[armlinux@lqm

parche]$ ls

prueba0 prueba1 prueba1.patch

[armlinux@lqm

parche]$ más prueba1.

*********************************** ******* *************************

Estructura del archivo de parche

Encabezado del parche

El encabezado del parche consta de dos líneas que comienzan con ----/+++, que se utilizan para indicar los archivos que se van a parchear.

Las líneas que comienzan con --- representan archivos antiguos, las líneas que comienzan con +++ representan archivos nuevos.

Inclusión de varios parches en un archivo de parche

Un archivo de parche puede contener muchas secciones que comiencen con ----/+++, una para cada parche. Por lo tanto, un archivo de parche puede contener varios parches.

Bloques

Los bloques son áreas del parche que deben modificarse. Generalmente comienza y termina con partes que no necesitan ser modificadas. Sólo se utilizan para indicar dónde modificar. Generalmente comienzan con @@ y terminan con el comienzo de otro bloque o el encabezado de un nuevo parche.

Sangría de bloque

La sangría de bloque es una columna que indica si la línea se agregará o eliminará.

La primera columna del bloque

El signo "+" indica que esta fila se va a agregar.

El signo "-" indica que esta línea debe eliminarse.

Sin signo significa que esto es solo una referencia y no necesita ser modificado.

********************************************* ***** *******************

*** El comando diff registra la primera hora de creación de estos dos archivos en el archivo de parche. de la siguiente manera****

----

test0 2006-08-18

09:12:01.000000000 +0800

+++

prueba1 2006-08-18

09:13:09.000000000 +0800

@@ -1,3 +1,4

@@

+222222

111111

-111111

+222222

111111

[armlinux @lqm

patch]$ patch -p0 < test1.patch

Archivo de parche

test0

[armlinux@lqm

parche]$ ls

prueba0 prueba1 prueba1.patch

[armlinux@lqm

parche]$ cat test0

22222

111111

22222

111111

3. la versión anterior

[ armlinux@lqm

patch]$ patch -RE -p0 <

test1.patch

Archivo de parche

prueba0

[armlinux@lqm

parche]$ ls

prueba0 prueba1 prueba1.patch

[armlinux @lqm

patch] $ cat test0

111111

111111

111111

2. Parchear varios archivos

1, Crear carpeta de prueba

[armlinux@lqm

patch] $ mkdir prj0

[armlinux@lqm

parche]$ cp prueba0 prj0

[armlinux@lqm

parche]$ ls

prj0 prueba0 prueba1 prueba1.parche

[armlinux@lqm

parche]$ cd prj0/

[armlinux@lqm

prj0]$ ls

prueba0

[armlinux @lqm

prj0]$ gato

>& gt;prj0name<

>

------ --

>

prj0/prj0nombre

>

------- -

>

EOF

[armlinux@lqm

prj0]$ ls

prj0nombre prueba0

[armlinux @lqm

prj0]$ cat prj0name

--------

prj0/prj0name

---- ----

[armlinux@lqm

>prj0]$ cd .

[armlinux@lqm

parche]$ mkdir prj1

[armlinux@lqm

parche]$ cp prueba1 prj1

[armlinux@lqm

parche]$ cd prj1

[armlinux@lqm

prj1]$ gato

>>prj1nombre<

>

---------

>

prj1/prj1nombre

>

---------

>

EOF

[armlinux@lqm

prj1]$ cat prj1nombre

---------

prj1/prj1nombre

---------

[armlinux@lqm

prj1]$ cd .

Crear parche

[armlinux@lqm

parche]$ diff -uNr prj0 prj1 >

prj1.patch

[armlinux@lqm

parche]$ más prj1.patch

diff -uNr

prj0/prj0name prj1/prj0name

---

prj0/prj0name 2006-08-18

09:25:11.000000000 +0800

+++

prj1/prj0nombre 1970-01-01

08:00:00.000000000 +0800

@@ -1,3 +0,0

@@

---------

-prj0/prj0nombre

---------

diff -uNr

prj0/prj1nombre prj1/prj1nombre

---

prj0/prj1nombre 1970-01-01

08:00:00.000000000 +0800

+++

prj1/prj1nombre 2006-08-18

09:26:36.000000000 +0800

@@ -0,0 +1,3

@@

+---------

+prj1/ prj1nombre

+---------

diff -uNr

prj0/test0 prj1/test0

---

prj0/test0 2006-08-18

09:23:53.000000000 + 0800

+++

prj1/test0 1970-01-01

08:00:00.000000000 +0800

@@ -1,3 +0,0

@@

-1111111

-1111111

-1111111.p>-1111111

diff -uNr

prj0/test1 prj1/test1

---

prj0/ prueba1 1970

-01-01

08:00:00.000000000 +0800

+++

prj1/test1 2006-08-18

09:26:00.000000000 +0800

@@ -0,0 +1,4

@@

+222222

+ 111111

+222222

+111111

[armlinux@lqm

parche]$ ls

prj0 prj1 prj1.patch prueba0 prueba1 prueba1.patch

[armlinux@lqm

parche]$ cp prj1./prj0

[armlinux@lqm

parche]$ cd prj0

[armlinux@lqm

prj0]$ parche -p1 < prj1.patch

Archivo de parche

prj0name

Archivo de parche

prj1name

Archivo de parche

test0

Archivo de parche

prueba1

[armlinux@lqm

prj0]$ ls

prj1nombre prj1.patch prueba1

[armlinux@lqm

prj0]$ parche -R -p1 < prj1.patch

archivo de parche

prj0name

archivo de parche

prj1name

archivo de parche

prueba0

archivo de parche

prueba1

[armlinux@lqm

prj0]$ ls

prj0nombre prj1.patch prueba0

------- ---------- ------- --- --

Resumen:

Archivo único

diff -uN de-archivo

a-archivo >a-archivo .patch

parche -p0

< to-file.patch

parche -RE -p0

< to-file.patch