¿Cómo aplico parches de software?


Respuestas:


21

Los parches generalmente están contenidos en .diffarchivos, porque los parches se crean usando el diffcomando.

Un parche es una serie de inserciones y eliminaciones en el código fuente. Por esta razón, para usar el parche, debe compilar la aplicación (por ejemplo, "foobar") desde la fuente después de aplicar el parche. Entonces, en pasos:

1. Obtenga el paquete fuente para foobar .

La mayoría de las distribuciones de Linux (los parches nb no son exclusivos de Linux) tienen "paquetes fuente" que puede usar para este propósito, pero como son heterogéneos, aquí solo me referiré al formato de la fuente original. La fuente original no es parte de la distribución y puede ser difícil de encontrar. Un buen lugar para comenzar es Wikipedia, que tiene artículos para muchas aplicaciones populares, y el artículo debe contener un enlace a una página de inicio con una descarga de origen. También puedes buscar en Google, obviamente. El paquete fuente se llamará algo así foobar.0.1.tar.bz2. Desempaquete esto: ahora tiene un directorio llamado foobar.0.1.

2. Agregue el parche.

A veces, los parches son archivos únicos y, a veces, son un conjunto de varios archivos. Copie esos en foobar.0.1y cd foobar.0.1. A continuación, debe ejecutar el patchcomando. Esto se lee desde la entrada estándar, por lo que desea canalizar el .diffarchivo. La parte difícil es determinar qué usar para la -popción (si no hay instrucciones con el parche). Para hacer eso, debe mirar al principio del archivo de revisión. Por ejemplo:

--- old/comm.c  2003-09-08 14:25:08.000000000 +0000
+++ new/comm.c  2006-07-07 02:39:24.000000000 +0000

En este caso, comm.ces el nombre del archivo fuente que se alterará. Sin embargo, observe que hay un directorio adjunto. Dado que estos no son el mismo directorio ("antiguo" frente a "nuevo"), esta es una gran pista de que esta parte de la ruta es basura (para nuestros propósitos). El propósito del -pinterruptor (ver man patch) es eliminar este prefijo. Se necesita un número, que es el número de barras ( /) para eliminar, con todo en el medio; en este caso, usaríamos -p1para reducir la ruta a simple comm.c.

Eso supone comm.cque en realidad está en el mismo directorio, lo que será otra pista sobre si su interpretación es correcta. Si ambas líneas estaban src/comm.c, y comm.crealmente están en el srcsubdirectorio de su árbol de construcción, entonces necesita usar -p0, tenga en cuenta que si no usa -pnada, eliminará TODAS las barras. Si el camino es absoluto (es decir, comienza con /), eso es probablemente lo que desea. Ahora aplique el parche:

patch -p1 < patch.diff

La fuente ahora ha sido modificada. Si hay más .diffarchivos, aplíquelos de la misma manera.

3. Construir e instalar.

Este es el proceso normal que se vaya a través de construir algo de la fuente - primero ./configure, a continuación make, make check, make install. Antes de hacer la última, si ya tiene una instalación existente foobar, decida si desea eliminar o sobrescribir eso o cómo va a lidiar con el conflicto de nombres. Probablemente quiera foobarreferirse a su nueva versión parcheada, y no a la anterior.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.