Bagaimana cara membuat daftar paket yang diinstal berdasarkan tanggal pemasangan?
Saya perlu melakukan ini di debian/ubuntu. Jawaban untuk distribusi lain juga bagus.
Saya menginstal banyak hal untuk mengkompilasi bagian kode tertentu, dan saya ingin mendapatkan daftar paket yang harus saya instal.
Jawaban yang Diterima:
Distribusi berbasis RPM seperti Red Hat mudah dilakukan:
rpm -qa --last
Pada Debian dan distribusi berbasis dpkg lainnya, masalah spesifik Anda juga mudah:
grep install /var/log/dpkg.log
Kecuali jika file log telah diputar, dalam hal ini Anda harus mencoba:
grep install /var/log/dpkg.log /var/log/dpkg.log.1
Secara umum, dpkg
dan apt
sepertinya tidak melacak tanggal pemasangan, karena tidak ada bidang seperti itu di dpkg-query
halaman manual.
Dan akhirnya /var/log/dpkg.log.*
. yang lama file akan dihapus dengan rotasi log, jadi cara itu tidak menjamin Anda memberikan seluruh riwayat sistem Anda.
Salah satu saran yang muncul beberapa kali (misalnya utas ini) adalah dengan melihat /var/lib/dpkg/info
direktori.
File di sana menyarankan Anda untuk mencoba sesuatu seperti:
ls -t /var/lib/dpkg/info/*.list | sed -e 's/.list$//' | head -n 50
Untuk menjawab pertanyaan Anda tentang seleksi, ini adalah pass pertama.
buat daftar paket berdasarkan tanggal
$ find /var/lib/dpkg/info -name "*.list" -exec stat -c $'%nt%y' {} ; |
sed -e 's,/var/lib/dpkg/info/,,' -e 's,.listt,t,' |
sort > ~/dpkglist.dates
membuat daftar paket yang diinstal
$ dpkg --get-selections | sed -ne '/tinstall$/{s/[[:space:]].*//;p}' |
sort > ~/dpkglist.selections
bergabung dengan 2 daftar
$ join -1 1 -2 1 -t $'t' ~/dpkglist.selections ~/dpkglist.dates
> ~/dpkglist.selectiondates
Untuk beberapa alasan itu tidak mencetak banyak perbedaan untuk saya, jadi mungkin ada bug atau asumsi yang tidak valid tentang apa --get-selections
artinya.
Anda jelas dapat membatasi paket dengan menggunakan find . -mtime -<days>
atau head -n <lines>
, dan ubah format output sesuka Anda, mis.
$ find /var/lib/dpkg/info -name "*.list" -mtime -4 |
sed -e 's,/var/lib/dpkg/info/,,' -e 's,.list$,,' |
sort > ~/dpkglist.recent
$ join -1 1 -2 1 -t $'t' ~/dpkglist.selections ~/dpkglist.recent
> ~/dpkglist.recentselections
untuk mencantumkan hanya pilihan yang diinstal (diubah?) dalam 4 hari terakhir.
Anda mungkin juga dapat menghapus sort
perintah setelah memverifikasi urutan pengurutan yang digunakan oleh dpkg --get-selections
dan buat find
perintah lebih efisien.