¿Compatibilidad con CMake “hacer desinstalación”?
uninstall (3)
Estoy tratando de encontrar alguna solución libre de sudo
para permitir que mis usuarios instalen y desinstalen mi aplicación. Utilizando
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/opt/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}/")
SET(CMAKE_INSTALL_RPATH "$ENV{HOME}/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}/")
Puedo dirigir los archivos al directorio principal del usuario, y
make install
funciona bien. Con referencia a ¿Qué es lo contrario de ''make install'', es decir. ¿Cómo se desinstala una biblioteca en Linux? No encontré ninguna idea, que es sudo
-free y no es compleja para una persona que no es administrador del sistema.
¿Es la
make uninstall
de alguna manera compatible con CMake?Mi desinstalación es bastante simple: todos los archivos van en un subdirectorio de la casa del usuario. En principio, se eliminó ese nuevo subdirectorio que podría solucionar el problema. ¿Ha realizado la
make install
, con los parámetros anteriores, algún efecto secundario, o puedo escribir en mi guía del usuario que el subdirectorio recién producido se puede eliminar como ''desinstalar''?
Eliminar archivos y carpetas (solo vacío) agregados por make install
desde un proyecto cmake:
cat install_manifest.txt | sudo xargs rm
cat install_manifest.txt | xargs -L1 dirname | sudo xargs rmdir -p
El segundo comando imprimirá un montón de errores porque elimina las carpetas de forma recursiva hasta que encuentra uno que no está vacío. Me gusta ver esos errores para saber qué carpetas quedan. Si desea ocultar estos errores, puede agregar --ignore-fail-on-non-empty
a rmdir.
No no hay. Ver en el FAQ de CMake wiki :
De forma predeterminada, CMake no proporciona el objetivo de "realizar desinstalación", por lo que no puede hacer esto. No queremos que "haga la desinstalación" para eliminar archivos útiles del sistema.
Si desea un objetivo de "desinstalación" en su proyecto, nadie le impide proporcionar uno. Debe eliminar los archivos enumerados en el archivo install_manifest.txt. [seguido de un código de ejemplo]
Si desea agregar un destino de desinstalación , puede consultar las preguntas frecuentes oficiales de CMake en:
https://gitlab.kitware.com/cmake/community/wikis/FAQ#can-i-do-make-uninstall-with-cmake
Si solo desea una manera rápida de desinstalar todos los archivos, simplemente ejecute:
xargs rm < install_manifest.txt
install_manifest.txt
archivo install_manifest.txt
se crea cuando ejecuta make install
.