Cuando instalo un programa simple, a menudo usa make && make install
y ni siquiera tiene un objetivo de desinstalación .
Si deseo actualizar un programa, ¿es un protocolo estándar asumir que simplemente se reescribe sin problemas sobre el programa anterior?
¿Cómo hago un seguimiento de estos programas? ¿La mayoría de las personas simplemente 'disparan y olvidan' y si no se proporciona un objetivo de desinstalación , tengo que eliminar todo manualmente?
Respuestas:
Instale cada programa en un árbol de directorios dedicado y use Stow o XStow para que todos los programas aparezcan en una jerarquía común. Stow crea enlaces simbólicos del directorio específico del programa a un árbol común.
Con más detalle, elija un directorio de nivel superior, por ejemplo
/usr/local/stow
. Instale cada programa debajo/usr/local/stow/PROGRAM_NAME
. Por ejemplo, organice la instalación de sus ejecutables/usr/local/stow/PROGRAM_NAME/bin
, sus páginas de manual,/usr/local/stow/man/man1
etc. Si el programa usa autoconf, ejecute./configure --prefix /usr/local/stow/PROGRAM_NAME
. Después de que hayas corridomake install
, correstow
:Y ahora tendrás enlaces simbólicos como estos:
Puede hacer un seguimiento fácil de los programas que ha instalado enumerando el contenido del
stow
directorio, y siempre sabe a qué programa pertenece un archivo porque es un enlace simbólico a una ubicación en el directorio de ese programa. Desinstale un programa ejecutando ystow -D PROGRAM_NAME
luego eliminando el directorio del programa. Puede hacer que un programa no esté disponible temporalmente ejecutandostow -D PROGRAM_NAME
(ejecutestow PROGRAM_NAME
para que esté disponible nuevamente).Si desea poder cambiar rápidamente entre diferentes versiones del mismo programa, úselo
/usr/local/stow/PROGRAM_NAME-VERSION
como el directorio del programa. Para actualizar de la versión 3 a la versión 4, instale la versión 4, luego ejecutestow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
.Las versiones anteriores de Stow no van mucho más allá de lo básico que describí en esta respuesta. Las versiones más recientes, así como XStow (que no se ha mantenido últimamente) tienen características más avanzadas, como la capacidad de ignorar ciertos archivos, hacer frente mejor a los enlaces simbólicos existentes fuera del directorio de almacenamiento (como
man -> share/man
), manejar algunos conflictos automáticamente (cuando dos los programas proporcionan el mismo archivo), etc.Si no tiene o no desea utilizar el acceso raíz, puede elegir un directorio en su directorio de inicio, por ejemplo
~/software/stow
. En este caso, agregue~/software/bin
a suPATH
. Siman
no encuentra automáticamente páginas de manual, agréguelas~/software/man
a suMANPATH
. Agregue~/software/info
a suINFOPATH
,~/software/lib/python
a suPYTHONPATH
, etc., según corresponda.fuente
Puede usar checkinstall para crear un paquete (paquetes compatibles con RPM, Deb o Slackware) De esa manera, puede usar su administrador de paquetes de distribución para agregar / eliminar la aplicación (pero no actualizar)
Usted usa
checkinstall
en lugar delmake install
comando (usando el parámetro -D para Deb; -R es RPM y -S es Slackware):checkinstall compilará e instalará el paquete de manera predeterminada, o puede hacer que solo compile el paquete sin instalarlo.
checkinstall está disponible en la mayoría de los repositorios de distros.
fuente
checkinstall
parece que no se mantiene activamente (?) :-(En su mayor parte, esta fue la razón detrás de los paquetes, puertos y otros tipos de administradores para evitar que este tipo de cosas sucedan.
Yo diría que la eliminación manual es la única forma de una instalación manual, a menos que alguien más tenga una mejor respuesta a ese punto que no conozco.
fuente
Una alternativa más es de las sugerencias de Linux From Scratch :
Más control y gestión de paquetes con usuarios de paquetes
Después de esta primera sugerencia cruda, encontré una variante evolucionada:
crablfs - Sistema de gestión de paquetes basado en el usuario
Este
crablfs
es el último espécimen de administración de paquetes que usa uids y gids únicos para la administración de paquetes, pero en sourceforge está evolucionando nuevamente en ulfs:uLFS: su Linux manejable y reutilizable desde cero
Para los usuarios causales de paquetes instalados, creo que la solución LFS para "usuarios de paquetes" es ligera, menos invasiva y elegante. En resumen, instala paquetes en
/usr/local
o/home/user/local
y rastrea archivos usando uids y gids únicos para cada paquete pero coloca todos los archivos en los lugares tradicionales, directorios comunes/usr/local/bin
,/usr/local/lib
como en todas las distribuciones de Linux convencionales ... oclusión de archivos y sobrescritura o eliminación de archivos no deseados es evitado por un truco ordenado de Linux explicado por Matthias S. Benkmann en more_control_and_pkg_man.txt que solo necesita manipulación de permisos de archivos y directorios normales, por ejemplo, el permiso de bits fijos para directorios para evitar sobrescrituras de archivos no deseados:¡Para mí parece una solución simple e inteligente! Usé este esquema en mi compilación LFS y es una solución que funciona ...
fuente
tar
archivos de la instalación/usr/src/non-rpms
para recordarle (eso es lo que suelo hacer).fuente