Onde posso procurar meu histórico de atualizações?


140

Existe um lugar onde eu possa ver quais atualizações eu instalei?

Respostas:


132

Você pode ler o history.logarquivo em /var/log/apt.

Por exemplo. less /var/log/apt/history.log.


45

Na 10.10, o Ubuntu Software Center tem uma lista de todas as atualizações que você baixou no passado.

insira a descrição da imagem aqui


4
+1 Esta resposta também funciona em versões mais recentes.
James Bradbury

4
@JamesBradbury Esta opção foi do Ubuntu 16.04 em
feeela

25

/ var / log / apt contém um histórico de instalações de pacotes. No entanto, por padrão, ele é gerenciado pelo logrotatequal comprime e envelhece as entradas antigas.


Então, este é o melhor lugar para verificar o histórico no Ubuntu Server?
Brettski

21

No 10.04, clique em (Sistema> Administração> Synaptic Package Manager> Arquivo> Histórico)


11
Tudo o que recebo é uma lista de pacotes que instalei via Synaptic, que não mostra todos os pacotes que atualizei através do Update Manager.
Isaiah

19

Como alternativa à resposta da lgarzo, você pode encontrar o grepque lhe interessa /var/log/dpkg.log. Por exemplo, se você quiser ver tudo o que instalou ou atualizou ontem, você pode executar:

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

Uma coisa a notar: isso também listará pacotes instalados manualmente ( sudo dpkg -i ...), que não aparecerão no histórico do apt.

Melhor ainda, use o zgrep se estiver instalado, para que você possa encontrar linhas nos arquivos compactados em gzip também

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

11

Agora é possível fazer isso também através do centro de software! Vá para Histórico e você pode exibir todas as suas atualizações e instalações.

Histórico do Software Center


Suponho que seja 10,10?
vrcmr

Claro que é. Eu não acho que esta estava disponível em distribuições anteriores ...
Nick Pascucci

3

Tornou-se útil termos uma resposta um pouco mais fácil e precisa para a pergunta "quando foi a última vez que corrigimos esse problema?". Então eu juntei isso. Eu testei em 12.04 e 14.04 e 16.04. Ele retorna respostas razoavelmente precisas para essa pergunta. Nota: "razoavelmente preciso" provavelmente não é "completamente preciso". Nota: apenas "para essa pergunta".

saída de amostra:

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

sub-rotinas e programa:

#!/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";
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.