J'aimerais pouvoir, lorsqu'un programme tel qu'un programme d'installation est exécuté, suivre la liste des modifications apportées à mon système de fichiers afin de pouvoir les annuler par la suite.
EDIT: Cela concerne un programme non packagé . J'utilise apt-get autant que possible.
Idéalement, j'aimerais pouvoir faire quelque chose comme:
(sudo) catch-modifs some-installer.bin > fsmodifs.patch
Et alors:
(sudo) revert-modifs fsmodifs.patch
Existe-t-il un moyen pratique de le faire?
unionfs
- en gros, le système de fichiers RW accepte toutes les écritures, mais le système de fichiers RO est toujours visible en dessous. Si un fichier est modifié, il «migre» vers les RW fs; s'il est supprimé, il y a en fait un "fichier dot magique" sur les RW fs pour le "masquer". La configurationunionfs
peut être un peu délicate, c'est pourquoi j'avais suggéré le LiveUSB (il fait cette partie pour vous, et vous avez une image système «propre» pour commencer)Peut-être jetez un œil à tripwire? Tripwire est plus passif que votre exemple actif, mais il peut toujours fonctionner pour vous.
http://www.linuxjournal.com/article/8758
la source
Jetez un œil à Installwatch:
http://en.wikipedia.org/wiki/Installwatch#Functionality
http://asic-linux.com.mx/~izto/checkinstall/installwatch.html
la source
Permet
LD_PRELOAD
de charger une bibliothèque qui intercepte laopen
fonction de bibliothèque et modifie le chemin d'accès / enregistre la sortie / effectue une sauvegarde avant d'ouvrir le fichier.Jetez un œil au code source de
strace
.la source
Si le programme d'installation utilise une fonction de conditionnement (par exemple pour les
.deb
packages pour Debian / Ubuntu / ..., les.rpm
packages pour RedHat / CentOS / ... etc), le programme d'installation du package doit savoir quoi faire lors de l'installation et de la suppression. Et je crois que vous devez utiliser les systèmes d'emballage existants , pas inventer le vôtre. (Linux n'a généralement pas d'installateurs comme Windows).Si vous voulez vraiment suivre les modifications de fichiers apportées par un processus, vous pouvez utiliser
strace
, oultrace
intercepter les appels système. Vous pouvez également inotifier et les installations associées.Mais je ne connais pas un
catch-modifs
&revert-modifs
comme vous voulez.Je suggère de ne pas faire de programme d'installation pour votre application, mais d'utiliser le gestionnaire de packages, donc de fournir
.deb
(et / ou.rpm
) des packages pour votre application. Ils géreront les problèmes de dépendance mieux que votre propre programme d'installation.la source
Le moyen le plus simple de réaliser ce que vous voulez: installez l'application "non fiable" dans une toute nouvelle instance de machine virtuelle (poste de travail VMWare, Oracle VirtualBox, etc.).
Lorsque vous décidez de ne plus vouloir l'application, supprimez la machine virtuelle.
Vos autres alternatives - intercepter les appels système d'accès aux fichiers - seront probablement sujettes aux erreurs et incomplètes. Méfiez-vous particulièrement de toute solution qui nécessite une liaison dynamique pour fonctionner (comme semble le faire Installwatch). Un installateur peut tout à fait légitimement exercer des appels système directs ou être lié statiquement.
la source