이는 다음과 유사합니다.APT 패키지로 설치된 모든 파일을 나열하는 방법은 무엇입니까?하지만 어떤 파일이 있는지 알고 싶습니다.~ 할 것이다아직 패키지가 설치되지 않았기 때문에 설치가 필요합니다.
예:APT 패키지가 설치할 모든 파일을 나열하고 싶습니다 xorg
. 즉, 내가 입력하는 동안 생성될 수 있는 모든 파일입니다 apt install xorg
. 그러나 해당 종속성의 직접 파일이 아닌 - 만 나열됩니다 apt-file
.xorg
$ apt-file list xorg
xorg: /usr/share/bug/xorg/script
xorg: /usr/share/doc/xorg/changelog.gz
xorg: /usr/share/doc/xorg/copyright
xorg: /usr/share/lintian/overrides/xorg
어떻게 목록을 올릴 수 있어?모두관련된 문서?
(답변으로 형편없는 파이프 조합을 추가하겠습니다 bash
. 그게 제가 지금 사용하고 있는 것이지만 호출이 많은 루프일 뿐이 apt-file
므로 매우 느립니다. 더 나은 답변을 찾고 있습니다.)
답변1
apt-file list
다음을 사용하여 한 번에 처리할 패키지 목록을 제공 할 수 있습니다.
apt-file -f-
(표준 입력에서 읽음). 내 측정 결과
apt-get -s install xorg | awk '/^Inst / { print $2 }' | apt-file -f- list
루프를 사용하는 동일한 프로세스 보다 두 배 이상 빠릅니다 apt-file
( 사용 ) xargs
.
sort -k2,2
관련된 패키지를 보는 것이 즐거웠기 때문에 후처리했습니다 .
apt-get -s install
후처리 대신 사용하면 apt-cache depends xorg
시스템에 설치된 모든 패키지가 고려되고 재귀 종속성을 포함한 해당 패키지만 고려됩니다. 직접적인 종속성 apt-cache depends xorg
만 xorg
표시되며 후처리에서는 대안을 처리하지 않습니다.
답변2
이것이 제가 지금 사용하고 있는 것이지만 문제가 있을 수 있으며 확실히 성능이 그다지 좋지 않습니다.
apt-cache depends xorg | grep '..\(Depends\|Recommends\): [^<]' | sed 's/[^:]*: //' | while read LINE; do [[ -z "$LINE" ]] || apt-file list "$LINE"; done | sed 's/[^:]*: //' | sort
단계별:
설치될 패키지 목록을 가져옵니다.
apt-cache depends xorg
"다음에 따라 다름" 및 "권장" 항목을 선택합니다.
grep '..\(Depends\|Recommends\): [^<]'
패키지 이름을 제외한 모든 항목을 제거합니다.
sed 's/[^:]*: //'
줄이 비어 있지 않으면 apt-file
각 패키지 이름으로 실행합니다.
while read LINE; do [[ -z "$LINE" ]] || apt-file list "$LINE"; done
apt-file list
파일의 해당 패키지 이름으로 시작하는 각 줄을 반환합니다. 파일 이름만 남기고 해당 줄에서 패키지 이름을 제거합니다.
sed 's/[^:]*: //'
행 정렬:
sort