Eu gostaria de poder, quando um programa como um instalador for executado, rastrear a lista das modificações feitas no meu sistema de arquivos para que eu possa revertê-las posteriormente.
Edição: trata-se de um programa não empacotado . Eu uso o apt-get o mais longe que posso.
Idealmente, eu gostaria de poder fazer algo como:
(sudo) catch-modifs some-installer.bin > fsmodifs.patch
E depois:
(sudo) revert-modifs fsmodifs.patch
Existe uma maneira conveniente de fazer isso?
unionfs
- basicamente, o sistema de arquivos RW aceita todas as gravações, mas o sistema de arquivos RO ainda está visível abaixo dele. Se um arquivo for alterado, ele "migra" para o RW fs; se for excluído, na verdade existe um "arquivo de ponto mágico" no RW fs para "mascará-lo". A configuraçãounionfs
pode ser um pouco delicada, é por isso que sugeri o LiveUSB (ele faz essa parte para você, e você tem uma imagem de sistema “limpa” para começar) #Talvez dê uma olhada no tripwire? O Tripwire é mais passivo que o seu exemplo ativo, mas ainda pode funcionar para você.
http://www.linuxjournal.com/article/8758
fonte
Dê uma olhada no Installwatch:
http://en.wikipedia.org/wiki/Installwatch#Functionality
http://asic-linux.com.mx/~izto/checkinstall/installwatch.html
fonte
Use
LD_PRELOAD
para carregar uma biblioteca que intercepta aopen
função de biblioteca e altera o nome do caminho / registra a saída / faz um backup antes de abrir o arquivo.Dê uma olhada no código fonte para
strace
.fonte
Se o instalador usa algum recurso de empacotamento (por exemplo
.deb
, para pacotes para Debian / Ubuntu / ...,.rpm
pacotes para RedHat / CentOS / ... etc), o instalador do pacote deve saber o que fazer na instalação e remoção. E acredito que você deve usar os sistemas de embalagem existentes , não inventar o seu próprio. (Linux convencionalmente não tem instaladores como o Windows).Se você realmente deseja acompanhar as alterações nos arquivos feitas por algum processo, pode usar
strace
oultrace
capturar chamadas do sistema. Você também pode inotificar e instalações relacionadas.Mas eu não sei como
catch-modifs
erevert-modifs
você quer.Eu sugiro não criar um instalador para o seu aplicativo, mas usar o gerenciador de pacotes, portanto, fornecer
.deb
(e / ou.rpm
) pacotes para o seu aplicativo. Eles lidarão com os problemas de dependência melhor do que o seu próprio instalador.fonte
A maneira mais fácil de conseguir o que você deseja: instale o aplicativo "não confiável" em uma instância de máquina virtual totalmente nova (estação de trabalho VMWare, Oracle VirtualBox etc.).
Quando você decidir que não deseja mais o aplicativo, exclua a máquina virtual.
Suas outras alternativas - capturar syscalls de acesso a arquivos - provavelmente serão propensas a erros e incompletas. Seja especialmente cuidadoso com qualquer solução que exija vinculação dinâmica para funcionar (como o Installwatch parece fazer). Um instalador pode legitimamente exercer chamadas diretas ao sistema ou ser vinculado estaticamente.
fonte