업데이트 기록은 어디에서 찾을 수 있습니까?


140

어떤 업데이트를 설치했는지 확인할 수있는 곳이 있습니까?

답변:


132

에서 history.log파일을 읽을 수 있습니다 /var/log/apt.

예 : less /var/log/apt/history.log.


45

10.10에서 Ubuntu Software Center 에는 이전에 다운로드 한 모든 업데이트 목록이 있습니다.

여기에 이미지 설명을 입력하십시오


4
+1이 답변은 최신 버전에서도 작동합니다.
제임스 브래드 베리

4
@JamesBradbury이 옵션은 Ubuntu 16.04에서
feeela

25

/ var / log / apt에는 패키지 설치 기록이 포함되어 있습니다. 그러나 기본적으로 logrotate오래된 항목을 압축하고 만료시키는 방식으로 관리됩니다 .


우분투 서버의 기록을 확인하기에 가장 좋은 장소입니까?
Brettski

21

10.04에서 (시스템> 관리> Synaptic Package Manager> 파일> 히스토리)를 클릭하십시오.


11
내가 얻는 것은 Synaptic을 통해 설치 한 패키지 목록이며 Update Manager를 통해 업데이트 한 모든 패키지를 표시하지는 않습니다.
이사야

19

lgarzo의 답변에 대한 대안으로 grep에서 관심있는 것을 할 수 있습니다 /var/log/dpkg.log. 예를 들어 어제 설치하거나 업그레이드 한 모든 것을 보려면 다음을 실행할 수 있습니다.

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

한가지주의해야 할 점 : 이것은 수동으로 설치된 패키지 ( sudo dpkg -i ...) 도 나열 하며, 해당 패키지 는 apt 기록에 표시되지 않습니다.

zgrep이 설치되어 있으면 더 잘 사용할 수 있으므로 gzip 파일에서도 줄을 찾을 수 있습니다.

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

11

이제 소프트웨어 센터를 통해서도이 작업을 수행 할 수 있습니다! 기록으로 이동하면 모든 업데이트 및 설치를 표시 할 수 있습니다.

소프트웨어 센터 기록


10.10이라고 가정합니다.
vrcmr

당연히. 나는 이것이 이전 배포판에서 사용 가능하다고 생각하지 않습니다 ...
Nick Pascucci

3

"마지막 패치는 언제였습니까?"라는 질문에 대해 조금 더 쉽고 정확한 답변을 얻는 것이 유용 해졌습니다. 그래서 나는 이것을 합쳤다. 12.04 및 14.04 및 16.04에서 테스트했습니다. 해당 질문에 대한 합리적으로 정확한 답변을 반환합니다. 참고 : "합리적으로 정확"은 "완전히 정확하지"않을 수 있습니다. 참고 : "그 질문에 대해서만".

샘플 출력 :

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

서브 루틴 및 프로그램 :

#!/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";
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.