Saya ingin dapat, ketika sebuah program seperti installer dijalankan, melacak daftar modifikasi yang dibuat untuk sistem file saya sehingga saya dapat mengembalikannya setelah itu.
EDIT: Ini menyangkut program yang tidak dikemas . Saya menggunakan apt-get sejauh yang saya bisa.
Idealnya saya ingin dapat melakukan sesuatu seperti:
(sudo) catch-modifs some-installer.bin > fsmodifs.patch
Lalu:
(sudo) revert-modifs fsmodifs.patch
Apakah ada cara mudah untuk melakukan itu?
unionfs
- pada dasarnya, sistem berkas RW menerima semua penulisan, tetapi sistem berkas RO masih terlihat di bawahnya. Jika file berubah, itu "bermigrasi" ke RW fs; jika itu dihapus, sebenarnya ada "magic dotfile" pada RW fs untuk "menutupi" itu. Menyiapkanunionfs
bisa menjadi sedikit sensitif, itulah sebabnya saya menyarankan LiveUSB (itu bagian untuk Anda, dan Anda memiliki gambar sistem "bersih" untuk memulai)Mungkin lihat tripwire? Tripwire lebih pasif dari pada contoh aktif Anda, tetapi tetap bisa bekerja untuk Anda.
http://www.linuxjournal.com/article/8758
sumber
Lihatlah Installwatch:
http://en.wikipedia.org/wiki/Installwatch#Functionality
http://asic-linux.com.mx/~izto/checkinstall/installwatch.html
sumber
Gunakan
LD_PRELOAD
untuk memuat pustaka yang memotongopen
fungsi pustaka dan mengubah pathname / mencatat output / membuat cadangan sebelum membuka file.Lihatlah kode sumber untuk
strace
.sumber
Jika pemasang menggunakan beberapa fasilitas pengemasan (yaitu untuk
.deb
paket untuk Debian / Ubuntu / ...,.rpm
paket untuk RedHat / CentOS / ... dll) maka pemasang paket harus tahu apa yang harus dilakukan pada instalasi dan penghapusan. Dan saya percaya Anda harus menggunakan sistem pengemasan yang ada , bukan menciptakan sistem pengemasan Anda sendiri. (Linux secara konvensional tidak memiliki installer seperti halnya Windows).Jika Anda benar-benar ingin mengikuti perubahan file yang dibuat oleh beberapa proses, Anda bisa menggunakan
strace
, ataultrace
untuk menangkap panggilan sistem. Anda juga dapat memberitahukan dan fasilitas terkait.Tapi saya tidak tahu tentang
catch-modifs
&revert-modifs
seperti yang Anda inginkan.Saya menyarankan untuk tidak membuat installer untuk aplikasi Anda, tetapi untuk menggunakan manajer paket, maka untuk menyediakan
.deb
(dan / atau.rpm
) paket untuk aplikasi Anda. Mereka akan menangani masalah ketergantungan lebih baik daripada installer Anda sendiri.sumber
Cara mudah untuk mencapai apa yang Anda inginkan: instal aplikasi "tidak tepercaya" dalam mesin virtual virtual baru (workstation VMWare, Oracle VirtualBox, dll.).
Ketika Anda memutuskan tidak lagi menginginkan aplikasi tersebut, hapus mesin virtualnya.
Alternatif Anda yang lain - menangkap syscalls akses file - cenderung rentan kesalahan dan tidak lengkap. Berhati-hatilah terhadap solusi apa pun yang membutuhkan penautan dinamis agar dapat berfungsi (seperti yang dilakukan Installwatch). Pemasang dapat secara sah menjalankan panggilan sistem langsung, atau dihubungkan secara statis.
sumber