¿Cómo desinstalar git instalado desde la fuente? [cerrado]


21

Instalé el git usando este artículo . Ahora quiero desinstalar el git. ¿Cómo hacerlo?


1
¿Todavía tiene el código fuente que descargó y make installcon el que hizo ?
Hennes

Sí, tengo el código fuente
Mikhail el

¿Cuál es el resultado de 'make uninstall'? No todos los Makefiles tienen esta opción, pero muchos sí.
Hennes

1
make: *** No hay ninguna regla para hacer que el objetivo `desinstalar '. Detener.
Mikhail

1
por qué -1? explicar
Mikhail

Respuestas:


15

Encontré la solución aquí .

ACTUALIZADO 2.11.2012

Si fue lo suficientemente inteligente y utilizó algún prefijo no estándar cuando configuró Git para que se haya instalado bajo una jerarquía específica, como bajo / opt / git, simplemente elimine esa jerarquía, de forma recursiva.

Si no, entonces podría ir así:

1) Obtenga el tarball fuente de exactamente la versión que compiló e instaló, descomprímalo.

2) Configurarlo exactamente como lo hizo con la instalación original con respecto a las ubicaciones de instalación (prefijo, prefijo exec, etc.); supuestamente no deberías anular nada.

3) Cree un directorio temporal para realizar la instalación, así: $ mkdir / var / tmp / git

4) Instale Git pasando una variable DESTDIR adecuada para hacer: $ make DESTDIR = / var / tmp / git install La jerarquía de Git terminará creada en ese directorio temporal.

5) Use la jerarquía creada para decidir qué archivos eliminar bajo la jerarquía real ("/" en sí).

El último paso es donde ocurre "la magia", por lo que tiene más explicación. Por ejemplo, podrías correr

$ find /var/tmp/git -type f -printf '/%P\n' | xargs -n 10 rm -f

(como root) elimine los archivos instalados por la primera instalación incorrecta en el sistema de archivos raíz. El encantamiento anterior usa la jerarquía / var / tmp / git para imprimir la lista de archivos encontrados, pero reemplaza el prefijo "/ var / tmp / git" en ellos con "/", de modo que "/ var / tmp / git / usr / bin / git "en la salida aparecerá como" / usr / bin / git ". Esta lista es luego verter al xargsque se ejecuta rm en los nombres de archivo se lee en paquetes de diez (sólo para reducir el número de invocaciones de rmun orden de magnitud).

Después de lidiar con los archivos, ejecute

$ find /var/tmp/git -type d -printf '/%P\n'

para inspeccionar la lista de directorios instalados. Estos requieren un enfoque manual, así que solo mire la lista generada y piense cuál de ellos podría proteger rmdirde su sistema de forma segura (estos serán los directorios como "/ usr / libexec / git" o algo así; probablemente no quiera eliminarlos "/ usr / share / man / mann" o algo, incluso si está vacío).

PD: ¡En el futuro, nunca instales nada en un sistema ejecutando make install! La mayoría de los makefiles en estos días no admiten el objetivo de "desinstalación", ya que están acostumbrados a la instalación en una ubicación privada para realizar pruebas o para hacer un paquete (.rpm, .deb, etc.) y luego el administrador de paquetes se encarga de limpiar. Si necesita instalar algo, intente encontrar un paquete oficial o intente realizar una copia de seguridad de otro paquete oficial de una versión más reciente de su sistema operativo, si está disponible. Como último recurso, intente usar la checkinstallherramienta que intenta crear un paquete binario fuera de su make installejecución. Esto apesta, pero aún mejor que desnudo make install.


Expanda algunos de los detalles que se encuentran allí. La descomposición de bits ocurre, y cuando eso ocurre, esta respuesta se vuelve inútil.
sysadmin1138

ok, actualicé mi respuesta
Mikhail

El respeto. funciona
dotslash

Resumen: ./configure. sudo make && sudo make DESTDIR=/var/tmp/git install. sudo find /var/tmp/git -type f -printf '/%P\n' | sudo xargs -n 10 rm -f
Vahid

3

Acabo de pasar por 2691 líneas de Makefile. De hecho no hace desinstalar. Drat

En ese caso, una solución alternativa podría ser utilizar la make rpmopción. Instale las rpm (sobrescribiendo todos los archivos instalados, que deberían ser idénticos a los archivos ya instalados). Luego desinstale las rpm.

En todos los casos futuros, cree un paquete (RPM, mmm, lo que sea). Hace que el mantenimiento sea mucho más fácil.


1
Excepto, por lo general, make installpone cosas en el prefijo, /usr/localmientras que rpm / deb / your-package-here se ejecutan ./configurecon diferentes parámetros para que los archivos que instalan terminen con un prefijo /usr.
ptman

Soy novato en CentOS. ¿Qué comando debo ejecutar? ¿Puede explicar más, por favor
Mikhail

Ejecuté el make rpmcomando. ¿Qué debo hacer a continuación?
Mikhail

Comience con man rpmo 'rpm --help. Probablemente te dirá que uses rpm -i packagename.rpm. Sin embargo, podría ser mejor pedirle ayuda al administrador del sistema en umbrella-web. Solo hay mucho que podamos hacer desde la distancia.
Hennes
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.