GNU/Linux >> Belajar Linux >  >> Debian

Debian – Mencantumkan Paket Pada Sistem Berbasis Apt Berdasarkan Tanggal Instalasi?

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.


Debian
  1. Tambahkan perangkat blok cdrom ke daftar sumber apt Debian

  2. Pemasangan skrip informasi sistem inxi pada Debian Wheezy

  3. Cara membuat daftar semua paket dalam repositori di Ubuntu, Debian atau Linux Mint [APT]

  1. Cara membuat daftar semua atau paket tertentu yang diinstal pada sistem Linux Debian/Ubuntu

  2. Sistem Berbasis Debian, Hanya Satu Program Gui, Tidak Ada Yang Lain?

  3. Debian – Bagaimana Cara Memblokir Non-free Dengan Preferensi Apt?

  1. Debian – Mengotomatiskan Instalasi Paket Debian 8 Individu Dengan Perintah Interaktif?

  2. Debian – Tidak Dapat Memulai Instalasi Devuan/debian?

  3. Debian – Bagaimana Mengubah Sistem Berbasis Debian 32-bit (x86) Menjadi 64-bit?