Di mana saya dapat mencari riwayat pembaruan saya?

140

Apakah ada tempat di mana saya dapat melihat pembaruan apa yang telah saya instal?

vrcmr
sumber

Jawaban:

132

Anda dapat membaca history.logfile di /var/log/apt.

Misalnya. less /var/log/apt/history.log.

lgarzo
sumber
45

Di 10.10, Pusat Perangkat Lunak Ubuntu memiliki daftar semua pembaruan yang telah Anda unduh di masa lalu.

masukkan deskripsi gambar di sini

Yesaya
sumber
4
+1 Jawaban ini juga berfungsi pada versi yang lebih baru.
James Bradbury
4
@JamesBradbury Opsi ini hilang dari Ubuntu 16.04 pada
feeela
25

/ var / log / apt berisi riwayat instalasi paket. Namun, secara default, ini dikelola oleh logrotateyang memampatkan dan menua entri lama.

msw
sumber
Jadi apakah ini tempat terbaik bagi saya untuk memeriksa riwayat di Ubuntu Server?
Brettski
21

Pada 10,04 Klik (Sistem> Administrasi> Manajer Paket Synaptic> File> History)

vrcmr
sumber
11
Yang saya dapatkan hanyalah daftar paket yang saya instal melalui Synaptic, tidak menunjukkan semua paket yang saya perbarui melalui Update Manager.
Yesaya
19

Sebagai alternatif untuk jawaban lgarzo, Anda dapat mengambil dari grepmana Anda tertarik /var/log/dpkg.log. Misalnya, jika Anda ingin melihat semua yang Anda instal atau tingkatkan kemarin, Anda dapat menjalankan:

cat /var/log/dpkg.log | grep "^2012-03-25.*\ installed\ "

Satu hal yang perlu diperhatikan: ini juga akan mencantumkan paket yang diinstal secara manual ( sudo dpkg -i ...), yang tidak akan muncul dalam riwayat apt.

Bahkan lebih baik menggunakan zgrep jika sudah diinstal sehingga Anda dapat menemukan baris dalam file yang di-gzip juga

zgrep "^2012-03-25.*\ installed\ " /var/log/dpkg.log*
htorque
sumber
11

Sekarang dimungkinkan untuk melakukan ini melalui pusat perangkat lunak juga! Pergi ke Riwayat dan Anda dapat menampilkan semua pembaruan dan instalasi Anda.

Sejarah Pusat Perangkat Lunak

Nick Pascucci
sumber
Saya kira itu 10,10?
vrcmr
Tentu saja. Saya tidak berpikir ini tersedia di distribusi sebelumnya ...
Nick Pascucci
3

Menjadi bermanfaat bagi kita untuk memiliki jawaban yang sedikit lebih mudah dan akurat untuk pertanyaan "kapan terakhir kali kita menambal hal ini?". Jadi saya menyatukan ini. Saya mengujinya pada 12,04 dan 14,04 dan 16,04. Ini mengembalikan jawaban yang cukup akurat untuk pertanyaan itu. Catatan: "cukup akurat" mungkin tidak "sepenuhnya akurat". Catatan: "hanya untuk pertanyaan itu".

keluaran sampel:

xenial% 9: ./linuxpatchdate 
2016-07-19 54
2017-02-24 363
2017-03-08 7
2017-03-09 2

subrutin dan program:

#!/usr/bin/perl

#------------------ subroutines --------------------

sub parseRecord {
    my $sdate = "";
    my $useful = 0;
    my $packages = 0;
    my @ptmp;
    while (my $recordLine = shift() ) {

       if ($recordLine =~ m/^Start-Date: ([\d\-]*).*/) {
          $sdate = $1;
       }
       elsif ($recordLine =~ m/^Commandline:.*upgrade/) {
          $useful = 1;
       }
       elsif ($recordLine =~ m/^Install: (.*)/) {
          $recordLine =~ s/\([^\)]*\)//g;
          @ptmp = split(/,/,$recordLine);
          $packages = $packages + $#ptmp + 1;
       }
       elsif ($recordLine =~ m/^Upgrade: (.*)/) {
          $recordLine =~ s/\([^\)]*\)//g;
          @ptmp = split(/,/,$recordLine);
          $packages = $packages + $#ptmp + 1;
       }
    }



    if ($useful) {
       return ($sdate,$packages);
    }
    else {
       return ("0",0);
    }
}


#------------------ main program --------------------

@lines = split(/\n/,`/bin/zcat -f /var/log/apt/history.log  /var/log/apt/history*gz`);
my %patchHash;
my $line;
my @inputLines;
my $pushDate = "";
my $pushNum = "";

foreach $line (@lines) {
    # all records separated by blank lines
    if ($line !~ /./) {
       # no-op
    }
    elsif ($line =~ m/^Start-Date: ([\d\-]*).*/) {
       @inputLines = ();
       push (@inputLines, $line);
    }
    elsif ($line =~ m/^End-Date: ([\d\-]*).*/) {
       ($pushDate, $pushNum) = parseRecord(@inputLines);
       if ($pushNum != 0) {
          $patchHash{$pushDate} += $pushNum;
       }
    }
    else {
       push (@inputLines, $line);
    }
}

foreach $pushDate (sort(keys(%patchHash))) {
   print "$pushDate $patchHash{$pushDate}\n";
}
JsinJ
sumber