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
(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.
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.
make install
con el que hizo ?Respuestas:
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
(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
xargs
que se ejecutarm
en los nombres de archivo se lee en paquetes de diez (sólo para reducir el número de invocaciones derm
un orden de magnitud).Después de lidiar con los archivos, ejecute
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
rmdir
de 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 lacheckinstall
herramienta que intenta crear un paquete binario fuera de sumake install
ejecución. Esto apesta, pero aún mejor que desnudomake install
.fuente
./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
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 rpm
opció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.
fuente
make install
pone cosas en el prefijo,/usr/local
mientras que rpm / deb / your-package-here se ejecutan./configure
con diferentes parámetros para que los archivos que instalan terminen con un prefijo/usr
.make rpm
comando. ¿Qué debo hacer a continuación?man rpm
o'rpm --help
. Probablemente te dirá que usesrpm -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.