답변:
불행하게도, dpkg (패키지 처리기 적성이 작동하는)는 패키지를 추가 할 생각은 있지만 패키지 설치 날짜를 구체적으로 저장하지는 않습니다. 그러나 설치 날짜는 디렉토리에 기록 된 파일의 날짜 스탬프를 확인하여 찾을 수 있습니다 /var/lib/dpkg/info
.
로그에 쓰도록 적성을 구성했습니다 ( /var/log/aptitude
). 다음과 같은 출력을 생성합니다.
Aptitude 0.4.11.11: log report
Mon, Feb 9 2009 13:21:28 +0100
IMPORTANT: this log only lists intended actions; actions which fail due to
dpkg problems may not be completed.
Will install 6 packages, and remove 0 packages.
4096B of disk space will be used
===============================================================================
[UPGRADE] apt 0.7.20.1 -> 0.7.20.2
[UPGRADE] apt-utils 0.7.20.1 -> 0.7.20.2
[UPGRADE] base-passwd 3.5.19 -> 3.5.20
[UPGRADE] libgnutls26 2.4.2-5 -> 2.4.2-6
[UPGRADE] libpq5 8.3.5-1 -> 8.3.6-1
[UPGRADE] ucf 3.0015 -> 3.0016
===============================================================================
Log complete.
이것은 적성이 설치된 정확한 날짜와 패키지를 보여줍니다. 이를 구성하려면 적성 기준을 따르십시오.
Option:Aptitude::Log
Default:/var/log/aptitude
Description: If this is set to a nonempty string, aptitude will log the package
installations, removals, and upgrades that it performs. If the value of
Aptitude::Log begins with a pipe character (ie, ``|''), the remainder of its
value is used as the name of a command into which the log will be piped: for
instance, |mail -s 'Aptitude install run' root will cause the log to be emailed
to root. To log to multiple files or commands, you may set this option to a list
of log targets.
적성 매뉴얼 페이지에서 적성 기준에 대한 링크를 찾을 수 있습니다.
모든 패키지 설치 날짜를 확인 하는 간단한 방법이 있습니다. 그냥 실행하십시오 :
grep " install" /var/log/dpkg.log*
결과적으로 정확한 날짜와 시간을 가진 설치된 모든 패키지 목록이 표시됩니다.
해당 솔루션으로 안내하는 의견에 감사드립니다.
cd
당신의 전체 경로를 사용하는 경우 명령은 필요하지 않습니다 cat
명령을 ...
cd
명령 의 목적은 ls
사용 가능한 dpkg.log 파일을 확인하기 위해이 디렉토리 내부에있었습니다. 그러나 ls /var/log | grep 'dpkg.log'
로그 파일을 나열하기 위해 더 나은 솔루션이 실행 됩니다. 엉망으로 죄송합니다.
cat | cat
할 수있는 일인 줄 몰랐어 그러나 하나의 명령으로 두 파일을 모두 정리하지 않는 이유는 무엇입니까? (또는 더 나은 :. 단지 @MarcVanDaele의 말씀 할)
나는 이것을 웹에서 발견했다. dpkg 로그 파일에서 dpkg의 히스토리를 작성합니다.
매우 간단 해 보입니다.
function apt-history(){
case "$1" in
install)
cat /var/log/dpkg.log | grep 'install '
;;
upgrade|remove)
cat /var/log/dpkg.log | grep $1
;;
rollback)
cat /var/log/dpkg.log | grep upgrade | \
grep "$2" -A10000000 | \
grep "$3" -B10000000 | \
awk '{print $4"="$5}'
;;
*)
cat /var/log/dpkg.log
;;
esac
}
편집하다
우분투 8.10 서버 에서이 스크립트를 사용해 보았고 잘 작동합니다. 문제 해결 방법에 대한 정보를 제공해 주시겠습니까?
dpkg 로그 사용
locate dpkg.log | xargs cat {} | grep " install "
또는 당신이없는 경우 locate
find /var/log/ -name 'dpkg.log' | xargs cat {} | grep " install "
sort
적절한 시간 기반 주문을 보장하기 위해 사용
locate dpkg.log | xargs cat {} | grep " install " | sort
사용 tac
(역 cat
*), 헤드 등 최신 4 개 항목을 얻을 수 있습니다
locate dpkg.log | xargs cat {} | grep " install " | sort | tac | head -n4
예를 들어 마지막 명령의 경우 다음을 얻습니다.
2014-10-08 18:56:12 install xorg-server-source:all <none> 2:1.16.1-1
2014-10-08 18:49:34 install libelementary-data:all <none> 0.7.0.55225-1
2014-10-08 18:46:57 install e17:i386 <none> 0.17.6-1
2014-10-08 18:46:56 install libedje-bin:i386 <none> 1.8.6-2.1+b1
tac
+ 를 사용 하시겠습니까? head
tail
/var/log/apt/term.log 및 이전 파일 인 term.log.1.gz 등을 확인하여 이전 작업을 추적 할 수도 있습니다. 설치 중에 메시지에 타임 스탬프 및 완전한 로그가 있습니다.
실제로이를 pkginstall.sh
수행 할 수 있는 '공식' 스크립트가 있습니다. 공식 문서 의 지침을 따르십시오 . 간단히, 위 링크에서 스크립트를 다운로드하여 실행 가능한지 확인한 후 다음을 실행하십시오.
~/pkginstalls.sh
이렇게하면 pkginstalls.txt
설치된 모든 패키지가 날짜별로 정렬 된 파일 이 홈 디렉토리에 생성 됩니다.
BTW, 이것은 스크립트의 내용입니다 :
#!/bin/bash
#pkginstalls.sh
#creates text file with a list of all packages installed by date
#first append all info from archived logs
i=2
mycount=$(ls -l /var/log/dpkg.log.*.gz | wc -l)
nlogs=$(( $mycount + 1 ))
while [ $i -le $nlogs ]
do
if [ -e /var/log/dpkg.log.$i.gz ]; then
zcat /var/log/dpkg.log.$i.gz | grep "\ install\ " >> $HOME/pkgtmp.txt
fi
i=$(( $i+1 ))
done
#next append all info from unarchived logs
i=1
nulogs=$(ls -l /var/log/dpkg.log.* | wc -l)
nulogs=$(( $nulogs - $nlogs + 1 ))
while [ $i -le $nulogs ]
do
if [ -e /var/log/dpkg.log.$i ]; then
cat /var/log/dpkg.log.$i | grep "\ install\ " >> $HOME/pkgtmp.txt
fi
i=$(( $i+1 ))
done
#next append current log
cat /var/log/dpkg.log | grep "\ install\ " >> $HOME/pkgtmp.txt
#sort text file by date
sort -n $HOME/pkgtmp.txt > $HOME/pkginstalls.txt
rm $HOME/pkgtmp.txt
exit 0
*.list
다른 파일에는 패키지 날짜가 표시 되므로 파일 의 타임 스탬프 만 확인하십시오 .