가장 최근에 설치된 패키지 목록을 얻을 수 있습니까?


157

apt-get을 통해 가장 최근에 설치된 패키지 목록을 얻을 수 있습니까?



1
이제 누군가 만 아직 제거하지 않은 수동으로 설치된 패키지 를 나열하는 방법을 알려줄 것 입니다. 한숨, 리눅스.
Aleksandr Dubinsky

1
@AleksandrDubinsky apt-mark showmanual | less하지 않는가?
GKFX

@ GKFX 나는 최근에 설치된 패키지의 맥락에서 의미했습니다.
Aleksandr Dubinsky

@AleksandrDubinsky 당신은 사용해야 할 것 comm -12 a b으로 a의 분류 사본 apt-mark showmanualb아래 답변 중 하나에서 정렬 된 목록.
GKFX

답변:


180

모든 방법 ( apt-get, Software Center 등)을 통해 설치된 최근에 설치된 패키지를 나열하는 명령 :

grep " install " /var/log/dpkg.log

출력 예 :

2010-12-08 15:48:14 install python-testtools <none> 0.9.2-1
2010-12-08 15:48:16 install quickly-widgets <none> 10.09
2010-12-08 22:21:31 install libobasis3.3-sdk <none> 3.3.0-17
2010-12-09 12:00:24 install mc <none> 3:4.7.0.6-1
2010-12-09 23:32:06 install oggconvert <none> 0.3.3-1ubuntu1
2010-12-09 23:34:50 install mpg123 <none> 1.12.1-3ubuntu1
2010-12-09 23:34:52 install dir2ogg <none> 0.11.8-1
2010-12-09 23:34:53 install faad <none> 2.7-4
2010-12-09 23:34:54 install wavpack <none> 4.60.1-1
2010-12-10 11:53:00 install playonlinux <none> 3.8.6

이 명령을 실행하여 최근에 설치된 패키지 이름 만 나열 할 수 있습니다.

awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log

이력을 나열하는 명령 apt-get(참고 : 설치된 종속성이 표시되지 않고 apt-get실행 된 이전 명령 만 나열 됨 ) :

grep " install " /var/log/apt/history.log

출력 예 :

Commandline: apt-get install libindicate-doc
Commandline: apt-get install googlecl
Commandline: apt-get --reinstall install ttf-mscorefonts-installer
Commandline: apt-get install valac libvala-0.10-dev
Commandline: apt-get install libgtksourceview-dev
Commandline: apt-get install python-sphinx
Commandline: apt-get install python-epydoc
Commandline: apt-get install quickly-widgets
Commandline: apt-get install libreoffice3* libobasis3.3*
Commandline: apt-get install mc

시냅스의 문제점은 aptitude, apt-get 및 dpkg로 수행 한 작업을 표시하지 않는다는 것입니다. 이런 이유로이 옵션에 대해 +1
hhlp

이 명령은 업데이트를 표시하지 않습니다. 모든 것을 보려면 소프트웨어 센터를 사용하십시오.
HDave

1
다음과 같은 텍스트 파일을 저장하는 것이 좋습니다.cat /var/log/apt/history.log | grep "\ install\ " > install.log
CrandellWS

4
grep " install " /var/log/dpkg.log충분할 것입니다. 사용할 필요가 없습니다 cat. 참조 .
augurar

1
이것은 새로 설치된 패키지 만 찾는 것 같습니다. 새 버전이 설치되어있는 패키지로 나타납니다 upgrade에서dpkg.log
앙드레 HOLZNER

14

Ubuntu의 소프트웨어 센터에는 설치 / 업그레이드 / 제거 된 모든 패키지의 전체 기록이 표시됩니다. 왼쪽 목록 하단의 "기록"을 클릭하십시오.


4
이 히스토리 버튼은 이제 GUI 상단에 있으며 설치된 패키지 및 업데이트를 표시 할 수 있습니다. 업데이트에 적용되는 유일한 답변이므로 질문에 대한 답변으로 허용됩니다.
HDave

