Mientras corre
./configure --prefix=/mingw
en un sistema MinGW / MSYS para una biblioteca que había ejecutado anteriormente
'./configure --prefix=/mingw && make && make install'
Me encontré con este mensaje:
ADVERTENCIA: Ya está instalada una versión del SDK del complemento de Vamp. Espere preocupaciones y penas si instala una nueva versión sin eliminar primero la anterior. (Continuo)
Esto me tenía preocupado. ¿Qué es lo contrario de 'make install', es decir, cómo se desinstala una biblioteca en Linux? ¿'Clean' hará el trabajo o hay otros pasos involucrados?
sudo make uninstall
si los archivos de configuración de instalación todavía están disponibles, pero no hay otras soluciones obvias si no, aparte de la desinstalación con la utilidad de administración de paquetes del sistema si está instalado con "checkinstall "utilidad.make install
, nunca he necesitadomake uninstall
eliminarlos. Siempre he usadoxargs rm < install_manifest.txt
Respuestas:
make clean
elimina cualquier archivo intermedio o de salida de su árbol de origen / compilación. Sin embargo, solo afecta el árbol de origen / compilación; no toca el resto del sistema de archivos y, por lo tanto, no eliminará el software instalado previamente.Si tienes suerte, correr
make uninstall
funcionará. Sin embargo, depende de los autores de la biblioteca proporcionar eso; algunos autores proporcionan ununinstall
objetivo, otros no.Si no tienes suerte, tendrás que desinstalarlo manualmente. La ejecución
make -n install
puede ser útil, ya que mostrará los pasos que el software tomaría para instalarse, pero en realidad no hará nada. Luego puede revertir manualmente esos pasos.fuente
Si
sudo make uninstall
no está disponible:En un sistema basado en Debian, en lugar de hacerlo (o después *)
make install
puede ejecutarsudo checkinstall
para crear un.deb
archivo que se instala automáticamente. Luego puede eliminarlo utilizando el administrador de paquetes del sistema (papt
. Ej. /synaptic
/aptitude
/dpkg
). Checkinstall también admite la creación de otros tipos de paquetes, por ejemplo, RPM.Consulte también http://community.linuxmint.com/tutorial/view/162 y algunos usos básicos de checkinstall y el paquete debian checkinstall .
*: Si está leyendo esto después de haber instalado con
make install
usted, aún puede seguir las instrucciones anteriores y hacer lo siguientedpkg -r $PACKAGE_NAME_YOU_CHOSEN
.fuente
make install
antes de usarlocheckinstall
.checkinstall
para esta excelente respuesta al trabajo.checkinstall
y si la nueva compilación se realiza con la misma configuración que la anterior, desinstalando el paquete instalado concheckinstall
debería eliminar los archivos instalados previamente.Si tiene un
manifest
archivo que enumera todos los archivos que se instalaronmake install
, puede ejecutar este comando que tengo de otra respuesta:Si tiene
sudo make install
, deberá agregar un sudo a su desinstalación:fuente
xargs echo rm | sh
? Es bastante obvio que quien sugirió esto no es particularmente experimentado o conocedor en el uso del shell.install_manifest.txt
contiene un asterisco ...rm *
se canalizará dentro de un caparazón.) Votado abajo, por esta razón.install_manifest.txt
se puede esperar que exista?Dependiendo de qué tan bien el makefile / configure script / autofoo magic del programa en cuestión es lo siguiente podría resolver su problema:
El problema es que debe ejecutar esto en el árbol de origen de la versión que tiene instalada y con exactamente la misma configuración que utilizó para la instalación.
fuente
Cómo desinstalar después de "hacer instalar"
Método # 1 (hacer desinstalación)
Paso 1: Usted sólo tiene que seguir este paso si se ha borrado / modificado la carpeta de compilación de ninguna manera: Descargar y hacer / realizar la instalación mediante la exacta mismo procedimiento como lo hacía antes.
Paso 2: intente hacer la desinstalación.
Si esto tiene éxito, ya está. Si eres paranoico, también puedes probar los pasos del "Método # 3" para asegurarte de
make uninstall
que no te pierdas ningún archivo.Método # 2 (checkinstall - solo para sistemas basados en Debian)
Resumen del proceso
En los sistemas basados en Debian (p. Ej., Ubuntu), puede crear un
.deb
paquete muy fácilmente utilizando una herramienta llamadacheckinstall
. Luego instala el paquete .deb (esto hará que su sistema Debian se dé cuenta de que todas las partes de su paquete se han instalado) y finalmente lo desinstale para permitir que su administrador de paquetes limpie adecuadamente su sistema.Paso a paso
En este punto, se
checkinstall
le solicitará un nombre de paquete. Ingrese algo un poco descriptivo y anótelo porque lo usará en un minuto. También solicitará algunos datos más que puede ignorar. Si se queja de que la versión no es aceptable, simplemente ingrese algo razonable como1.0
. Cuando finalice, puede instalar y finalmente desinstalar:Método # 3 (install_manifest.txt)
Si
install_manifest.txt
existe un archivo en su directorio de origen, debe contener los nombres de cada archivo creado por la instalación.Entonces, primero verifique la lista de archivos y su tiempo de modificación:
Debería obtener cero errores y los tiempos de modificación de los archivos listados deberían estar en o después del tiempo de instalación. Si todo está bien, puede eliminarlos de una vez:
Sin embargo, el usuario Merlyn Morgan-Graham tiene un aviso serio sobre este método que debe tener en cuenta (copiado aquí al pie de la letra): "Tenga cuidado con los archivos que también podrían haber sido instalados por otros paquetes. Simplemente borrando estos archivos podría [...] romper los otros paquetes ". . Esa es la razón por la que creamos el
deleted-by-uninstall
directorio y movimos los archivos allí en lugar de eliminarlos.El 99% de esta publicación existía en otras respuestas. Acabo de recopilar todo lo útil en un (con suerte) fácil de seguir y traté de prestar atención adicional a los detalles importantes (como citar argumentos xarg y mantener copias de seguridad de archivos eliminados).
fuente
make clean
generalmente solo limpia los archivos compilados en el directorio que contiene el código fuente en sí, y rara vez toca algún software instalado.Los archivos MAKE generalmente no contienen un objetivo para la desinstalación, generalmente debe hacerlo usted mismo, eliminando los archivos del directorio en el que se instalaron. Por ejemplo, si usted construyó un programa y lo instaló (usando
make install
) en/usr/local
, te gustaría ver a través de/usr/local/bin
,/usr/local/libexec
,/usr/local/share/man
, etc, y eliminar los archivos no deseados. A veces, un Makefile incluye ununinstall
objetivo, pero no siempre.Por supuesto, normalmente en un sistema Linux instalas el software utilizando un administrador de paquetes , que es capaz de desinstalar el software "automáticamente".
fuente
La utilidad "guardar" se diseñó para resolver este problema: http://www.gnu.org/software/stow/
fuente
stow
para resolver este problema?Desafortunadamente, no hay un estándar, este es uno de los peligros de instalar desde la fuente. Algunos Makefiles incluirán una "desinstalación", por lo que
desde el directorio de origen puede funcionar. De lo contrario, puede ser una cuestión de deshacer manualmente lo que
make install
hizo.make clean
por lo general, solo limpia el directorio de origen, eliminando los archivos generados / compilados y similares, probablemente no lo que buscas.fuente
Conozco algunos paquetes que admiten "realizar desinstalación", pero muchos más que admiten la instalación de DESTDIR = xxx "para instalaciones por etapas.
Puede usar esto para crear un paquete que instale en lugar de instalarlo directamente desde la fuente. No tuve suerte con checkinstall pero fpm funciona muy bien.
Esto también puede ayudarlo a eliminar un paquete previamente instalado usando make install . Simplemente fuerce la instalación de su paquete integrado sobre la marca instalada y luego desinstálelo.
Por ejemplo, usé esto recientemente para tratar con protobuf-3.3.0. En RHEL7:
Prefiere ñam a rpm si puedes.
En Debian9:
Prefiere apt a dpkg donde puedas.
También he publicado la respuesta aquí
fuente
Make
puede decirle lo que sabe y lo que hará. Supongamos que tiene un objetivo de "instalación", que ejecuta comandos como:En sus reglas genéricas, agregue:
Un truco similar puede hacer un genérico
make clean
.fuente
Preámbulo
a continuación puede funcionar o no, todo esto se da tal cual, usted y solo usted es la persona responsable en caso de algún daño, pérdida de datos, etc. ¡Pero espero que las cosas salgan bien!
Para deshacer
make install
, haría (y lo hice) esto:Idea: verifique cualquier script que se instale y deshaga esto con un simple script bash.
--prefix=$PWD/install
. Para CMake, puede ir a su directorio de compilación, abrir CMakeCache.txt y corregir el valor CMAKE_INSTALL_PREFIX.make install
vuelva a ejecutarlo ).make install
secuencia de comandos se instala en el directorio personalizado con el mismo contenido que desea eliminar de otro lugar (generalmente/usr/local
). Entonces, necesitamos un guión. 3.1. El script debe comparar el directorio personalizado, con el directorio que desea limpiar. Yo uso esto:anti-install.sh
3.2. Ahora solo ejecute este script (se ejecutará en seco)
Por ejemplo, si desea limpiar / usr / local, y su directorio de instalación personalizado es /user/me/llvm.build/install, entonces sería
3.3. Verifique el registro cuidadosamente, si los comandos son buenos para usted, descomente
rm $RM_DIR/$fn
y ejecútelo nuevamente. Pero para! ¿Realmente revisaste cuidadosamente? Se puede comprobar de nuevo?Fuente de las instrucciones: https://dyatkovskiy.com/2019/11/26/anti-make-install/
¡Buena suerte!
fuente