Chciałbym móc, gdy program taki jak instalator jest uruchomiony, śledzić listę zmian wprowadzonych w moim systemie plików, aby móc je później przywrócić.
EDYCJA: Dotyczy to nieopakowanego programu. Używam apt-get tak daleko, jak to możliwe.
Idealnie chciałbym móc zrobić coś takiego:
(sudo) catch-modifs some-installer.bin > fsmodifs.patch
I wtedy:
(sudo) revert-modifs fsmodifs.patch
Czy jest na to wygodny sposób?
unionfs
- w zasadzie system plików RW akceptuje wszystkie zapisy, ale system plików RO jest nadal widoczny pod nim. Jeśli plik się zmieni, „migruje” do pliku RW fs; jeśli zostanie usunięty, faktycznie jest „magiczny plik kropkowy” na RW fs, aby go „zamaskować”. Konfiguracjaunionfs
może być trochę drażliwa, dlatego zasugerowałem LiveUSB (robi to za Ciebie, a ty masz „czysty” obraz systemu na początek)Może rzucisz okiem na tripwire? Tripwire jest bardziej pasywny niż twój aktywny przykład, ale wciąż może działać dla ciebie.
http://www.linuxjournal.com/article/8758
źródło
Spójrz na Installwatch:
http://en.wikipedia.org/wiki/Installwatch#Functionality
http://asic-linux.com.mx/~izto/checkinstall/installwatch.html
źródło
Służy
LD_PRELOAD
do ładowania biblioteki, która przechwytuje funkcjęopen
biblioteki i zmienia nazwę ścieżki / rejestruje dane wyjściowe / tworzy kopię zapasową przed otwarciem pliku.Spójrz na kod źródłowy
strace
.źródło
Jeśli instalator korzysta z jakiegoś narzędzia do pakowania (np. Dla
.deb
pakietów Debian / Ubuntu / ...,.rpm
pakietów dla RedHat / CentOS / ... itd.), Wówczas instalator pakietów powinien wiedzieć, co zrobić podczas instalacji i usuwania. Uważam, że powinieneś korzystać z istniejących systemów pakowania , a nie wymyślać własny. (Linux zwykle nie ma instalatorów takich jak Windows).Jeśli naprawdę chcesz śledzić zmiany plików dokonane przez jakiś proces, możesz użyć
strace
lubltrace
przechwycić wywołania systemowe. Możesz także powiadomić i powiązane usługi.Ale nie wiem o tematyce
catch-modifs
irevert-modifs
jak chcesz.Sugeruję, aby nie tworzyć instalatora dla twojej aplikacji, ale aby użyć menedżera pakietów, a zatem zapewnić
.deb
(i / lub.rpm
) pakiety dla twojej aplikacji. Poradzą sobie z problemami zależności lepiej niż twój własny instalator.źródło
Prosty sposób na osiągnięcie tego, co chcesz: zainstaluj „niezaufaną” aplikację w zupełnie nowej instancji maszyny wirtualnej (stacja robocza VMWare, Oracle VirtualBox itp.).
Jeśli zdecydujesz, że nie chcesz już aplikacji, usuń maszynę wirtualną.
Inne alternatywy - przechwytywanie wywołań dostępu do plików - prawdopodobnie będą podatne na błędy i niekompletne. Zachowaj szczególną ostrożność w przypadku każdego rozwiązania wymagającego dynamicznego łączenia w celu działania (jak wydaje się to robić w przypadku Installwatch). Instalator może całkiem legalnie wykonywać bezpośrednie wywołania systemowe lub być statycznie powiązany.
źródło