이 질문은 데스크탑 (GUI) 환경을 지정하지 않지만 GUI 및 비 GUI 시나리오 모두에서 허용되는 답변이 유효합니다.
msanford

@HDave 사실이 아님, dpkg.log업데이트를 기록합니다.
GKFX

10

설치 시간을 기준으로 정렬 된 이전 패키지도 보려면 :

grep " install " /var/log/dpkg.log.1 /var/log/dpkg.log

그리고 아주 오래 전에 설치된 패키지의 경우 :

gunzip -c `ls -tr /var/log/dpkg.log.*.gz` | grep " install "

2 일 전에에 설치 /var/log/dpkg.log되었지만 패키지는 아닌 패키지를 찾았 습니다 /var/log/apt/history.log. 아직도 이유를 모릅니다 ...
Samuel Li

5

다음 트릭은 Aleksandr Dubinsky의 요청에 따라 수동으로 설치된 패키지로 제한합니다.

comm -12 <(apt-mark showmanual | sort) <(grep " install " /var/log/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)
  • comm -12 두 개의 정렬 된 파일에 공통 인 행을 나열합니다.
  • <(command)의 출력을 포함하는 파일 이름으로 확장합니다 command.
  • apt-mark showmanual수동으로 설치된 패키지를 나열합니다. 즉. 절대 자동 제거되지 않아야합니다.
  • grep " install " /var/log/dpkg.log 허용 된 답변에서 가져옵니다.

시간순으로 추가 정보를 표시하고 사용 가능한 모든 로그에 액세스하는 대안은 다음과 같습니다.

zcat -f /var/log/dpkg.log* | grep " install " | sort > /tmp/dpkg.log
grep -F "`comm -12 <(apt-mark showmanual | sort) <(cat /tmp/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)`" /tmp/dpkg.log | grep \<none\>

grep \<none\>결과를 새로운 설치로 제한합니다. 예를 들어, grep을 사용 grep 2016-0[567]하여 첫 번째 파이프 라인 에 추가하여 검색을 3 개월로 제한 할 수 있습니다 . 매우 유연합니다.


점점 가까워지고 있습니다. 개선 할 수있는 것 : 1) 패키지를 시간순으로 표시, 2) 설치 날짜 / 시간, 버전, 크기 등 세부 정보 표시 3) OS가 설치된 이후에 설치된 모든 패키지 표시
Aleksandr Dubinsky

놀랄 만한! 각 명령에 대한 자세한 설명으로 더 간결하게 답변을 정리해도 될까요?
Aleksandr Dubinsky

@AleksandrDubinsky 편집 해 주셔서 감사합니다. 변경 내용과 일치하도록 설명을 수정했습니다.
GKFX

유용하지 않은 첫 번째 명령 인 "알렉산드르 뒤빈 스키의 요청에 따른 트릭 답변"노이즈를 제거하고 좋은 제목을 붙이고 주 명령을 맨 위에 놓고 샘플 출력을 추가하고 모든 명령을 설명하려고 하시겠습니까? 뒤얽힌?
Aleksandr Dubinsky

1
grep -F부분적으로 일치하는 항목을 찾기 때문에 마지막 명령에 버그가 있습니다 . 예를 들어, python3설치되어 있으면 python3-click-package더 이상 설치되지 않은 라이브러리를 포함하여 모든 python3 라이브러리 ( ) 와도 일치합니다 . 또한 단어 경계 grep -Fw이기 때문에 도움이되지 않습니다 -.
Aleksandr Dubinsky

5

한 줄에 모두; 명령 사용

한 줄에 최근에 설치된 패키지 이름 만 선택하여 인쇄하십시오 .

그렇게하려면 가장 투표가 많은 답변을 다음으로 변경하십시오.

cat /var/log/dpkg.log |awk '/ install / {printf "%s ",$4}'

