Me gustaría poder, cuando se ejecuta un programa como un instalador, rastrear la lista de las modificaciones realizadas en mi sistema de archivos para que luego pueda revertirlas.
EDITAR: Esto se refiere a un programa no empaquetado . Yo uso apt-get lo más lejos que puedo.
Idealmente, me gustaría poder hacer algo como:
(sudo) catch-modifs some-installer.bin > fsmodifs.patch
Y entonces:
(sudo) revert-modifs fsmodifs.patch
¿Hay una manera conveniente de hacer eso?
unionfs
: básicamente, el sistema de archivos RW acepta todas las escrituras, pero el sistema de archivos RO todavía es visible debajo de él. Si un archivo ha cambiado, "migra" al RW fs; si se elimina, en realidad hay un "archivo de puntos mágico" en el RW fs para "enmascararlo". La configuraciónunionfs
puede ser un poco complicada, es por eso que le sugerí LiveUSB (hace esa parte por usted, y tiene una imagen de sistema "limpia" para comenzar)Tal vez echar un vistazo a Tripwire? Tripwire es más pasivo que su ejemplo activo, pero aún puede funcionar para usted.
http://www.linuxjournal.com/article/8758
fuente
Echa un vistazo a Installwatch:
http://en.wikipedia.org/wiki/Installwatch#Functionality
http://asic-linux.com.mx/~izto/checkinstall/installwatch.html
fuente
Se usa
LD_PRELOAD
para cargar una biblioteca que intercepta laopen
función de la biblioteca y cambia el nombre de ruta / registra la salida / hace una copia de seguridad antes de abrir el archivo.Echa un vistazo al código fuente de
strace
.fuente
Si el instalador utiliza alguna instalación de empaquetado (es decir, para
.deb
paquetes para Debian / Ubuntu / ...,.rpm
paquetes para RedHat / CentOS / ... etc.), entonces el instalador de paquetes debe saber qué hacer durante la instalación y la eliminación. Y creo que debe usar los sistemas de embalaje existentes , no inventar el suyo. (Linux convencionalmente no tiene instaladores como Windows).Si realmente desea seguir los cambios de archivo realizados por algún proceso, puede usar
strace
oltrace
capturar llamadas del sistema. También puede inotificar e instalaciones relacionadas.Pero no sé de un
catch-modifs
&revert-modifs
como quieres.Sugiero no hacer un instalador para su aplicación, sino usar el administrador de paquetes, por lo tanto, proporcionar
.deb
(y / o.rpm
) paquetes para su aplicación. Manejarán los problemas de dependencia mejor que su propio instalador.fuente
La manera fácil de lograr lo que desea: instale la aplicación "no confiable" en una nueva instancia de máquina virtual (estación de trabajo VMWare, Oracle VirtualBox, etc.).
Cuando decida que ya no desea la aplicación, elimine la máquina virtual.
Sus otras alternativas, la captura de llamadas al sistema de acceso a archivos, probablemente serán propensas a errores e incompletas. Tenga especial cuidado con cualquier solución que requiera vinculación dinámica para funcionar (como parece hacer Installwatch). Un instalador puede ejercer legítimamente llamadas directas al sistema o estar vinculado estáticamente.
fuente