Jawaban:
Semua tindakan dengan apt (apt-get) dicatat. File-file ini tersedia di / var / log / apt /. Untuk melihat log riwayat terbaru, jalankan:
less /var/log/apt/history.log
Log ini akan diputar (setiap bulan saya kira), file-file lama akan berakhiran dengan angka dan dikompres. Jadi untuk melihat log riwayat selanjutnya, gunakan:
zless /var/log/apt/history.log.1.gz
Untuk melihat log yang tersedia:
ls -la /var/log/apt/
Anda juga dapat membuat perintah singkat untuk menampilkan konten yang menarik.
Tambahkan fungsi khusus ini ke ~/.bashrc
:
### pars for fun: install | remove | rollback
function apt-history(){
case "$1" in
install)
grep 'install ' /var/log/dpkg.log
;;
upgrade|remove)
grep $1 /var/log/dpkg.log
;;
rollback)
grep upgrade /var/log/dpkg.log | \
grep "$2" -A10000000 | \
grep "$3" -B10000000 | \
awk '{print $4"="$5}'
;;
*)
cat /var/log/dpkg.log
;;
esac
}
Dan menyebutnya di terminal seperti ini:
kreso@h17:~$ apt-history install
2013-08-06 14:42:36 install gir1.2-nautilus-3.0:amd64 <none> 1:3.8.2-0ubuntu1~ubuntu13.04.1
2013-08-06 14:42:36 install python-nautilus:amd64 <none> 1.1-3ubuntu1
2013-08-06 14:42:37 install insync-nautilus:all <none> 1.0.20
2013-08-07 14:41:37 install powertop:amd64 <none> 2.1-0ubuntu1
2013-08-07 18:44:10 install libdiscid0:amd64 <none> 0.2.2-3build1
2013-08-07 18:44:11 install sound-juicer:amd64 <none> 3.5.0-0ubuntu1
Diambil dari sini
zgrep ... /var/log/dpkg.log*
- Output entri dari arsip juga.
Anda juga dapat menggunakan perintah berikut untuk mendaftar paket yang baru diinstal
grep "\ install\ " /var/log/dpkg.log
grep "\ install\ " /var/log/apt/history.log
jika Anda perlu menyalin dan menempel daftar ke apt-get
Jika Anda ingin paket-paket yang diinstal dan tidak kemudian dihapus, coba ini:
comm -23 <(grep "apt-get install" /var/log/apt/history.log | sed 's/.* //' | sort) \
<(grep "apt-get remove" /var/log/apt/history.log | sed 's/.* //' | sort)
Ini adalah pemasangan minus penghapusan yang cocok.
Referensi:
sort
, gunakan sort -u
dalam kedua kasus untuk menghindari duplikat baris muncul seperti dalam paket suka oracle-java8-installer
dan banyak lainnya.
Inilah cara Anda benar-benar melakukannya, katakan paket bergumam:
_P=mutter &&
(cat /var/log/dpkg.log{,.1};zcat /var/log/dpkg.log.*.gz) |
egrep --text "^[^ ]* [^ ]* (configure|install|remove|status [^ ]*|trigproc|upgrade) $_P[: ]" |
sort --reverse | less
Menggunakan dpkg.log menangkap operasi yang tidak dilihat oleh apt-get.
Keluaran:
2016-12-20 09:47:35 status unpacked mutter:amd64 3.22.2-2ubuntu1~ubuntu16.10.1
2016-12-20 09:47:35 status installed mutter:amd64 3.22.2-2ubuntu1~ubuntu16.10.1
…
Untuk mendapatkan riwayat pembaruan dari paket tertentu dengan asumsi itu diinstal / diperbarui melalui apt, inilah oneliner (bash dan zgrep), contohnya adalah untuk paket skypeforlinux:
package='skypeforlinux'; pregex="(${package}[^\)]+\))"; while read -r line; do [[ "$line" =~ ^Start-Date:[[:space:]]([[:digit:]].+) ]] && curdate="${BASH_REMATCH[1]} "; [[ "$line" =~ $pregex ]] && echo "$curdate ${BASH_REMATCH[1]}"; done < <(for i in `ls -tr /var/log/apt/history*`; do zgrep -B3 "$package" $i; done)
File riwayat log greps apt ini untuk skypeforlinux termasuk tiga baris sebelumnya untuk mendapatkan tanggal. Kemudian ulangi hasilnya dan gema tanggal dan versi yang relevan.
Ganti nilai variabel paket dengan nama paket Anda, bahkan berfungsi untuk beberapa paket asalkan dimulai dengan string yang sama.
Contoh dengan output:
package='apache'; pregex="(${package}[^\)]+\))"; while read -r line; do [[ "$line" =~ ^Start-Date:[[:space:]]([[:digit:]].+) ]] && curdate="${BASH_REMATCH[1]} "; [[ "$line" =~ $pregex ]] && echo "$curdate ${BASH_REMATCH[1]}"; done < <(for i in `ls -tr /var/log/apt/history*`; do zgrep -B3 "$package" $i; done)
2017-10-19 15:00:09 apache2-utils:amd64 (2.4.18-2ubuntu3.5)
2017-11-24 14:24:45 apache-pom-java:amd64 (10-2build1, automatic)
2018-02-22 16:42:02 apache2-data:amd64 (2.4.18-2ubuntu3.5, automatic)
2018-02-26 15:34:34 apache2:amd64 (2.4.18-2ubuntu3.5)
2018-02-26 15:36:32 apache2-data:amd64 (2.4.18-2ubuntu3.5)
2018-02-26 15:40:50 apache2-data:amd64 (2.4.18-2ubuntu3.5, automatic)
2018-02-26 15:42:07 apache2:amd64 (2.4.18-2ubuntu3.5)
2018-02-26 15:42:39 apache2:amd64 (2.4.18-2ubuntu3.5)
2018-03-15 10:08:50 apache-pom-java:amd64 (10-2build1)
2018-04-20 08:55:07 apache2-data:amd64 (2.4.18-2ubuntu3.5, 2.4.18-2ubuntu3.8)
2018-07-06 08:55:11 apache2-data:amd64 (2.4.18-2ubuntu3.8, 2.4.18-2ubuntu3.9)