결과적으로 한 줄의 패키지 이름이 생성됩니다. 이러한 줄은 sudo apt-get purge명령에 쉽게 추가 할 수 있습니다 .

출력 예

libgnome-media-profiles-3.0-0 gstreamer0.10-gconf gnome-media gnome-menus librest-0.7-0 libgoa-1.0-common libgoa-1.0-0 libwacom-common libwacom2 ubuntu-docs apg libgnome-control-center1 libgnomekbd-common libgnomekbd7 gnome-control-center-data gnome-icon-theme-symbolic gnome-settings-daemon ubuntu-system-service gnome-control-center gnome-online-accounts gnome-session-bin indicator-power mousetweaks

패키지를 다른 패키지 아래에 나열

대중적인 수요에 따라 다음은 패키지를 서로 아래에 나열하기 위해 약간 수정 된 버전입니다.

cat /var/log/dpkg.log |awk '/ install / {printf "%s\n",$4}'

cat명령 의 출력을 구문 분석하지 마십시오 . 이건 awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log어때?
Avinash Raj

@AvinashRaj awk명령은 패키지를 서로 아래에 인쇄합니다 . 다음에 서로를 내 그렇기 때문에 때때로 출력 예제가 유용 할 수 있습니다.
Sroo Stroobandt

2

wajig 라는 패키지가 있습니다 . 명령 행을 확인하십시오. 지금 설치하는 것이 첫 번째입니다. 명령 디스패처가 작동하는 것처럼 작동한다는 점을 제외하고는 적성과 같습니다. 정말 적성과 같지 않습니다. 아래 명령은 작은 하위 집합입니다.

wajig help
Common JIG commands:

 update         Update the list of downloadable packages

 new            List packages that became available since last update
 newupgrades    List packages newly available for upgrading

 install        Install (or upgrade) one or more packages or .deb files
 remove         Remove one or more packages (see also purge)

 toupgrade      List packages with newer versions available for upgrading
 upgrade        Upgrade all of the installed packages or just those listed

 listfiles      List the files that are supplied by the named package
 listnames      List all known packages or those containing supplied string
 whatis         For each package named obtain a one line description
 whichpkg       Find the package that supplies the given command or file

Run 'wajig -v commands' for a complete list of commands.

5
wajig최신 패키지를 나열 하는 데 어떻게 도움이 되는지 잘 모르겠습니다 . 커서를 통해 명령을 살펴본 후에는 해당 명령이 표시되지 않습니다. 명령이 무엇인지 아십니까?
Ehtesh Choudhury

1

DoR의 대답 외에도 GUI를 선호하는 사람들을 위해 Synaptic에 File-> History 메뉴 항목이 있습니다.


2
로 그리고 rafalcieslak는 지적이 기능뿐만 아니라 소프트웨어 센터에서 사용할 수 있습니다.
belacqua

3
시냅틱 히스토리는 시냅틱을 통해 설치 한 것만 보여줍니다.
HDave

1

다음은 dpkg 설치 파일을 나열하는 셸입니다. (모든 apt / attitude / software center / synaptic installed 패키지를 포함해야합니다)

grep -A 1 "Package: " /var/lib/dpkg/status | \
grep -B 1 -Ee "ok installed|half-installed|unpacked|half-configured|config-files" -Ee "^Essential:yes" | \
grep "Package:" | cut -d\  -f2

설치 시간 / 날짜 정보는 포함되지 않습니다. 그러나 os install에서 current로 설치된 패키지의 차이점을 판별하는 데 유용 할 수 있습니다.


-1

Software Center 또는 Synaptic에서 설치 히스토리를 보는 데있어 문제점은 컨텐츠를 전자 우편으로 복사 / 붙여 넣기가 어렵다는 것입니다 (예 : 기술 지원과 대화 할 때). 대안은 로그 파일의 내용을 /var/log/apt루트로 보는 것입니다.


2
명확히하기 위해의 내용을보기 위해 /var/log/apt루트이거나 관리자 권한이 없어도됩니다.
Samuel Li
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.